本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
基础设施即代码(IaC)
借助基础设施即代码 (IaC),您可以自动部署和管理 AWS 资源,包括无服务器应用程序。IaC 允许您使用代码定义基础架构,从而更轻松地对部署进行版本控制、共享和复制。这种方法可以帮助您:
-
加快开发周期
-
简化配置管理
-
提高部署的可靠性和一致性
适用于 AWS 无服务器应用程序的 IaC 工具
AWS 提供了多种 IaC 工具,可帮助您构建、部署和管理云资源。本节介绍如何 AWS SAM 融入该生态系统以及如何与其他 AWS IaC 工具配合使用。
- AWS CloudFormation
-
使用 AWS CloudFormation
,您可以使用 YAML 或 JSON 模板对整个 AWS 基础设施进行建模和配置。 AWS CloudFormation 自动处理资源的创建、更新和删除。部署 AWS SAM 应用程序时, AWS CloudFormation 处理转换后的模板以创建和管理您的资源。 - AWS Serverless Application Model (AWS SAM)
-
AWS SAM 使用用于定义无服务器资源的简化语法,帮助您构建无服务器应用程序。您可以使用 AWS SAM 模板使用简洁的 YAML 语法来配置 Lambda 函数 APIs、数据库和事件源。 AWS SAM 在部署期间将这些 AWS CloudFormation 模板转换为模板。
注意
虽然 AWS SAM 专门研究无服务器应用程序,但您可以在 AWS SAM 模板中使用任何 AWS CloudFormation 资源类型。这使您可以灵活地在需要时加入非无服务器资源。
- AWS Cloud 开发套件 (AWS CDK)
-
使用 AWS CDK
,您可以使用熟悉的编程语言(例如 Python TypeScript、Java、C#/Net 或 Go)来定义您的无服务器基础架构。您可以使用诸如循环和条件之类的编程结构来定义基础架构,并 AWS CDK 生成用于部署的 AWS CloudFormation 模板。您可以使用在 AWS SAMCLI本地测试和调试使用创建的应用程序 AWS CDK。要了解更多信息,请参阅在本地测试 CDK 应用程序。
比较适用于无服务器应用程序的 IaC 工具
为无服务器应用程序选择 IaC 工具时,请考虑团队的偏好、项目要求和现有工作流程。下表比较了用于无服务器开发的 AWS IaC 工具的主要特征:
工具 |
主要用途 |
最适合 |
适用于 AWS SAM |
何时选择 |
---|---|---|---|---|
AWS CloudFormation |
管理复杂 AWS 的基础架构 |
需要对 AWS 资源进行详细控制的应用程序 |
AWS SAM 模板在部署期间转换为 AWS CloudFormation 模板 |
用于精细控制非无服务器资源 |
AWS SAM |
无服务器应用程序开发 |
使用 Lambda 构建无服务器应用程序的团队 |
原生功能 |
主要关注具有 Lambda 函数、API Gateway 和其他无服务器 APIs资源的无服务器架构时 |
AWS CDK |
使用编程语言定义基础架构 |
更喜欢类型化语言和代码优先方法的团队 |
生成 AWS SAM 模板并 AWS SAMCLI用于测试 |
当您需要编程基础架构定义或复杂的资源配置逻辑时 |
注意
虽然本指南侧重于 AWS原生 IaC 工具,但 Terraform 是另一种可用于定义无服务器应用程序的流行的 IaC 解决方案。 AWS SAMCLI支持对 Terraform 中定义的 Lambda 函数进行本地测试。有关更多信息,请参阅 AWS SAM CLI Terraform 支持。
了解更多
-
要了解有关 DevOps 操作的更多信息 AWS,请参阅 DevOps 上的简介 AWS
-
有关在不同的 IaC 工具中使用 Lambda 的信息,请参阅将 Lambda 与基础设施即代码 (IaC) 结合使用