Amazon.Lambda.Core 2.2.0

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

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

Amazon.Lambda.Core

此包包含可在 AWS Lambda 平台上运行 .NET 代码时有用的接口和类。

ILambdaContext

可以使用 Amazon.Lambda.Core.ILambdaContext 接口在处理函数中使用,以访问关于当前执行的详细信息,例如当前函数的名称、内存限制、剩余执行时间以及日志。

以下是如何在处理函数中使用此接口的一个示例。函数执行一个简单的 ToUpper 内容转换,并将一些上下文数据写入到控制台。

public string ToUpper(string input, ILambdaContext context)
{
    Console.WriteLine("Function name: " + context.FunctionName);
    Console.WriteLine("Max mem allocated: " + context.MemoryLimitInMB);
    Console.WriteLine("Time remaining: " + context.RemainingTime);
    Console.WriteLine("CloudWatch log stream name: " + context.LogStreamName);
    Console.WriteLine("CloudWatch log group name: " + context.LogGroupName);

    return input?.ToUpper();
}

此接口的实例通过 Items 属性和键 "LAMBDA_CONTEXT / LambdaContext"附加到任何 ControllerBase.Request.HttpContext 实例。

下面是如何在控制器方法中使用此接口的一个示例。

[ApiController]
public class TestController : ControllerBase
{
    [HttpGet("/[controller]")]
    public IActionResult Get()
    {
        Response.Headers.Add("Access-Control-Allow-Origin", "*"); // NOTE: Should be configured via app.UseCors in Startup.cs

        var context = (ILambdaContext)Request.HttpContext.Items[APIGatewayProxyFunction.LAMBDA_CONTEXT];
        var tmp = new
        {
            context.AwsRequestId,
            context.FunctionName,
            context.MemoryLimitInMB,
            context.LogStreamName,
            context.LogGroupName
        };
        return new OkObjectResult(tmp);
    }
}

以下几节描述了通过 ILambdaContext 可以访问的各种其他接口。

IClientContext

Amazon.Lambda.Core.IClientContext 接口提供有关客户端应用程序和设备的信息,当 Lambda 函数通过 AWS Mobile SDK 被调用时。这包括环境信息,例如设备的品牌和型号、关于应用程序的信息,以及用户自定义的键值对,描述了此应用程序的安装。该接口位于 ILambdaContext.ClientContext 之下。

IClientApplication

Amazon.Lambda.Core.IClientApplication 接口提供有关客户端应用程序的信息,当 Lambda 函数通过 AWS Mobile SDK 被调用时。这包括应用标题、其版本等。该接口可以在 ILambdaContext.ClientContext.Client 下找到。

ICognitoIdentity

Amazon.Lambda.Core.ICognitoIdentity 接口提供通过 AWS Mobile SDK 被调用时的 Amazon Cognito 身份提供者的信息。这包括 Amazon Cognito IdentityId 和 IdentityPoolId。该接口可以在 ILambdaContext.Identity 下找到。

ILambdaLogger

Amazon.Lambda.Core.ILambdaLogger 接口允许您的函数将数据记录到 CloudWatch。该接口定义了 LogLogLine 方法。这两个方法都接受一个字符串,并在事件大小在允许的范围内时,产生一个或没有行终止符的 CloudWatch Logs 事件。

以下是如何在处理函数中使用该接口的示例。该函数执行一个简单的 ToUpper 内容转换,同时记录上下文数据。

public string ToUpper(string input, ILambdaContext context)
{
    context.Logger.Log("Function name: " + context.FunctionName);
    context.Logger.Log("Max mem allocated: " + context.MemoryLimitInMB);
    context.Logger.Log("Time remaining: " + context.RemainingTime);

    return input?.ToUpper();
}

ILambdaSerializer

Amazon.Lambda.Core.ILambdaSerializer 接口允许您实现自己的序列化程序以在任意类型和 Lambda 流之间进行转换。

默认情况下,Lambda 函数只能使用 Stream 类型作为输入或输出。要使用其他类型,您可以编写自己的实现 ILambdaSerializer 的序列化程序,或者使用 Amazon.Lambda.Serialization.Json 包来序列化和反序列化 JSON 数据。

有关 ILambdaSerializer 的示例实现,请参阅 Amazon.Lambda.Serialization.Json.JsonSerializer 类。

LambdaSerializerAttribute

Amazon.Lambda.Core.LambdaSerializerAttribute 是一个属性,它用于指示当将 .NET 类型转换为 Lambda 支持的类型时,Lambda 容器应使用哪个序列化程序。此属性可以位于程序集或处理方法上。如果两者都指定,则方法属性具有优先级。

以下是设置该属性在程序集上的示例。

[assembly: Amazon.Lambda.Core.LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]

以下是方法如何应用于处理方法。

[LambdaSerializer(typeof(XmlSerializer))]
public Response CustomSerializerMethod(Request input)
{
    ...
}
产品 兼容的和额外的目标框架版本。
.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 Standard 的信息。
  • .NETStandard 2.0

    • 无依赖。
  • net6.0

    • 无依赖。
  • net8.0

    • 无依赖。

NuGet 包 (151)

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

下载
Amazon.Lambda.Serialization.SystemTextJson

Amazon Lambda .NET Core 支持 - 使用 System.Text.Json 序列化.Json。

Amazon.Lambda.Serialization.Json

Amazon Lambda .NET Core 支持 - 序列化.Json 包。

Amazon.Lambda.Logging.AspNetCore

Amazon Lambda .NET Core 支持 - 记录 ASP.NET Core 包。

Amazon.Lambda.AspNetCoreServer

Amazon.Lambda.AspNetCoreServer使得运行ASP.NET Core Web API应用程序作为AWS Lambda函数变得更加简单。

Amazon.Lambda.TestUtilities

Amazon.Lambda.TestUtilties包括Amazon.Lambda.Core中定义的接口的存根实现和辅助方法。

GitHub 仓库 (25)

显示依赖Amazon.Lambda.Core的GitHub热门前5个仓库

仓库 Stars
lambci/docker-lambda
Docker镜像和测试运行器,用于重现AWS Lambda的现场环境
mongodb/mongo-csharp-driver
官方C# .NET MongoDB驱动程序
aws/aws-sdk-net
官方AWS SDK for .NET。有关AWS SDK for .NET的更多信息,请参阅我们的网站
aws/aws-lambda-dotnet
库、示例和工具,帮助.NET Core开发者开发AWS Lambda函数。
awslabs/aws-apigateway-lambda-authorizer-blueprints
用于API网关的基于Lambda的自定义Authorizers的蓝图和示例。
版本 下载 最后更新
2.2.0 6,086,078 10/26/2023
2.1.0 27,683,200 11/5/2021
2.0.0 11,168,350 3/30/2021
1.2.0 9,391,105 10/21/2020
1.1.0 13,412,502 2/7/2019
1.0.0 10,309,830 12/1/2016