Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
创建 CloudFormation 堆栈的更改集
要为正在运行的堆栈创建更改集,请通过提供修改后的模板、新的输入参数值或两者来提交您想要进行的更改。CloudFormation 通过将堆栈与您提交的更改进行比较来生成更改集。
您可以在创建更改集之前或在创建更改集期间修改模板。
- Create a change set (console)
-
创建更改集
通过以下网址打开 Amazon CloudFormation 控制台:https://console.aws.amazon.com/cloudformation。
-
在屏幕顶部的导航栏中,选择您的 Amazon Web Services 区域。
-
在堆栈页面上,选择您要为其创建更改集的正在运行的堆栈。
-
在堆栈详细信息窗格中,选择堆栈操作,然后选择创建更改集。
-
在为 stack-name 创建更改集页面上,执行下列操作之一以修改输入参数值,指定更新模板的位置或修改模板:
| Task |
处理建议 |
| 修改输入参数值 |
选择使用现有模板,然后选择下一步,以继续输入或修改输入参数值。 |
| 指定更新模板的位置 |
如果您已修改模板,请选择替换现有模板,然后执行以下任一操作:
-
对于存储在 Amazon S3 存储桶中的模板,选择Amazon S3 URL。输入或粘贴模板的 URL,然后选择 Next (下一步)。
如果模板位于启用了版本控制的存储桶中,则可以通过在 URL 后附加 ?versionId=version-id 来指定模板的具体版本。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的使用启用版本控制的存储桶中的对象。
-
对于在计算机本地存储的模板,选择 Upload a template file (上传模板文件)。选择 Choose File (选择文件) 以导航到此文件并选中它,然后选择 Next (下一步)。
|
| 修改模板 |
如果您尚未修改模板,则请选择在基础设施编辑器中编辑模板,然后选择在基础设施编辑器中编辑。您将重定向到 Amazon 基础设施编辑器。修改模板后,选择创建更改集,然后选择确认并继续前往 CloudFormation,返回到为 stack-name 创建更改集页面,然后选择下一步。 |
-
在指定堆栈详细信息页面上,指定更改集的名称,您还可以选择在概述部分指定更改集的描述以标识其用途。如果您的模板包含参数,则在 Specify stack details (指定堆栈详细信息) 页面上,输入或修改适用的输入参数值,然后选择 Next (下一步)。
如果您重用堆栈的模板,CloudFormation 会使用堆栈中的当前值填充各个参数,但在 NoEcho 属性中声明的参数除外。要为这些参数使用现有值,请选择使用现有值。
有关使用 NoEcho 来遮蔽敏感信息以及使用动态参数管理密钥的更多信息,请参阅 请勿将凭证嵌入您的模板 最佳实践。
-
在配置堆栈选项页面上,更新堆栈的标签、IAM 服务角色、堆栈策略、回滚配置、Amazon SNS 通知主题(如果适用)或更改集。
默认情况下,嵌套堆栈的更改集处于已启用状态,这将为模板中指定的所有嵌套堆栈创建更改集。要仅为当前堆栈创建更改集,请选择已禁用。有关嵌套堆栈更改集的详细信息,请参阅 嵌套堆栈的更改集。
-
如果模板包含 IAM 资源,则对于功能,请选择我确认 CloudFormation 可能会创建 IAM 资源。IAM 资源可以修改您 Amazon 账户中的权限;查看这些资源以确保只允许您打算执行的操作。有关更多信息,请参阅 确认 CloudFormation 模板中的 IAM 资源。
-
选择下一步以继续。
-
在审核 stack-name 页面上,检查此更改集的更改。
-
选择提交。
您将重定向到更改集的详细信息页面的更改选项卡。在 CloudFormation 生成更改集时,更改集的状态为 CREATE_PENDING。在创建了更改集之后,CloudFormation 将状态设置为 CREATE_COMPLETE。在 Changes (更改) 部分中,CloudFormation 列出将对您的堆栈进行的所有更改。有关更多信息,请参阅 查看 CloudFormation 堆栈的更改集。
选择属性级别更改列中的查看详细信息,以查看在属性级别所做的更改。
如果 CloudFormation 无法创建更改集(报告 FAILED 状态),请修复 Status (状态) 字段中显示的错误,然后重新创建更改集。
-
确认更改无误后,选择执行更改集
- Create a change set for nested stacks (console)
-
创建嵌套堆栈的更改集
-
通过以下网址打开 Amazon CloudFormation 控制台:https://console.aws.amazon.com/cloudformation。
-
在屏幕顶部的导航栏中,选择您的 Amazon Web Services 区域。
-
在堆栈页面上,选择您要为其创建更改集的正在运行的堆栈。
-
在堆栈详细信息窗格中,选择堆栈操作,然后选择创建更改集。
-
在为 stack-name 创建更改集页面上,执行下列操作之一以修改输入参数值,指定更新模板的位置或修改模板:
| Task |
处理建议 |
| 修改输入参数值 |
选择使用现有模板,然后选择下一步,以继续输入或修改输入参数值。 |
| 指定更新模板的位置 |
如果您已修改模板,请选择替换现有模板,然后执行以下任一操作:
-
对于存储在 Amazon S3 存储桶中的模板,选择Amazon S3 URL。输入或粘贴模板的 URL,然后选择 Next (下一步)。
如果模板位于启用了版本控制的存储桶中,则可以通过在 URL 后附加 ?versionId=version-id 来指定模板的具体版本。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的使用启用版本控制的存储桶中的对象。
-
对于在计算机本地存储的模板,选择 Upload a template file (上传模板文件)。选择 Choose File (选择文件) 以导航到此文件并选中它,然后选择 Next (下一步)。
|
| 修改模板 |
如果您尚未修改模板,则请选择在基础设施编辑器中编辑模板,然后选择在基础设施编辑器中编辑。您将重定向到 Amazon 基础设施编辑器。修改模板后,选择创建更改集,然后选择确认并继续前往 CloudFormation,返回到为 stack-name 创建更改集页面,然后选择下一步。 |
-
在指定堆栈详细信息页面上,指定更改集的名称,您还可以选择在概述部分指定更改集的描述以标识其用途。如果您的模板包含参数,则在 Specify stack details (指定堆栈详细信息) 页面上,输入或修改适用的输入参数值,然后选择 Next (下一步)。
如果您重用堆栈的模板,CloudFormation 会使用堆栈中的当前值填充各个参数,但在 NoEcho 属性中声明的参数除外。要为这些参数使用现有值,请选择使用现有值。
有关使用 NoEcho 来遮蔽敏感信息以及使用动态参数管理密钥的更多信息,请参阅 请勿将凭证嵌入您的模板 最佳实践。
-
在配置堆栈选项页面上,更新堆栈的标签、IAM 服务角色、堆栈策略、回滚配置、Amazon SNS 通知主题(如果适用)或更改集。有关更多信息,请参阅 配置堆栈选项。
默认情况下,嵌套堆栈的更改集处于已启用状态,这将为模板中指定的所有嵌套堆栈创建更改集。有关嵌套堆栈更改集的详细信息,请参阅 嵌套堆栈的更改集。
-
如果模板包含 IAM 资源,则对于功能,请选择我确认 CloudFormation 可能会创建 IAM 资源。IAM 资源可以修改您 Amazon 账户中的权限;查看这些资源以确保只允许您打算执行的操作。有关更多信息,请参阅 确认 CloudFormation 模板中的 IAM 资源。
-
选择下一步以继续。
-
在审核 stack-name 页面上,检查此更改集的更改。
-
选择提交。
为嵌套堆栈创建更改集时,CloudFormation 属性级的更改集无法解析跨堆栈引用。如果子堆栈中的资源引用了父堆栈的输出,而父堆栈已被修改,则更改集可以标记这些资源以便进行有条件替换
您将重定向到更改集的详细信息页面的更改选项卡。在 CloudFormation 生成更改集时,更改集的状态为 CREATE_PENDING。在创建了更改集之后,CloudFormation 将状态设置为 CREATE_COMPLETE。在 Changes (更改) 部分中,CloudFormation 列出将对您的堆栈进行的所有更改。有关更多信息,请参阅 查看 CloudFormation 堆栈的更改集。
如果 CloudFormation 无法创建更改集(报告 FAILED 状态),请修复 Status (状态) 字段中显示的错误,然后重新创建更改集。
-
确认更改无误后,选择执行更改集
创建更改集 (Amazon CLI)
-
使用 create-change-set 命令。
您以命令选项的形式提交更改。您可以指定新参数值和/或修改后的模板。例如,以下命令为 SampleChangeSet 堆栈创建名为 MyStack 的更改集。更改集使用当前堆栈的模板,但 Purpose 参数具有不同值:
aws cloudformation create-change-set --stack-name MyStack \
--change-set-name SampleChangeSet --use-previous-template \
--parameters \
ParameterKey="InstanceType",UsePreviousValue=true ParameterKey="KeyPairName",UsePreviousValue=true ParameterKey="Purpose",ParameterValue="production"
除了对属性语法进行验证和检测资源名称冲突外,更改集的创建过程还会检查服务配额限制、记录器冲突以及 ECR 存储库的删除就绪状态。这些检查以 WARN 模式运行——CloudFormation 会成功创建更改集,但系统会发出警告以提示潜在问题。我们建议您在执行更改集之前先解决这些问题。
Express Mode
要创建使用 Express Mode 的更改集,请添加 --deployment-config 参数:
aws cloudformation create-change-set --stack-name MyStack \
--change-set-name MyExpressChangeSet \
--use-previous-template \
--deployment-config '{"mode": "EXPRESS"}'
当您执行此更改集时,CloudFormation 会使用“Express Mode”,在应用配置后立即完成资源操作。有关更多信息,请参阅 Express Mode。