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