AWS CloudFormation のアイコン

AWS CloudFormation 经典2011年〜

通过模板以代码方式定义和配置 AWS 资源的 IaC 服务

它能做什么

AWS CloudFormation 是一项 Infrastructure as Code(IaC)服务,通过在 JSON 或 YAML 格式的模板文件中描述 AWS 资源的配置,并基于该定义自动创建、更新和删除资源。无需手动操作控制台,即可用代码管理基础设施。通过对模板进行版本管理,可以追踪基础设施的变更历史,实现可重现的环境构建。

使用场景

广泛用于从同一模板创建开发、预发布和生产各环境以消除环境差异。还用于在新项目启动时按照最佳实践一次性构建基础设施,以及在灾难恢复(DR)场景中快速在其他区域重建环境。

日常类比

可以将其比作房屋的设计图。如果口头告诉工匠(AWS)“客厅大概这么大,厨房放在那里...”,每次建出来的房子都会略有不同。CloudFormation 是交给工匠详细的设计图(模板)说“请按照这个来建”的方法。使用相同的设计图,就能多次精确地建造相同的房子。

什么是 CloudFormation

AWS CloudFormation 是一项用代码管理 AWS 基础设施的服务。在称为模板的文本文件中描述所需的 AWS 资源(EC2 实例、S3 存储桶、Lambda 函数等)及其配置。CloudFormation 读取模板,按正确的顺序自动创建所描述的资源。这种机制称为 Infrastructure as Code(IaC)。

通过堆栈管理资源

在 CloudFormation 中,从模板创建的资源集合称为“堆栈”。可以按堆栈为单位管理资源的生命周期,删除堆栈时所有相关资源都会被清理。更新模板并更新堆栈时,CloudFormation 会识别出需要变更的资源并安全地应用更新。使用变更集功能可以在更新前预览影响范围。

SAM 与 CDK

为了更方便地使用 CloudFormation,有 AWS SAM(Serverless Application Model)和 AWS CDK(Cloud Development Kit)两个工具。SAM 是面向无服务器应用程序的简化模板语法,可以用简短的代码描述 Lambda 函数和 API Gateway 的定义。CDK 可以使用 TypeScript 或 Python 等编程语言定义基础设施,最终转换为 CloudFormation 模板。 要全面了解 SAM 和 CDK,可以参考专业书籍(Amazon)

开始使用

要开始使用 CloudFormation,需要用 YAML 或 JSON 创建模板文件。最简单的模板只需包含 AWSTemplateFormatVersion 和 Resources 部分即可。将创建的模板上传到 CloudFormation 控制台,或使用 AWS CLI 执行 sam deploy 或 aws cloudformation deploy 命令来创建堆栈。

注意事项

  • 更新堆栈时,部分资源可能会发生替换(删除后重新创建)。请使用变更集提前确认
  • 模板大小上限通过 S3 为 1 MB。大规模模板请考虑使用嵌套堆栈进行拆分
  • 处于 ROLLBACK_COMPLETE 状态的堆栈无法更新,需要删除后重新创建
共有するXB!