更新 CloudFormation StackSets - Amazon CloudFormation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

更新 CloudFormation StackSets

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

注意

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

更新堆栈集(控制台)

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

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

  3. 从导航窗格中,选择 StackSets (堆栈集)

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

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

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

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

  8. 选择下一步

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

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

  11. 选择下一步

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

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

    注意

    如果已有正在运行或已排队的操作,StackSets 会将所有传入操作排队,即使这些操作没有冲突。

    当堆栈集正在运行或排队操作时,您无法修改堆栈集的执行配置。

  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. 对于 Deployment options (部署选项)

      • 对于最大并发账户数,请根据需要修改最大并发账户数。

      • 对于容错,根据需要修改容错。

      • 对于区域并发,根据需要修改区域并发。

      • 对于并发模式,根据需要修改并发模式。

    4. 选择下一步以继续。

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

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

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

更新堆栈集(Amazon CLI)

担任委托管理员时,您必须在每次运行 StackSets 命令时将 --call-as 选项设置为 DELEGATED_ADMIN

--call-as DELEGATED_ADMIN
  1. 使用 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 --parameters ParameterKey=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 \ --parameters ParameterKey=MaximumExecutionFrequency,ParameterValue=Twelve_Hours \ --deployment-targets OrganizationalUnitIds='["ou-rcuk-1x5j1lwo", "ou-rcuk-slr5lh0a"]' \ --regions '["us-west-2","us-east-1"]'

    要指定 CloudFormation 如何执行此堆栈集操作的首选项,请指定 --operation-preferences 选项,如以下示例所示。出于本示例的目的,我们使用的是计数而不是百分比。要改为应用百分比,请使用 FailureTolerancePercentageMaxConcurrentPercentage

    --operation-preferences FailureToleranceCount=0,MaxConcurrentCount=1
    注意

    MaxConcurrentCount 的值依赖于 FailureToleranceCount 的值。MaxConcurrentCount 最多比 FailureToleranceCount 多 1。

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

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