创建更改集
要为正在运行的堆栈创建更改集,请通过提供修改后的模板、新的输入参数值或两者来提交您想要进行的更改。CloudFormation 通过将堆栈与您提交的更改进行比较来生成更改集。
您可以在创建更改集之前或在创建更改集期间修改模板。
- Create a change set for nested stacks (console)
-
创建嵌套堆栈的更改集(控制台)
-
在 Amazon CloudFormation 控制台
中,在 Stacks (堆栈) 中选择您要为其创建更改集的运行堆栈。 -
在堆栈详细信息窗格中,选择 Stack actions (堆栈操作),然后选择 Create change set for current stack (为现有的堆栈创建更改集)。
-
在为
stack-name
创建更改集页面上,执行下列操作之一以修改输入参数值,指定更新模板的位置或修改模板:任务 操作 修改输入参数值 选择 Use current template (使用当前模板),然后选择 Next (下一步),继续输入或修改输入参数值。 指定更新模板的位置 如果您已修改模板,请选择 Replace current template (替换当前模板),然后执行以下任一操作:
-
对于存储在 Amazon S3 存储桶中的模板,选择Amazon S3 URL。输入或粘贴模板的 URL,然后选择 Next (下一步)。
如果您的模板存储在启用了版本控制的存储桶中,则您可以指定模板的具体版本,例如:
https://s3.amazonaws.com/templates/myTemplate.template?versionId=123ab1cdeKdOW5IH4GAcYbEngcpTJTDW
。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的在启用了版本控制的桶中管理对象。 -
对于在计算机本地存储的模板,选择 Upload a template file (上传模板文件)。选择 Choose File (选择文件) 以导航到此文件并选中它,然后选择 Next (下一步)。
修改模板 如果您尚未修改模板,请选择在 Designer 中编辑模板,然后选择 View in Designer (在 Designer 中查看)。您将重定向到 Amazon CloudFormation Designer。修改模板后,选择 以返回到 为
stack-name
创建更改集页面,然后选择下一步。 -
-
如果您的模板包含参数,则在 Specify stack details (指定堆栈详细信息) 页面上,输入或修改适用的输入参数值,然后选择 Next (下一步)。
如果您重用堆栈的模板,CloudFormation 会使用堆栈中的当前值填充各个参数,但在
NoEcho
属性中声明的参数除外。要为这些参数使用现有值,请选择使用现有值。有关使用
NoEcho
来遮蔽敏感信息以及使用动态参数管理密钥的更多信息,请参阅请勿将凭证嵌入您的模板最佳实践。 -
在配置堆栈选项页面上,更新堆栈的标签、IAM 服务角色、堆栈策略、回滚配置、Amazon SNS 通知主题(如果适用)或更改集,然后选择下一步。
注意
默认情况下,嵌套堆栈的更改集处于已启用状态,这将为模板中指定的所有嵌套堆栈创建更改集。有关嵌套堆栈的更改集的详细信息,请参阅嵌套堆栈的更改集。
-
在审核
stack-name
页面上,检查此更改集的更改。如果模板包含 Amazon Identity and Access Management(IAM)资源,请选择 I acknowledge that CloudFormation might create IAM resources(我确认,CloudFormation 可能创建 IAM 资源)。IAM 资源可以修改您 Amazon 账户中的权限;查看这些资源以确保只允许您打算执行的操作。有关更多信息,请参阅使用 Amazon Identity and Access Management 控制访问。
-
选择 Create change set。指定更改集的名称,您还可以选择指定更改集的描述以标识其用途。然后选择 Create change set (创建更改集)。
您将重定向到更改集的详细信息页面的更改选项卡。在 CloudFormation 生成更改集时,更改集的状态为 CREATE_IN_PROGRESS。在创建了更改集之后,CloudFormation 将状态设置为 CREATE_COMPLETE。在 Changes (更改) 部分中,CloudFormation 列出将对您的堆栈进行的所有更改。有关更多信息,请参阅查看更改集。
如果 CloudFormation 无法创建更改集(报告
FAILED
状态),请修复 Status (状态) 字段中显示的错误,然后重新创建更改集。
-
- Create a change set (console)
创建更改集(控制台)
-
在 Amazon CloudFormation 控制台
中,在 Stacks (堆栈) 中选择您要为其创建更改集的运行堆栈。 -
在堆栈详细信息窗格中,选择 Stack actions (堆栈操作),然后选择 Create change set for current stack (为现有的堆栈创建更改集)。
-
在为
stack-name
创建更改集页面上,执行下列操作之一以修改输入参数值,指定更新模板的位置或修改模板:任务 操作 修改输入参数值 选择 Use current template (使用当前模板),然后选择 Next (下一步),继续输入或修改输入参数值。 指定更新模板的位置 如果您已修改模板,请选择 Replace current template (替换当前模板),然后执行以下任一操作:
-
对于存储在 Amazon S3 存储桶中的模板,选择Amazon S3 URL。输入或粘贴模板的 URL,然后选择 Next (下一步)。
如果您的模板存储在启用了版本控制的存储桶中,则您可以指定模板的具体版本,例如:
https://s3.amazonaws.com/templates/myTemplate.template?versionId=123ab1cdeKdOW5IH4GAcYbEngcpTJTDW
。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的在启用了版本控制的桶中管理对象。 -
对于在计算机本地存储的模板,选择 Upload a template file (上传模板文件)。选择 Choose File (选择文件) 以导航到此文件并选中它,然后选择 Next (下一步)。
修改模板 如果您尚未修改模板,请选择在 Designer 中编辑模板,然后选择 View in Designer (在 Designer 中查看)。您将重定向到 Amazon CloudFormation Designer。修改模板后,选择 以返回到 为
stack-name
创建更改集页面,然后选择下一步。 -
-
如果您的模板包含参数,则在 Specify stack details (指定堆栈详细信息) 页面上,输入或修改适用的输入参数值,然后选择 Next (下一步)。
如果您重用堆栈的模板,CloudFormation 会使用堆栈中的当前值填充各个参数,但在
NoEcho
属性中声明的参数除外。要为这些参数使用现有值,请选择使用现有值。有关使用
NoEcho
来遮蔽敏感信息以及使用动态参数管理密钥的更多信息,请参阅请勿将凭证嵌入您的模板最佳实践。 -
在配置堆栈选项页面上,更新堆栈的标签、IAM 服务角色、堆栈策略、回滚配置、Amazon SNS 通知主题(如果适用)或更改集,然后选择下一步。
注意
默认情况下,嵌套堆栈的更改集处于已启用状态,这将为模板中指定的所有嵌套堆栈创建更改集。要仅为当前堆栈创建更改集,请选择已禁用。有关嵌套堆栈的更改集的详细信息,请参阅嵌套堆栈的更改集。
-
在审核
stack-name
页面上,检查此更改集的更改。如果模板包含 Amazon Identity and Access Management(IAM)资源,请选择 I acknowledge that CloudFormation might create IAM resources(我确认,CloudFormation 可能创建 IAM 资源)。IAM 资源可以修改您 Amazon 账户中的权限;查看这些资源以确保只允许您打算执行的操作。有关更多信息,请参阅使用 Amazon Identity and Access Management 控制访问。
-
选择 Create change set。指定更改集的名称,您还可以选择指定更改集的描述以标识其用途。然后选择 Create change set (创建更改集)。
您将重定向到更改集的详细信息页面的更改选项卡。在 CloudFormation 生成更改集时,更改集的状态为 CREATE_IN_PROGRESS。在创建了更改集之后,CloudFormation 将状态设置为 CREATE_COMPLETE。在 Changes (更改) 部分中,CloudFormation 列出将对您的堆栈进行的所有更改。有关更多信息,请参阅查看更改集。
如果 CloudFormation 无法创建更改集(报告
FAILED
状态),请修复 Status (状态) 字段中显示的错误,然后重新创建更改集。
-
创建更改集 (Amazon CLI)
-
运行
aws cloudformation create-change-set
命令。您以命令选项的形式提交更改。您可以指定新参数值和/或修改后的模板。例如,以下命令为
SampleChangeSet
堆栈创建名为SampleStack
的更改集。更改集使用当前堆栈的模板,但Purpose
参数具有不同值:aws cloudformation create-change-set --stack-name arn:aws:cloudformation:us-east-1:123456789012:stack/SampleStack/1a2345b6-0000-00a0-a123-00abc0abc000 --change-set-name SampleChangeSet --use-previous-template --parameters ParameterKey="InstanceType",UsePreviousValue=true ParameterKey="KeyPairName",UsePreviousValue=true ParameterKey="Purpose",ParameterValue="production"