使用 Amazon Serverless Application Model(Amazon SAM) - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Amazon Serverless Application Model(Amazon SAM)

Amazon Serverless Application Model(Amazon SAM)是一个工具包,可帮助简化在 Amazon 上构建和运行无服务器应用程序的过程。您可以在 YAML 或 JSON 模板中为应用程序定义资源,并使用 Amazon SAM 命令行界面(Amazon SAM CLI)构建、打包和部署应用程序。当您通过 Amazon SAM 模板构建 Lambda 函数时,Amazon SAM 会使用您的函数代码和您指定的任何依赖项自动创建 .zip 部署包或容器映像。然后,Amazon SAM 使用 Amazon CloudFormation 堆栈部署您的函数。要了解有关使用 Amazon SAM 构建和部署 Lambda 函数的更多信息,请参阅《Amazon Serverless Application Model 开发人员指南》中的 Amazon SAM 入门

以下示例向您显示如何使用 Amazon SAM 下载、构建和部署示例 Hellow World .NET 应用程序。此示例应用程序使用 Lambda 函数和 Amazon API Gateway 端点来实现基本的 API 后端。当您向 API Gateway 端点发送 HTTP GET 请求时,API Gateway 会调用您的 Lambda 函数。该函数返回了一条“hello world”消息,以及处理您请求的 Lambda 函数实例的 IP 地址。

当您使用 Amazon SAM 构建和部署应用程序时,Amazon SAM CLI 会在后台使用 dotnet lambda package 命令来打包各个 Lambda 函数代码包。

先决条件

.NET 8 SDK

安装 .NET 8 SDK 和运行时系统。

Amazon SAM CLI 版本 1.39 或更高版本

要了解如何安装 Amazon SAM CLI 的最新版本,请参阅安装 Amazon SAM CLI

部署示例 Amazon SAM 应用程序

  1. 使用以下命令,通过 Hello world .NET 模板初始化应用程序。

    sam init --app-template hello-world --name sam-app \ --package-type Zip --runtime dotnet8

    此命令在您的项目目录中创建了以下文件和目录。

    └── sam-app ├── README.md ├── events │   └── event.json ├── omnisharp.json ├── samconfig.toml ├── src │   └── HelloWorld │   ├── Function.cs │   ├── HelloWorld.csproj │   └── aws-lambda-tools-defaults.json ├── template.yaml └── test └── HelloWorld.Test ├── FunctionTest.cs └── HelloWorld.Tests.csproj
  2. 导航到包含 template.yaml file 的目录。此文件是一个模板,用于定义应用程序的 Amazon 资源,包括您的 Lambda 函数和 API Gateway API。

    cd sam-app
  3. 要生成应用程序的来源,请运行以下命令。

    sam build
  4. 要将应用程序部署到 Amazon,请运行以下命令。

    sam deploy --guided

    此命令使用以下一系列提示打包您的应用程序,并进行部署。要接受默认选项,请按 Enter 键。

    注意

    对于 HelloWorldFunction 可能没有定义授权,确定执行此操作吗?,确保输入 y

    • 堆栈名称:要部署到 Amazon CloudFormation 的堆栈的名称。该名称必须是您的 Amazon Web Services 账户 和 Amazon Web Services 区域 的唯一名称。

    • Amazon Web Services 区域:您要将应用程序部署到的 Amazon Web Services 区域。

    • 部署前确认更改:选择“是”可在 Amazon SAM 部署应用程序更改之前手动查看所有更改集。如果选择“否”,Amazon SAM CLI 会自动部署应用程序更改。

    • 允许创建 SAM CLI IAM 角色:许多 Amazon SAM 模板,包括本示例中的 Hello world 模板,都会创建 Amazon Identity and Access Management(IAM)角色来授予您的 Lambda 函数访问其他 Amazon Web Services 的权限。选择“是”以提供部署用于创建或修改 IAM 角色的 Amazon CloudFormation 堆栈的权限。

    • 禁用回滚:默认情况下,如果 Amazon SAM 在创建或部署堆栈的过程中遇到错误,它会将堆栈回滚到以前的版本。选择“否”接受此默认值。

    • HelloWorldFunction 可能没有定义授权,确定执行此操作吗,输入 y

    • 将参数保存到 samconfig.toml:选择“是”以保存您的配置选择。将来,您可以在没有参数的情况下重新运行 sam deploy,以将更改部署到您的应用程序。

  5. 应用程序部署完成后,CLI 会返回 Hello World Lambda 函数的 Amazon 资源名称(ARN)以及为其创建的 IAM 角色。它还会显示您的 API Gateway API 的端点。要测试应用程序,请在浏览器中打开端点。您可以看到类似以下内容的响应。

    {"message":"hello world","location":"34.244.135.203"}
  6. 要删除您的资源,请运行以下命令。请注意,您创建的 API 端点是可通过互联网访问的公共端点。我们建议您在测试后删除该端点。

    sam delete

后续步骤

要了解有关使用 Amazon SAM 借助 .NET 构建和部署 Lambda 函数的更多信息,请参阅以下资源: