创建具有自行管理权限的 Amazon CloudFormation StackSet - Amazon CloudFormation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

创建具有自行管理权限的 Amazon CloudFormation StackSet

本主题介绍如何创建具有自行管理权限的 StackSet,以便跨 Amazon Web Services 账户和区域部署堆栈。

注意

在此之前,您必须首先创建 StackSet 所需的 IAM 角色,以便在 StackSet 的管理账户与需要部署堆栈的账户之间建立可信关系。有关更多信息,请参阅授予自行管理的权限

创建具有自行管理权限的 StackSet(控制台)

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

  2. 在屏幕顶部的导航栏中,选择要从中管理 StackSet 的 Amazon Web Services 区域。

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

  4. StackSets 页面顶部,选择创建 StackSet

  5. 权限下,选择自助服务权限,然后选择您创建的 IAM 角色。

  6. 先决条件 - 准备模板下,选择模板已就绪

  7. Specify template (指定模板) 下,选择指定包含堆栈模板的 S3 存储桶的 URL,或者上传堆栈模板文件。然后选择下一步

  8. 指定 StackSet 详细信息页面上,提供 StackSet 名称,指定所有参数,然后选择下一步

  9. 选择下一步以继续。

  10. Configure StackSet options (配置堆栈集选项) 页面上,在 Tags (标签) 下指定要应用于堆栈中资源的所有标签。有关如何在 Amazon 中使用标签的更多信息,请参阅《Amazon 账单与成本管理 User Guide》中的 Organizing and tracking costs using Amazon cost allocation tags

  11. 执行配置中,请选择活动,启用 CloudFormation 的优化操作处理:

    • 为了缩短部署时间,无冲突的操作会同时运行。

    • 存在冲突的操作会自动排入队列,按照请求的顺序进行处理。

    如果有操作正在运行或排队,CloudFormation 会将所有传入操作排入队列,即使这些操作没有冲突。在此期间,您不能更改执行设置。

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

  13. 选择下一步

  14. 设置部署选项页面的向 StackSet 添加堆栈中,选择部署新堆栈

  15. 对于 Accounts (账户),选择 Deploy stacks in accounts (在账户中部署堆栈)。在文本框中粘贴您的目标 Amazon Web Services 账户编号,并使用逗号分隔多个编号。

    注意

    如果您还想在该账户中部署堆栈,则可以将您的管理员账户 ID 也包含在其中。

  16. 对于指定区域,选择要在其中部署堆栈的区域。

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

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

    • 容错中,请指定每个区域允许的账户失败次数上限。达到此次数限制后,该操作将停止,不会继续到其他区域。

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

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

      • 严格容错:操作失败时降低账户并发级别,保持在容错 +1 范围内。

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

  18. 选择下一步

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

  20. 准备好创建 StackSet 后,选择提交

    CloudFormation 会开始创建 StackSet。选择提交后会打开 StackSet 详细信息页面,可以在其中查看 StackSet 中的堆栈创建进度和状态。

创建具有自行管理权限的 StackSet(Amazon CLI)

请按照本部分中的步骤,使用 Amazon CLI 来执行以下操作:

  • 创建 StackSet 容器。

  • 部署堆栈实例。

创建 StackSet
  1. 使用 create-stack-set 命令创建一个新 StackSet(名为 my-stackset)。以下示例中,使用存储在 S3 存储桶中的模板,包含将 KeyPairName 设置为 TestKey 的参数。

    aws cloudformation create-stack-set \ --stack-set-name my-stackset \ --template-url https://s3.region-code.amazonaws.com/amzn-s3-demo-bucket/MyApp.template \ --parameters ParameterKey=KeyPairName,ParameterValue=TestKey
  2. create-stack-set 命令完成后,运行 list-stack-sets 命令可查看您的 StackSet 是否已创建。您应在结果中看到新的 StackSet。

    aws cloudformation list-stack-sets
  3. 使用 create-stack-instances 命令将堆栈部署到 StackSet 中。以下示例中,在两个区域(us-west-2us-east-1)的两个 Amazon Web Services 账户(account_ID_1account_ID_2)中部署堆栈。

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

    aws cloudformation create-stack-instances \ --stack-set-name my-stackset \ --accounts account_ID_1 account_ID_2 \ --regions us-west-2 us-east-1 \ --operation-preferences MaxConcurrentCount=1,FailureToleranceCount=0

    有关更多信息,请参阅《Amazon CloudFormation API 参考》中的 CreateStackInstances

  4. 使用 describe-stack-set-operation 命令验证堆栈是否已成功创建。在 --operation-id 选项中,指定作为 create-stack-instances 输出部分内容返回的操作 ID。

    aws cloudformation describe-stack-set-operation \ --stack-set-name my-stackset \ --operation-id operation_ID