基础设施即代码(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 函数 APIs、数据库和事件源。 Amazon SAM 在部署期间将这些 Amazon CloudFormation 模板转换为模板。

注意

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

Amazon Cloud 开发套件 (Amazon CDK)

使用 Amazon CDK,您可以使用熟悉的编程语言(例如 Python TypeScript、Java、C#/Net 或 Go)来定义您的无服务器基础架构。您可以使用诸如循环和条件之类的编程结构来定义基础架构,并 Amazon CDK 生成用于部署的 Amazon CloudFormation 模板。您可以使用在 Amazon SAMCLI本地测试和调试使用创建的应用程序 Amazon CDK。要了解更多信息,请参阅在本地测试 CDK 应用程序

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

为无服务器应用程序选择 IaC 工具时,请考虑团队的偏好、项目要求和现有工作流程。下表比较了用于无服务器开发的 Amazon IaC 工具的主要特征:

工具

主要用途

最适合

适用于 Amazon SAM

何时选择

Amazon CloudFormation

管理复杂 Amazon 的基础架构

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

Amazon SAM 模板在部署期间转换为 Amazon CloudFormation 模板

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

Amazon SAM

无服务器应用程序开发

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

原生功能

主要关注具有 Lambda 函数、API Gateway 和其他无服务器 APIs资源的无服务器架构时

Amazon CDK

使用编程语言定义基础架构

更喜欢类型化语言和代码优先方法的团队

生成 Amazon SAM 模板并 Amazon SAMCLI用于测试

当您需要编程基础架构定义或复杂的资源配置逻辑时

注意

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

了解更多