基础设施即代码(IaC) - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

基础设施即代码(IaC)

借助基础设施即代码(IaC),您可以实现 Amazon 资源的自动化部署和管理,包括无服务器应用程序在内。IaC 让您可以使用代码来定义基础设施,从而更轻松地对您的部署进行版本控制、共享和复制。这种方法可以帮助您:

  • 加快您的开发周期

  • 简化的配置管理

  • 提升您部署的可靠性和一致性

适用于 Amazon 无服务器应用程序的 IaC 工具

Amazon 提供了多种 IaC 工具,可帮助您构建、部署和管理云资源。本节阐述了 Amazon SAM 在该生态系统中的定位及其与其他 Amazon IaC 工具的协作机制。

Amazon CloudFormation

借助 Amazon CloudFormation,您可以使用 YAML 或 JSON 模板对整个 Amazon 基础设施进行建模和预置。Amazon CloudFormation 会自动处理资源的创建、更新和删除操作。当您部署 Amazon SAM 应用程序时,Amazon CloudFormation 会处理转换后的模板来创建和管理您的资源。

Amazon Serverless Application Model (Amazon SAM)

Amazon SAM 帮助您构建无服务器应用程序,其简化的语法用于定义无服务器资源。您可以使用 Amazon SAM 模板通过简洁的 YAML 语法来配置 Lambda 函数、API、数据库和事件源。在部署过程中,Amazon SAM 会将这些模板转换为 Amazon CloudFormation 模板。

注意

虽然 Amazon SAM 专用于无服务器应用程序,但您可以在 Amazon SAM 模板中使用任何 Amazon CloudFormation 资源类型。这使您能够根据需要灵活地加入非无服务器资源。

Amazon Cloud Development Kit (Amazon CDK)

借助 Amazon CDK,您可以使用熟悉的编程语言(如 TypeScript、Python、Java、C#/.Net 或 Go)来定义无服务器基础设施。您可以使用循环和条件等编程结构来定义基础设施,Amazon CDK 则会生成用于部署的 Amazon CloudFormation 模板。您可以使用 Amazon SAM CLI 在本地测试和调试通过 Amazon CDK 创建的应用程序。要了解更多信息,请参阅在本地测试 CDK 应用程序

比较适用于无服务器应用程序的 IaC 工具

在为无服务器应用程序选择 IaC 工具时,需综合考量团队偏好、项目需求及现有工作流。下表对比了适用于无服务器开发的 Amazon IaC 工具的关键特性:

工具

主要用途

适用于

与 Amazon SAM 结合使用

何时选择

Amazon CloudFormation

管理复杂的 Amazon 基础设施

需要对 Amazon 资源进行精细控制的应用程序

Amazon SAM 模板在部署过程中转换为 Amazon CloudFormation 模板

用于对非无服务器资源进行精细控制

Amazon SAM

无服务器应用程序开发

使用 Lambda 构建无服务器应用程序的团队

原生功能

当主要关注基于 Lambda 函数、API Gateway API 以及其他无服务器资源的无服务器架构时

Amazon CDK

使用编程语言定义基础设施

偏好类型化语言和代码优先方法的团队

生成 Amazon SAM 模板并使用 Amazon SAM CLI 进行测试

当您需要程序化基础设施定义或复杂资源配置逻辑时

注意

虽然本指南侧重于 Amazon 原生的 IaC 工具,但 Terraform 是另一种流行的 IaC 解决方案,可用于定义无服务器应用程序。Amazon SAM CLI 支持对 Terraform 中定义的 Lambda 函数进行本地测试。有关更多信息,请参阅 Amazon SAM CLI Terraform 支持

了解更多