更新 CloudFormation StackSets - AWS CloudFormation

更新 CloudFormation StackSets

您可以使用 CloudFormation 控制台或 AWS CLI 更新您的堆栈集。

要在堆栈集中添加和移除账户和区域,请参阅将堆栈添加到 StackSets从堆栈集中删除堆栈。要覆盖堆栈的参数值,请参阅覆盖堆栈参数

更新堆栈集(控制台)

  1. 登录到 AWS Management Console 并打开 AWS CloudFormation 控制台 https://console.aws.amazon.com/cloudformation

  2. 在屏幕顶部的导航栏中,选择您在其中创建了堆栈集的 AWS 区域。

  3. 从导航窗格中,选择 StackSets

  4. StackSets 页面上,选择您要更新的堆栈集。

  5. 选定堆栈集之后,从 Actions (操作) 菜单中选择 Edit StackSet details (编辑堆栈集详细信息)

  6. 选择模板页面上,根据需要更新权限部分,或跳到下一步。

  7. 先决条件 - 准备模板中,选择使用当前模板以使用当前模板,或选择替换当前模板以指定另一个模板的 S3 URL,或上传新模板。

  8. 选择下一步

  9. 指定 StackSet 详细信息页面上,对于 StackSet 描述,请根据需要更新堆栈集的描述。

  10. 对于参数,请根据需要更新参数值。

  11. 选择下一步

  12. 配置 StackSet 选项页面上,对于标签,根据需要修改标签。您可以添加、更新或删除标签。有关如何在 AWS 中使用标签的更多信息,请参阅《AWS 账单与成本管理 User Guide》中的 Organizing and tracking costs using AWS cost allocation tags

  13. 对于执行配置,您可以根据需要更新执行配置。

    注意

    请记住,当操作正在运行或已排队时,您无法更改执行设置。

  14. 如果模板包含 IAM 资源,则对于功能,请选择我确认该模板可能会创建 IAM 资源以指定您要在模板中使用 IAM 资源。有关更多信息,请参阅 确认 CloudFormation 模板中的 IAM 资源

  15. 选择下一步

  16. 设置部署选项页面上,提供用于更新的账户和区域。

    CloudFormation 将在第一个区域内的指定账户中部署堆栈更新,然后移到下一个区域,依此类推,前提是区域的部署失败不超过指定的容错能力。

    1. [自行管理权限] 对于账户部署位置,选择在账户中部署堆栈。在文本框中粘贴用于创建堆栈集的目标账户 ID,用逗号分隔多个数字。

      [服务管理权限] 请执行下列操作之一:

      • 选择 Deploy to organizational units (OUs) (部署到组织单位 (OU))。输入用于创建堆栈集的目标 OU。

      • 选择 Deploy to accounts (部署到账户)。粘贴用于创建堆栈集的目标 OU ID 或账户 ID。

    2. 对于在指定区域,指定您希望 CloudFormation 部署更新的顺序。

    3. 对于部署选项,请执行以下操作:

      • 对于最大并发账户数,请指定并发处理的账户数量。

      • 对于容错能力,请指定在停止操作之前可以接受的失败次数。

      • 对于区域并发,请选择处理区域的方式:顺序(一次处理一个区域)或并行(并发处理多个区域)。

      • 对于并发模式,请选择在操作执行期间的并发行为方式。

        • 严格容错 – 操作失败时降低并发级别,保持在容错能力 +1 之内。

        • 软容错 – 即使失败,仍保持您指定的并发级别(最大并发账户数的值)。

    4. 选择下一步以继续。

  17. 审核页面上,审核您的选择。要进行更改,请在相关部分选择编辑

  18. 如果准备继续,则请选择提交

    CloudFormation 开始对您的堆栈集应用更新,然后显示堆栈集详细信息的操作选项卡。您可在操作选项卡上查看更新操作的进度和状态。

更新堆栈集(AWS CLI)

如果您担任委托管理员,则每次运行堆栈集命令时都必须将 --call-as 选项设置为 DELEGATED_ADMIN

--call-as DELEGATED_ADMIN
  1. 使用 update-stack-set 命令对堆栈集进行更改。

    在以下示例命令中,我们使用 --parameters 选项来更新堆栈集。具体来说,我们将传递通道配置的默认快照传输频率从 TwentyFour_Hours 更改为 Twelve_Hours。由于我们仍在使用当前模板,因此添加了 --use-previous-template 选项。

    使用 --operation-preferences 选项设置并发账户处理和其他部署首选项。这些示例使用基于计数的设置。请注意,MaxConcurrentCount 不得大于 FailureToleranceCount + 1。对于基于百分比的设置,请改用 FailureTolerancePercentageMaxConcurrentPercentage

    [自行管理权限] 对于 --accounts 选项,提供您希望更新到目标的账户 ID。

    aws cloudformation update-stack-set --stack-set-name my-awsconfig-stackset \ --use-previous-template \ --parameters ParameterKey=MaximumExecutionFrequency,ParameterValue=Twelve_Hours \ --accounts account_ID_1 account_ID_2 \ --regions us-west-2 us-east-1 \ --operation-preferences MaxConcurrentCount=1,FailureToleranceCount=0

    [服务托管权限] 对于 --deployment-targets 选项,提供您希望更新到目标的组织(根)ID 或组织单元(OU)ID。

    aws cloudformation update-stack-set --stack-set-name my-stackset \ --use-previous-template \ --parameters ParameterKey=MaximumExecutionFrequency,ParameterValue=Twelve_Hours \ --deployment-targets OrganizationalUnitIds='["ou-rcuk-1x5j1lwo", "ou-rcuk-slr5lh0a"]' \ --regions us-west-2 us-east-1 \ --operation-preferences MaxConcurrentCount=1,FailureToleranceCount=0

    有关更多信息,请参阅 https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStackSet.html API 参考 中的 AWS CloudFormationUpdateStackSet

  2. 通过运行 describe-stack-set-operation 命令显示更新操作的状态和结果,来验证是否已成功更新堆栈集。对于 --operation-id,使用由您的 update-stack-set 命令返回的操作 ID。

    aws cloudformation describe-stack-set-operation \ --operation-id operation_ID