基础设施即代码(IaC) - AWS Serverless Application Model

基础设施即代码(IaC)

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

  • 加快您的开发周期

  • 简化的配置管理

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

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

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

AWS CloudFormation

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

AWS Serverless Application Model (AWS SAM)

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

注意

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

AWS Cloud Development Kit (AWS CDK)

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

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

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

工具

主要用途

适用于

与 AWS SAM 结合使用

何时选择

CloudFormation

管理复杂的 AWS 基础设施

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

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

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

AWS SAM

无服务器应用程序开发

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

原生功能

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

AWS CDK

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

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

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

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

注意

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

了解更多