Amazon.Lambda.RuntimeSupport 1.10.0

前缀已预定
dotnet add package Amazon.Lambda.RuntimeSupport --version 1.10.0                
NuGet\Install-Package Amazon.Lambda.RuntimeSupport -Version 1.10.0                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="Amazon.Lambda.RuntimeSupport" Version="1.10.0" />                
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件以引用该包。
paket add Amazon.Lambda.RuntimeSupport --version 1.10.0                
#r "nuget: Amazon.Lambda.RuntimeSupport, 1.10.0"                
#r 指令可以用在 F# Interactive 和 Polyglot Notebooks 中。将其复制到交互工具或脚本的源代码中以引用该包。
// Install Amazon.Lambda.RuntimeSupport as a Cake Addin
#addin nuget:?package=Amazon.Lambda.RuntimeSupport&version=1.10.0

// Install Amazon.Lambda.RuntimeSupport as a Cake Tool
#tool nuget:?package=Amazon.Lambda.RuntimeSupport&version=1.10.0                

Amazon.Lambda.RuntimeSupport

Amazon.Lambda.RuntimeSupport 包是用于 Lambda Runtime API 的 .NET Lambda 运行时接口客户端 (RIC)。Lambda 运行时接口客户端允许您的运行时接收来自 Lambda 服务的请求并向 Lambda 服务发送请求。它可以用于构建作为自定义运行时或容器镜像的 .NET Lambda 函数。从.NET 6 开始,它也是管理运行时中使用的 Lambda 客户端。

容器镜像支持

AWS 提供包含所有必需组件的基础镜像,这些组件打包为容器镜像并在 AWS Lambda 上运行您的函数。从 AWS Lambda .NET 5 基础镜像开始,Amazon.Lambda.RuntimeSupport 用作 Lambda 运行时客户端。该库针对 .NET Standard 2.0,也可以用于支持 .NET Standard 的更早版本的 .NET Core,如 3.1。

在AWS Lambda .NET基本镜像中,该库已预安装在/var/runtime目录中。使用基本镜像的.NET Lambda函数不直接与此包交互。相反,它们传递一个图像命令或一个Dockerfile CMD,其中指定要运行的.NET代码。该参数的格式为<assembly-name>::<full-type-name>::<function-name>

对于未预安装Amazon.Lambda.RuntimeSupport的自定义基本容器镜像,可以将该库作为类库包含在.NET Lambda函数代码中。要了解如何使用Amazon.Lambda.RuntimeSupport作为类库来构建.NET Lambda函数,请参考本README中的强<强>Using Amazon.Lambda.RuntimeSupport as a class library部分。

下面的Dockerfile展示了如何使用自定义基本镜像构建Lambda函数。在此示例中,基本镜像是Microsoft的.NET 6运行时镜像。此Dockerfile将.NET Lambda函数复制到/var/task目录,然后使用dotnet CLI执行.NET Lambda项目,这将初始化Amazon.Lambda.RuntimeSupport库并开始响应Lambda事件。

FROM mcr.microsoft.com/dotnet/runtime:6.0

WORKDIR /var/task

COPY "bin/Release/net6.0/linux-x64/publish"  .

ENTRYPOINT ["/usr/bin/dotnet", "exec", "/var/task/LambdaContainerCustomBase.dll"]

使用Amazon.Lambda.RuntimeSupport as a class library

Amazon.Lambda.RuntimeSupport可作为类库用于与Lambda运行时API交互。这是通过添加NuGet依赖项Amazon.Lambda.RuntimeSupport和在Lambda .NET项目中添加一个Main函数来初始化Amazon.Lambda.RuntimeSupport库来完成的。下面的例子展示了ToUpperAsync方法的签名。这默认为函数处理程序,当使用Amazon.Lambda.RuntimeSupport.LambdaBootstrap类时。

private static MemoryStream ResponseStream = new MemoryStream();
private static JsonSerializer JsonSerializer = new JsonSerializer();

private static async Task Main(string[] args)
{
    using(var bootstrap = new LambdaBootstrap(ToUpperAsync))
    {
        await bootstrap.RunAsync();
    }
}

private static Task<InvocationResponse> ToUpperAsync(InvocationRequest invocation)
{
    var input = JsonSerializer.Deserialize<string>(invocation.InputStream);

    ResponseStream.SetLength(0);
    JsonSerializer.Serialize(input.ToUpper(), ResponseStream);
    ResponseStream.Position = 0;

    return Task.FromResult(new InvocationResponse(responseStream, false));
}

Amazon.Lambda.RuntimeSupport.HandlerWrapper类允许您使用LambdaBootstrap与现有处理程序。Amazon.Lambda.RuntimeSupport.HandlerWrapper类还为您处理反序列化和序列化。

private static async Task Main(string[] args)
{
    using(var handlerWrapper = HandlerWrapper.GetHandlerWrapper((Func<string, ILambdaContext, string>)ToUpper, new JsonSerializer()))
    using(var bootstrap = new LambdaBootstrap(handlerWrapper))
    {
        await bootstrap.RunAsync();
    }
}

// existing handler doesn't conform to the new Amazon.Lambda.RuntimeSupport default signature
public static string ToUpper(string input, ILambdaContext context)
{
    return input?.ToUpper();
}

