更新 CloudFormation StackSets
您可以使用 CloudFormation 控制台或 Amazon CLI 更新您的堆栈集。
注意
要覆盖堆栈实例的参数值,请参阅覆盖堆栈实例上的参数。要在堆栈集中添加和移除账户和区域,请参阅将堆栈添加到 StackSets和删除 StackSets 中的堆栈实例。
更新堆栈集(控制台)
登录到 Amazon Web Services Management Console 并打开 Amazon CloudFormation 控制台 https://console.aws.amazon.com/cloudformation
。 -
在屏幕顶部的导航栏中,选择您在其中创建了堆栈集的 Amazon Web Services 区域。
-
从导航窗格中,选择 StackSets (堆栈集)。
-
在 StackSets 页面上,选择您要更新的堆栈集。
-
选定堆栈集之后,从 Actions (操作) 菜单中选择 Edit StackSet details (编辑堆栈集详细信息)。
-
在选择模板页面上,根据需要更新权限部分,或跳到下一步。
-
在先决条件 - 准备模板中,选择使用当前模板以使用当前模板,或选择替换当前模板以指定另一个模板的 S3 URL,或上传新模板。
-
选择下一步。
-
在指定 StackSet 详细信息页面上,对于 StackSet 描述,请根据需要更新堆栈集的描述。
-
对于参数,请根据需要更新参数值。
-
选择下一步。
-
在配置 StackSet 选项页面上,对于标签,根据需要修改标签。您可以添加、更新或删除标签。有关如何在 Amazon 中使用标签的更多信息,请参阅《Amazon Billing and Cost Management User Guide》中的 Organizing and tracking costs using Amazon cost allocation tags。
-
对于执行配置,您可以根据需要更新执行配置。
注意
如果已有正在运行或已排队的操作,StackSets 会将所有传入操作排队,即使这些操作没有冲突。
当堆栈集正在运行或排队操作时,您无法修改堆栈集的执行配置。
-
如果模板包含 IAM 资源,则对于功能,请选择我确认该模板可能会创建 IAM 资源以指定您要在模板中使用 IAM 资源。有关更多信息,请参阅 确认 CloudFormation 模板中的 IAM 资源。
-
选择下一步。
-
在设置部署选项页面上,提供用于更新的账户和区域。
CloudFormation 将在第一个区域内的指定账户中部署堆栈更新,然后移到下一个区域,依此类推,前提是区域的部署失败不超过指定的容错能力。
-
[自行管理权限] 对于账户、部署位置,选择在账户中部署堆栈。在文本框中粘贴用于创建堆栈集的目标账户 ID,用逗号分隔多个数字。
[服务管理权限] 请执行下列操作之一:
-
选择 Deploy to organizational units (OUs) (部署到组织单位 (OU))。输入用于创建堆栈集的目标 OU。
-
选择 Deploy to accounts (部署到账户)。粘贴用于创建堆栈集的目标 OU ID 或账户 ID。
-
-
对于在指定区域,指定您希望 CloudFormation 部署更新的顺序。
-
对于 Deployment options (部署选项):
-
对于最大并发账户数,请根据需要修改最大并发账户数。
-
对于容错,根据需要修改容错。
-
对于区域并发,根据需要修改区域并发。
-
对于并发模式,根据需要修改并发模式。
-
-
选择下一步以继续。
-
-
在审核页面上,审核您的选择。要进行更改,请在相关部分选择编辑。
-
如果准备继续,则请选择提交。
CloudFormation 开始对您的堆栈集应用更新,然后显示堆栈集详细信息的操作选项卡。您可在操作选项卡上查看更新操作的进度和状态。
更新堆栈集(Amazon CLI)
担任委托管理员时,您必须在每次运行 StackSets 命令时将 --call-as
选项设置为 DELEGATED_ADMIN
。
--call-as
DELEGATED_ADMIN
-
使用 update-stack-set 命令对堆栈集进行更改。
在以下示例命令中,我们使用
--parameters
更新堆栈集。具体来说,我们将传递通道配置的默认快照传输频率从TwentyFour_Hours
更改为Twelve_Hours
。因为我们仍在使用当前模板,所以添加--use-previous-template
选项。[自行管理权限] 对于
--accounts
选项,提供您希望更新到目标的账户 ID。aws cloudformation update-stack-set --stack-set-name
my-awsconfig-stackset
\ --use-previous-template --parametersParameterKey=MaximumExecutionFrequency,ParameterValue=Twelve_Hours
\ --accounts'["account_ID_1","account_ID_2"]'
\ --regions'["us-west-2","us-east-1"]'
[服务管理权限] 对于
--deployment-targets
选项,提供您希望更新到目标的组织(根)ID、OU ID 或 Amazon Organizations 账户 ID。aws cloudformation update-stack-set --stack-set-name
my-stackset
\ --use-previous-template \ --parametersParameterKey=MaximumExecutionFrequency,ParameterValue=Twelve_Hours
\ --deployment-targets OrganizationalUnitIds='["ou-rcuk-1x5j1lwo", "ou-rcuk-slr5lh0a"]'
\ --regions'["us-west-2","us-east-1"]'
要指定 CloudFormation 如何执行此堆栈集操作的首选项,请指定
--operation-preferences
选项,如以下示例所示。出于本示例的目的,我们使用的是计数而不是百分比。要改为应用百分比,请使用FailureTolerancePercentage
或MaxConcurrentPercentage
。--operation-preferences
FailureToleranceCount=0,MaxConcurrentCount=1
注意
MaxConcurrentCount
的值依赖于FailureToleranceCount
的值。MaxConcurrentCount
最多比FailureToleranceCount
多 1。 -
通过运行 describe-stack-set-operation 命令显示更新操作的状态和结果,来验证是否已成功更新堆栈集。对于
--operation-id
,使用由您的 update-stack-set 命令返回的操作 ID。aws cloudformation describe-stack-set-operation \ --operation-id
operation_ID