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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

基础设施即代码(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 支持

了解更多