Amazon.Lambda.RuntimeSupport.RuntimeApiClient类负责与AWS Lambda运行时接口交互。此类旨在用于高级用例。在大多数情况下,您不会直接使用它。

以下是从Amazon.Lambda.RuntimeSupport.LambdaBootstrap类中的一个摘录,展示了如何使用Amazon.Lambda.RuntimeSupport.RuntimeApiClient。要了解更多信息,请阅读Amazon.Lambda.RuntimeSupport.LambdaBootstrap的完整源代码。

internal async Task InvokeOnceAsync()
{
    using (var invocation = await Client.GetNextInvocationAsync())
    {
        InvocationResponse response = null;
        bool invokeSucceeded = false;

        try
        {
            response = await _handler(invocation);
            invokeSucceeded = true;
        }
        catch (Exception exception)
        {
            await Client.ReportInvocationErrorAsync(invocation.LambdaContext.AwsRequestId, exception);
        }

        if (invokeSucceeded)
        {
            try
            {
                await Client.SendResponseAsync(invocation.LambdaContext.AwsRequestId, response?.OutputStream);
            }
            finally
            {
                if (response != null && response.DisposeOutputStream)
                {
                    response.OutputStream?.Dispose();
                }
            }
        }
    }
}
产品 兼容的和附加的computed目标框架版本。
.NET net5.0兼容。 net5.0-windows已完成计算。 net6.0兼容。 net6.0-android已完成计算。 net6.0-ios已完成计算。 net6.0-maccatalyst已完成计算。 net6.0-macos已完成计算。 net6.0-tvos已完成计算。 net6.0-windows已完成计算。 net7.0已完成计算。 net7.0-android已完成计算。 net7.0-ios已完成计算。 net7.0-maccatalyst已完成计算。 net7.0-macos已完成计算。 net7.0-tvos已完成计算。 net7.0-windows已完成计算。 net8.0兼容。 net8.0-android已完成计算。 net8.0-browser已完成计算。 net8.0-ios已完成计算。 net8.0-maccatalyst已完成计算。 net8.0-macos已完成计算。 net8.0-tvos已完成计算。 net8.0-windows已完成计算。
.NET Core netcoreapp2.0已完成计算。 netcoreapp2.1已完成计算。 netcoreapp2.2已完成计算。 netcoreapp3.0已完成计算。 netcoreapp3.1已完成计算。
.NET Standard netstandard2.0兼容。 netstandard2.1已完成计算。
.NET Framework net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。
MonoAndroid monoandroid 已计算。
MonoMac monomac 已计算。
MonoTouch monotouch 已计算。
Tizen tizen40 已计算。 tizen60 已计算。
Xamarin.iOS xamarinios 已计算。
Xamarin.Mac xamarinmac 已计算。
Xamarin.TVOS xamarintvos 已计算。
Xamarin.WatchOS xamarinwatchos 已计算。
兼容的目标框架
包含的目标框架(在包中)
了解有关 目标框架.NET 标准化 的更多信息。

NuGet 包 (16)

显示依赖 Amazon.Lambda.RuntimeSupport 的前 5 个 NuGet 包

下载
Amazon.Lambda.AspNetCoreServer.Hosting

运行最小 API 风格下 ASP.NET Core 应用程序的包,用作 AWS Lambda 函数。

Stackage.Aws.Lambda

用于 .NET 控制台引导的自定义运行时

Lambdajection.Runtime

设置 Lambdajection 项目以支持自定义运行时。

Abbotware.Interop.Aws.Lambda

Abbotware Interop Library for Aws Lambda - 包含辅助方法、扩展方法和插件

Vornet.DataDog.Lambda.DotNet

非官方DataDog Lambda客户端,从官方Java版本移植:https://github.com/DataDog/datadog-lambda-java

GitHub仓库 (8)

显示依赖于Amazon.Lambda.RuntimeSupport的前5个最受欢迎的GitHub仓库

仓库 星星
aws/aws-lambda-dotnet
库、示例和工具,帮助.NET Core开发者开发AWS Lambda函数。
DataDog/dd-trace-dotnet
.NET Client Library for Datadog APM
aws/aws-extensions-for-dotnet-cli
扩展dotnet CLI,简化.NET Core应用程序构建和发布到AWS服务的流程
aws-samples/serverless-test-samples
该仓库旨在为实施serverless应用程序的综合测试套件提供指导。
Elfocrash/aws-videos
版本 下载 最后更新
1.10.0 1,493,830 10/26/2023
1.9.1 17,829 10/23/2023
1.9.0 15,229 10/13/2023
1.8.8 370,453 6/9/2023
1.8.7 498,324 4/23/2023
1.8.6 903,087 3/24/2023
1.8.5 20,457 3/22/2023
1.8.4 244,772 3/1/2023
1.8.3 338,536 1/16/2023
1.8.2 1,112,509 6/17/2022
1.8.1 578,985 5/27/2022
1.8.0 178,169 5/6/2022
1.7.0 444,276 2/2/2022
1.6.0 173,595 12/13/2021
1.5.0 18,872 11/22/2021
1.4.0 99,689 11/5/2021
1.3.0 468,847 12/2/2020
1.2.0 49,299 10/21/2020
1.1.1 517,234 4/3/2020
1.1.0 356,537 11/6/2019
1.0.0 301,829 3/18/2019