如何使用无服务器框架部署dotnet核心功能?

时间:2019-04-09 20:23:13

标签: amazon-web-services .net-core aws-lambda serverless-framework serverless

我发现利用Serverless将打包和部署dotnet函数(使用dotnet core 2.1运行时)正确打包和部署到AWS Lambda是一个挑战。除了使用SAM和dotnet部署lambda-serverless命令的示例外,我没有找到其他示例。

示例:How do you package up a visual studio aws serverless project?

使用命令行和Serverless,需要做些什么才能将dotnet核心功能正确部署到AWS Lambda?使用无服务器框架甚至有可能吗?

1 个答案:

答案 0 :(得分:0)

我终于能够克服我的问题。

  1. cd进入.csproj文件夹
  2. dotnet restore
  3. dotnet lambda package使用dotnet lambda工具dotnet tool install -g Amazon.Lambda.Tools
  4. 假设正确设置了serverless.ymal的其余部分,请确保serverless.yml具有package属性,该属性带有指向dotnet lambda软件包生成的.zip文件的工件,例如:
package:
  artifact: ./<projectFolderName>/src/<projectName>/bin/Release/netcoreapp2.1/<zipFileName>.zip
  1. 您需要使用Startup类的Lambda入口点类(例如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)
    {

    }
}

注意:其中一些可以从模板生成。

  1. 定期进行sls deploy

除了Internet上现有的功能外,这些步骤还突出了我为使我的工作而必须克服的一些障碍。