AWS Lambda
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

.NET 内核 CLI

借助 .NET 内核 CLI,您可以通过跨平台方式创建基于 .NET 的 Lambda 应用程序。

在您开始之前

本节假设您已完成以下操作:

  • 已安装 .NET 内核 CLI。如果您尚未安装,请单击此处安装。

创建 .NET 项目

要使用 .NET 内核 CLI 创建应用程序,请打开命令提示符窗口,导航至您安装 .NET 内核运行时的文件夹,然后按以下步骤操作:

  1. 使用以下命令创建一个目录,用于在其中创建您的项目:mkdir example

  2. 使用以下命令导航至该目录:cd example

  3. 输入以下命令:dotnet new console

    此操作将在您的 example 目录中创建两个文件:

    • Program.cs,即您在其中写入 Lambda 函数代码的文件。

    • project.json,即您在其中声明 Nuget 依赖项(或本地项目中的依赖项)的文件。NuGet 是适用于 .NET 平台的程序包管理器。有关详细信息,请参阅 Nuget.org

    注意

    默认情况下,Lambda 方法并不使用 .NET 中提供的 Main() 入口点,因此,请打开 project.json 文件并删除“buildOptions”属性。完成此操作后,您的 project.json 文件看起来应如下所示(具体版本可能会因您安装 NetCore CLI 的时间而异):

    Copy
    { "version": "1.0.0-*", "dependencies": {}, "frameworks": { "netcoreapp1.0": { "dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "1.1.0" } }, "imports": "dnxcore50" } } }
  4. 使用您选择的编辑器(如 Microsoft Visual Studio)打开 Program.cs 文件。

    • 替换随您的 Lambda 函数处理程序代码一同提供的默认代码:

      此时,您的 .cs 文件文件结构应类似于以下内容:

      Copy
      using System; using System.IO; namespace CSharpLambdaFunction { public class LambdaHandler { public Stream myHandler(Stream inputStream) { //function logic } } }

您的 Lambda 函数处理程序签名格式应为 Assembly::Namespace.ClassName::MethodName。有关更多信息,请参阅 处理程序签名

使用串行器

对于任何使用 Stream 对象以外的输入或输出类型的 Lambda 函数,您都需要向应用程序中添加一个序列化库。您可以通过下列方式来执行此操作:

  • 使用 Json.NET。Lambda 将使用 JSON.NET 作为 NuGet 程序包,从而提供 JSON 串行器的实现实例。

  • 通过实施 ILambdaSerializer 接口(作为 Amazon.Lambda.Core 库的一部分提供)创建您自己的序列化库。该接口定义了两种方法:

    • T Deserialize<T>(Stream requestStream);

      通过实施此方法,您可以将请求负载从 Invoke API 反序列化至传递到 Lambda 函数处理程序的对象中。

    • T Serialize<T>(T response, Stream responseStream);

      通过实施此方法,您可以将从 Lambda 函数处理程序中返回的结果序列化到 Invoke API 返回的响应负载中。

您可以使用任意一个串行器,方法是将其作为依赖项添加到您的 project.json 文件中。

Copy
{ "version": "1.0.0-*", "buildOptions": { }, "dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "1.0.1" }, "Newtonsoft.Json": "9.0.1", "Amazon.Lambda.Core": "1.0.0*", "Amazon.Lambda.Serialization.Json": "1.0.0", "Amazon.Lambda.Tools" : { "type" :"build", "version":"0.9.0-preview1" } }, "tools": { "Amazon.Lambda.Tools" : "0.9.0-preview1" }, "frameworks": { "netcoreapp1.0": { "imports": "dnxcore50" } } }

然后将其添加到您的 AssemblyInfo.cs 文件中。例如,如果您使用的是默认 Json.NET 串行器,则需要添加以下项:

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

注意

您可以在方法级别定义一个自定义序列化属性,用于覆盖在程序集级别指定的默认串行器。有关更多信息,请参阅 处理标准数据类型

创建部署程序包

要创建部署程序包,请打开命令提示符窗口,导航至包含您的 project.json 文件的文件夹,然后运行以下命令:

  • dotnet restore,将恢复对相应项目(可能已在开发过程中发生更改)的依赖项的所有引用。

  • dotnet publish,将应用程序和程序包、源代码和所有依赖项编译到一个文件夹中。命令输出窗口会指导您找到文件夹的创建位置。例如:

    Copy
    publish: Published to C:\Users\yourname\project-folder\bin\debug\netcoreapp1.1\publish

    此文件夹的内容表示您的应用程序,至少会显示类似如下内容:

    application-name.deps.json

    application-name.dll

    application-name.pdb

    application-name.runtimeconfig.json

压缩此文件夹的内容(不是文件夹本身)。这就是您的部署程序包。