首页 > 解决方案 > 将自定义 AWS Lambda 运行时与 asp.net 核心一起使用

问题描述

最近亚马逊宣布支持自定义 .net 核心运行时:https ://aws.amazon.com/blogs/developer/announcing-amazon-lambda-runtimesupport/

我当前的 aws lambda 项目是使用 .NET Core 2.1 编写的 C#;2.2 尚不支持,因此我想使用自定义运行时。

但是,似乎为了使用自定义运行时,有必要使用LambdaBootstrap. 从文档中我不清楚是否可以将它与 asp.net 核心一起使用: https://github.com/aws/aws-lambda-dotnet/tree/master/Libraries/src/Amazon.Lambda。运行时支持

ps 目前我的 aws lambda 正在使用 asp.net 核心进行身份验证和其他

标签: c#amazon-web-servicesasp.net-core.net-coreaws-lambda

解决方案


这是一个很好的演示/教程,展示了作者如何使用 lambda 引导程序:

https://medium.com/@dimoss/asp-net-core-2-2-3-0-serverless-web-apis-in-aws-lambda-with-a-custom-runtime-and-lambda-warmer -ce19ce2e2c74

作者使用以下代码在本地调试和 lambda 入口之间切换:

public class LocalEntryPoint
{
    private static readonly LambdaEntryPoint LambdaEntryPoint = new LambdaEntryPoint();
    private static readonly Func<APIGatewayProxyRequest, ILambdaContext, Task<APIGatewayProxyResponse>> Func = LambdaEntryPoint.FunctionHandlerAsync;

    public static async Task Main(string[] args)
    {
#if DEBUG
        BuildWebHost(args).Run();
#else
        // Wrap the FunctionHandler method in a form that LambdaBootstrap can work with.
        using (var handlerWrapper = HandlerWrapper.GetHandlerWrapper(Func, new JsonSerializer()))

        // Instantiate a LambdaBootstrap and run it.
        // It will wait for invocations from AWS Lambda and call the handler function for each one.
        using (var bootstrap = new LambdaBootstrap(handlerWrapper))
        {
            await bootstrap.RunAsync();
        }
#endif
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build();
}

推荐阅读