View a markdown version of this page

使用 CloudFormation 模板 - Amazon CloudFormation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

使用 CloudFormation 模板

Amazon CloudFormation 模板定义了您要在堆栈中创建、更新或删除的 Amazon 资源。模板由多个部分组成,但唯一必须具备的是 Resources 部分,其中必须至少声明一种资源。

您可以使用以下方法创建模板:

  • Amazon 基础设施编辑器 – 用于设计模板的可视化界面。

  • 文本编辑器 – 直接使用 JSON 或 YAML 语法编写模板。

  • IaC 生成器 – 利用您账户中已预置但当前不由 CloudFormation 管理的资源生成模板。IaC 生成器适用于云管控 API 在您所在区域支持的多种资源类型。

本部分提供有关如何使用 CloudFormation 模板的不同部分以及如何开始创建堆栈模板的全面指南。其涵盖以下主题:

模板的存储位置

Amazon S3 存储桶

您可以将 CloudFormation 模板存储在 Amazon S3 存储桶中。创建或更新堆栈时,您可以指定模板的 S3 URL,而不是直接上传模板。

如果您通过 Amazon Web Services 管理控制台 或 Amazon CLI 直接上传模板,系统将自动为您创建一个 S3 存储桶。有关更多信息,请参阅 通过 CloudFormation 控制台创建堆栈。

Git 存储库

使用 Git sync,您可以将模板存储在 Git 存储库中。创建或更新堆栈时,您可以指定 Git 存储库位置和包含模板的分支,而不是直接上传模板或引用 S3 URL。CloudFormation 会自动监控指定的存储库和分支以查找模板更改。有关更多信息,请参阅 使用 Git 同步从存储库源代码创建堆栈。

验证模板

在部署之前验证模板,以便尽早发现并修复问题。CloudFormation 服务和本节中的工具检查模板的不同部分。您可以将它们配合使用。

您可以使用 validate-template CLI 命令或在 Amazon Web Services 管理控制台 中指定模板来检查模板是否使用了有效的 JSON 或 YAML。控制台会自动执行此检查。这些服务端检查不会运行由以下工具提供的其他属性、安全性或最佳实践检查:

  • CloudFormation 语言服务器:在编辑器中编写模板时,获取建议、文档和验证反馈。

  • CloudFormation Linter:通过命令行、编辑器或自动构建检查资源属性、允许的值和常见问题。

  • CloudFormation 验证:通过命令行或库运行本地离线检查,并添加自定义 Rego 或 Guard 规则。Amazon CDK 会在合成模板后自动使用此验证器。

  • CloudFormation Guard:根据贵组织的安全性、合规性和治理要求编写策略规则并检查模板。

与人工智能编程代理配合使用

AI 编程代理可帮助您使用 GitHub 上的 Agent Toolkit for Amazon 中的 aws-cloudformation 技能来创作、验证 CloudFormation 模板并排查其问题。有关 安装说明,请参阅代理设置指南。

了解验证范围

本地工具会检查您提供的模板和规则。它们无法保证在 Amazon Web Services 账户 和 Amazon Web Services 区域 中使用当前资源、权限和配额部署一定会成功。部署之前,请查看更改集并修复 CloudFormation 服务报告的所有问题。

开始使用模板

要开始创建 CloudFormation 模板,请遵循以下步骤:

  1. 选择资源 – 确定要包含在堆栈中的 Amazon 资源,例如 EC2 实例、VPC、安全组等。

  2. 编写模板 – 以 JSON 或 YAML 格式编写模板,定义资源及其属性。

  3. 保存模板:使用以下文件扩展名在本地保存模板:.json、.yaml 或 .txt。

  4. 验证模板 – 使用 验证模板 部分中描述的方法验证模板。

  5. 创建堆栈 – 使用验证后的模板创建堆栈。

计划使用 CloudFormation 模板引用

在编写模板时,可以在 Amazon 资源和属性类型参考中找到不同资源类型详细语法的文档。

通常,您的堆栈模板需要内置函数来分配直到运行时才可用的属性值,并需要特殊属性来控制资源的行为。在编写模板时,请参阅以下资源以获取指导:

  • 内置函数参考:一些常用的内置函数包括:

    • Ref – 检索资源的参数值或物理 ID。

    • Sub – 用实际值替换字符串中的占位符。

    • GetAtt – 返回模板中的资源的属性值。

    • Join – 将一组值连接成单个字符串。

  • 资源属性参考:一些常用的特殊属性包括:

    • DependsOn – 此属性用于指定必须在一个资源创建之后才能创建另一个资源。

    • DeletionPolicy – 此属性用于指定 CloudFormation 如何处理资源删除的方式。

示例模板

CloudFormation 提供了您可以开始使用的开源堆栈模板。有关更多信息,请参阅 GitHub 上的 Amazon CloudFormation 示例模板。

请记住,这些模板并不意味着已做好生产的准备。您应该花些时间了解模板的工作方式,根据需要进行调整,并确保它们符合自己公司的合规标准。

该存储库中的每个模板都通过了 CloudFormation Linter (cfn-lint) 检查,以及一组基于 Center for Internet Security (CIS) 前 20 项控制的基本 Amazon CloudFormation Guard 规则,但示例应侧重于单个用例的某些规则除外。