Я наконец-то смог преодолеть свои проблемы.
- cd в папку .csproj
dotnet restore
dotnet lambda package
с помощью лямбда-инструментов dotnet dotnet tool install -g Amazon.Lambda.Tools
- Предполагая, что остальная часть вашего 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
Помимо того, что легко доступно в Интернете, эти шаги подчеркивают некоторые препятствия, которые мне пришлось преодолеть, чтобы заставить мою работать.