Как развернуть основные функции dotnet с помощью Serverless Framework? - PullRequest
0 голосов
/ 09 апреля 2019

Мне сложно правильно упаковать и развернуть функции dotnet (используя среду выполнения dotnet core 2.1) с использованием Serverless для AWS Lambda. Я не нахожу никаких примеров, кроме тех, которые используют команды SAM и dotnet для развертывания lambda-serverless.

Пример: Как вы упаковываете проект Visual Studio AWS без сервера?

Используя командную строку и Serverless, что нужно сделать для правильного развертывания функции ядра dotnet в AWS Lambda? Возможно ли это даже с помощью Serverless Framework?

1 Ответ

0 голосов
/ 10 апреля 2019

Я наконец-то смог преодолеть свои проблемы.

  1. cd в папку .csproj
  2. dotnet restore
  3. dotnet lambda package с помощью лямбда-инструментов dotnet dotnet tool install -g Amazon.Lambda.Tools
  4. Предполагая, что остальная часть вашего serverless.ymal настроена правильно, убедитесь, что ваш serverless.yml имеет свойство пакета с артефактом, который указывает на файл .zip, сгенерированный лямбда-пакетом dotnet, например:
package:
  artifact: ./<projectFolderName>/src/<projectName>/bin/Release/netcoreapp2.1/<zipFileName>.zip
Вам нужен класс Lambda Entry Point (например, LambdaEntryPoint.cs), который использует класс запуска:

Пример LambdaEntryPoint.cs

using Microsoft.AspNetCore.Hosting;

namespace MyNameSpace
{
    public class LambdaEntryPoint : Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction
    {
        protected override void Init(IWebHostBuilder builder)
        {
            builder.UseStartup<Startup>();
        }

        ...
}

Пример Startup.cs

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

public class Startup
{
    private readonly IConfiguration _configuration;

    public Startup(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    // This method gets called by the runtime. Use this method to add services to the container
    public void ConfigureServices(IServiceCollection services)
    {

    }

    /// <summary>
    /// This method gets called by the runtime. Use this method to configure the HTTP request pipeline
    /// </summary>
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {

    }
}

Примечание: часть этого может быть сгенерирована из шаблонов.

регулярно делайте sls deploy

Помимо того, что легко доступно в Интернете, эти шаги подчеркивают некоторые препятствия, которые мне пришлось преодолеть, чтобы заставить мою работать.

...