本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用原生 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
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
-
要检查是否已经安装了 CAmazon SAM LI,请运行以下命令:
sam --version -
要安装Amazon SAM CLI,请参阅安装 Amazon SAM CLI。
-
要升级已安装的Amazon SAM CLI 版本,请参阅升级 CAmazon SAM LI。
安装 .NET CLE CLI
-
要下载并安装 .NET Core CLI,请参阅从微软的网站下载 .NET
CLI。 -
有关 .NET Core CLI 的更多信息,请参阅《Amazon Lambda开发人员指南》中的 .NET Core CLI。
安装 Amazon.Lambda.Tools .NET Core Glo
-
运行以下 命令:
dotnet tool install -g Amazon.Lambda.Tools -
如果您已安装该工具,请确保该工具是使用以下命令的最新版本:
dotnet tool update -g Amazon.Lambda.Tools -
有关 Amazon.Lambda.Tools .NET Core Global 的更多信息,请参阅上的适用于 .NET CLI 的Amazon扩展程序
存储库 GitHub。
安装 Docker
-
使用原生 AOT 进行构建Docker,需要安装。有关安装说明,请参阅安装 Docker 以便与Amazon SAM CLI 一起使用。
在您的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命令的参考,请参见山姆·布莱德。