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
<PackageReference Include="Amazon.Lambda.RuntimeSupport" Version="1.10.0" />
paket add Amazon.Lambda.RuntimeSupport --version 1.10.0
#r "nuget: Amazon.Lambda.RuntimeSupport, 1.10.0"
// 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 已计算。 |
-
.NETStandard 2.0
- Amazon.Lambda.Core (>= 2.2.0)
- System.Runtime.Loader (>= 4.3.0)
- System.Text.Json (>= 6.0.0)
-
net5.0
- Amazon.Lambda.Core (>= 2.2.0)
-
net6.0
- Amazon.Lambda.Core (>= 2.2.0)
-
net8.0
- Amazon.Lambda.Core (>= 2.2.0)
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 |