本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
大厦。 NET使用原生AOT编译的 Lambda 函数 AWS SAM
构建并打包你的. NET AWS Serverless Application Model (AWS SAM) 有 8 个 AWS Lambda 函数,使用 Native Aheadof-Time (AOT) 编译来缩 AWS Lambda 短冷启动时间。
主题
。 NET8 原生AOT概述
从历史上看,。 NETLambda 函数的冷启动时间会影响无服务器应用程序的用户体验、系统延迟和使用成本。用。 NET原生AOT编译,您可以缩短 Lambda 函数的冷启动时间。要了解有关 Native f AOT or 的更多信息。 NET8,请参阅在 Dotnet AOT GitHub 存储库中使用原生
AWS SAM 与你一起使用. NET8 个 Lambda 函数
执行以下操作来配置您的。 NET8 个带有 AWS Serverless Application Model ()AWS SAM的 Lambda 函数:
-
在开发计算机上安装必备组件。
-
定义。 NET您的 AWS SAM 模板中有 8 个 Lambda 函数。
-
使用构建您的应用程序 AWS SAMCLI。
安装必备组件
以下是所需的先决条件:
-
的 AWS SAMCLI
-
的。 NET核心 CLI
-
Amazon.Lambda.Tools。 NET核心全球工具
-
Docker
安装 AWS SAM CLI
-
要检查是否已安装 AWS SAM CLI,请运行以下命令:
sam --version
-
要安装 AWS SAMCLI,请参阅安装 AWS SAM CLI。
-
要升级的已安装版本 AWS SAMCLI,请参阅升级 AWS SAM CLI。
安装. NET核心 CLI
-
要下载并安装. NET核心CLI,参见下载。 NET
来自微软的网站。 -
有关更多信息。 NET核心CLI,请参阅。 NETAWS Lambda 开发者指南CLI中的核心。
安装 Amazon.Lambda.Tools。 NET核心全球工具
-
运行以下命令:
dotnet tool install -g Amazon.Lambda.Tools
-
如果您已安装该工具,请确保该工具是使用以下命令的最新版本:
dotnet tool update -g Amazon.Lambda.Tools
-
了解有关 Amazon.Lambda.Tools 的更多信息。 NETCore Global 工具,请参阅 “AWS 扩展”。 NETCLI
存储库已打开 GitHub。
安装 Docker
-
使用 Native 构建 AOTDocker,需要安装。有关安装说明,请参阅安装 Docker 以与 AWS SAM CLI 一起使用。
定义。 NET您的模板中有 8 个 Lambda 函数 AWS SAM
要定义. NET8在您的 AWS SAM 模板中使用 Lambda 函数,请执行以下操作:
-
从您选择的起始目录运行以下命令::
sam init
选择
AWS Quick Start Templates
以选择起始模板。选择
Hello World Example
模板。通过输入,选择不使用最流行的运行时和软件包类型
n
。对于运行时间,请选择
dotnet8
。对于包裹类型,请选择
Zip
。对于您的入门模板,请选择
Hello World Example using native AOT
。
安装 Docker
-
使用 Native 构建 AOTDocker,需要安装。有关安装说明,请参阅安装 Docker 以与 AWS SAM CLI 一起使用。
Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: ./src/HelloWorldAot/ Handler: bootstrap Runtime: dotnet8 Architectures: - x86_64 Events: HelloWorldAot: Type: Api Properties: Path: /hello Method: get
使用 AWS SAM CLI 构建应用程序
在项目根目录中,运行 sam build
以开始构建应用程序。如果PublishAot
属性已在您的中定义。 NET8 项目文件, AWS SAMCLI将使用原生AOT编译进行构建。要了解有关该PublishAot
属性的更多信息,请参阅 Microsoft 中的本机AOT部署
要构建您的函数,会 AWS SAMCLI调用。 NET使用 Amazon.Lambda.Tools 的核心CLI。 NET核心全球工具。
注意
构建时,如果项目所在目录或父目录中存在 .sln
文件,则包含该 .sln
文件的目录将挂载到容器中。如果找不到 .sln
文件,则只会挂载项目文件夹。因此,如果您要构建多项目应用程序,请确保 .sln
文件位于属性中。
了解更多信息
有关建筑的更多信息。 NET8 个 Lambda 函数,请参阅简介。 NET8 的运行时间 AWS Lambda
有关 sam build 命令的参考,请参阅 sam build。