使用原生 AOT 编译构建 .NET 7 Lambda 函数 - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用原生 AOT 编译构建 .NET 7 Lambda 函数

使用Amazon Serverless Application Model (Amazon SAM) 生成和打包您的 .NET 7Amazon Lambda 函数,利用原生提前 (AOT) 编译来缩短Amazon Lambda冷启动时间。

.NET 7 原生 AOT 概述

过去,.NET Lambda 函数有冷启动时间,这会影响用户体验、系统延迟和无服务器应用程序的使用成本。Microsoft 在 .NET 7 中增加了对本机 AOT 编译的支持,它通过将 .NET 代码直接编译为机器和操作系统原生代码来提高性能,从而消除了运行时即时 (JIT) 编译。使用 .NET 7 原生 AOT 编译,您可以缩短 Lambda 函数的冷启动时间。要了解有关适用于 .NET 7 的原生 AOT 的更多信息,请参阅在 Dotnet GitHub 存储库使用原生 AO T。

Amazon SAM与您的.NET 7 Lambda 函数一起使用

执行以下操作,使用Amazon Serverless Application Model (Amazon SAM) 配置您的 .NET 7 Lambda 函数:

  • 在开发计算机上安装必备组件。

  • 在您的Amazon SAM模板中定义 .NET 7 Lambda 函数。

  • Amazon SAM使用 CLI 构建应用程序。

安装的先决条件

以下是必备的先决条件:

  • CAmazon SAM LI

  • .NET CLI

  • Amazon.Lambda.Tools .NET 核心全球工具

  • Docker

安装Amazon SAM CLI
  1. 要检查是否已经安装了 CAmazon SAM LI,请运行以下命令:

    sam --version
  2. 要安装Amazon SAM CLI,请参阅安装 Amazon SAM CLI

  3. 要升级已安装的Amazon SAM CLI 版本,请参阅升级 CAmazon SAM LI

安装 .NET CLE CLI
  1. 要下载并安装 .NET Core CLI,请参阅从微软的网站下载 .NET CLI。

  2. 有关 .NET Core CLI 的更多信息,请参阅《Amazon Lambda开发人员指南》中的 .NET Core CLI

安装 Amazon.Lambda.Tools .NET Core Glo
  1. 运行以下 命令:

    dotnet tool install -g Amazon.Lambda.Tools
  2. 如果您已安装该工具,请确保该工具是使用以下命令的最新版本:

    dotnet tool update -g Amazon.Lambda.Tools
  3. 有关 Amazon.Lambda.Tools .NET Core Global 的更多信息,请参阅上的适用于 .NET CLI 的Amazon扩展程序存储库 GitHub。

安装 Docker

在您的Amazon SAM模板中定义 .NET 7 Lambda 函数

要在Amazon SAM模板中定义 .NET7 Lambda 函数,请执行以下操作:

  • 通过设置Runtime为来定义自定义运行时provided.al2。我们定义自定义运行时是因为 .NET 7 运行时选项不可用。

  • 向您的AWS::Serverless::Function资源添加一个Metadata对象并指定dotnet7BuildMethod

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: function-source-folder Handler: app.handler Runtime: provided.al2 Architectures: - x86_64 Events: HelloWorld: Type: Api Properties: Path: /hello Method: get Metadata: BuildMethod: dotnet7
注意

对于该Architectures属性,x86_64是唯一支持的选项,因为.NET 7 无法在上运行arm64。有关更多信息,请参阅重新考虑.NET 7 编译环境 GitHub 问题

Amazon SAM使用 CLI 构建应用程序

从项目的根目录运行sam build即可开始构建应用程序。如果已在 .NET 7 项目文件中定义了该PublishAot属性,则Amazon SAM CLI 将使用原生 AOT 编译进行构建。要了解有关该PublishAot属性的更多信息,请参阅 Microsoft .NET 文档中的原生 AOT 部署

CLI 会调用 .NET CoreAmazon SAM CLI,该CLI 使用 Amazon.Lambda.Tools .NET Core Global Tool。

注意

构建时,如果.sln文件存在于项目的相同或父目录中,则包含该.sln文件的目录将挂载到容器中。如果找不到.sln文件,则只安装项目文件夹。因此,如果您要构建多项目应用程序,请确保该.sln文件位于属性中。

了解更多信息

有关构建 .NET 7 Lambda 函数的更多信息,请参阅使用 .NET 7 在 Lambda 上构建无服务器应用程序

有关该sam build命令的参考,请参见山姆·布莱德