使用 AWS SAM 部署 C# Lambda 函数
AWS Serverless Application Model(AWS SAM)是一个工具包,可帮助简化在 AWS 上构建和运行无服务器应用程序的过程。您可以在 YAML 或 JSON 模板中为应用程序定义资源,并使用 AWS SAM 命令行界面(AWS SAM CLI)构建、打包和部署应用程序。当您通过 AWS SAM 模板构建 Lambda 函数时,AWS SAM 会使用您的函数代码和您指定的任何依赖项自动创建 .zip 部署包或容器映像。然后,AWS SAM 使用 AWS CloudFormation 堆栈部署您的函数。要了解有关使用 AWS SAM 构建和部署 Lambda 函数的更多信息,请参阅《AWS Serverless Application Model 开发人员指南》中的 AWS SAM 入门。
以下示例向您显示如何使用 AWS SAM 下载、构建和部署示例 Hellow World .NET 应用程序。此示例应用程序使用 Lambda 函数和 Amazon API Gateway 端点来实现基本的 API 后端。当您向 API Gateway 端点发送 HTTP GET 请求时,API Gateway 会调用您的 Lambda 函数。该函数返回了一条“hello world”消息,以及处理您请求的 Lambda 函数实例的 IP 地址。
当您使用 AWS SAM 构建和部署应用程序时,AWS SAM CLI 会在后台使用 dotnet lambda package
命令来打包各个 Lambda 函数代码包。
先决条件
- .NET 8 SDK
-
安装 .NET 8
SDK 和运行时系统。 - AWS SAM CLI 版本 1.39 或更高版本
-
要了解如何安装 AWS SAM CLI 的最新版本,请参阅安装 AWS SAM CLI。
部署示例 AWS SAM 应用程序
-
使用以下命令,通过 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
-
导航到包含
template.yaml file
的目录。此文件是一个模板,用于定义应用程序的 AWS 资源,包括您的 Lambda 函数和 API Gateway API。cd sam-app
-
要生成应用程序的来源,请运行以下命令。
sam build
-
要将应用程序部署到 AWS,请运行以下命令。
sam deploy --guided
此命令使用以下一系列提示打包您的应用程序,并进行部署。要接受默认选项,请按 Enter 键。
注意
对于 HelloWorldFunction 可能没有定义授权,确定执行此操作吗?,确保输入
y
。-
堆栈名称:要部署到 AWS CloudFormation 的堆栈的名称。该名称必须是您的 AWS 账户 和 AWS 区域 的唯一名称。
-
AWS 区域:您要将应用程序部署到的 AWS 区域。
-
部署前确认更改:选择“是”可在 AWS SAM 部署应用程序更改之前手动查看所有更改集。如果选择“否”,AWS SAM CLI 会自动部署应用程序更改。
-
允许创建 SAM CLI IAM 角色:许多 AWS SAM 模板,包括本示例中的 Hello world 模板,都会创建 AWS Identity and Access Management(IAM)角色来授予您的 Lambda 函数访问其他 AWS 服务 的权限。选择“是”以提供部署用于创建或修改 IAM 角色的 AWS CloudFormation 堆栈的权限。
-
禁用回滚:默认情况下,如果 AWS SAM 在创建或部署堆栈的过程中遇到错误,它会将堆栈回滚到以前的版本。选择“否”接受此默认值。
-
HelloWorldFunction 可能没有定义授权,确定执行此操作吗,输入
y
。 -
将参数保存到 samconfig.toml:选择“是”以保存您的配置选择。将来,您可以在没有参数的情况下重新运行
sam deploy
,以将更改部署到您的应用程序。
-
-
应用程序部署完成后,CLI 会返回 Hello World Lambda 函数的 Amazon 资源名称(ARN)以及为其创建的 IAM 角色。它还会显示您的 API Gateway API 的端点。要测试应用程序,请在浏览器中打开端点。您可以看到类似以下内容的响应。
{"message":"hello world","location":"34.244.135.203"}
-
要删除您的资源,请运行以下命令。请注意,您创建的 API 端点是可通过互联网访问的公共端点。我们建议您在测试后删除该端点。
sam delete
后续步骤
要了解有关使用 AWS SAM 借助 .NET 构建和部署 Lambda 函数的更多信息,请参阅以下资源: