基础设施即代码(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 支持。
了解更多
-
要了解有关在 AWS 上的 DevOps 实操的更多信息,请参阅 DevOps on AWS 简介。
-
有关将 Lambda 与不同的 IaC 工具结合使用的更多信息,请参阅将 Lambda 与基础设施即代码(IaC)结合使用