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

将堆栈添加到堆栈集

在创建堆栈集时,您可以为该堆栈集创建堆栈。Amazon CloudFormation 还允许您在创建堆栈集后的任何时间添加更多堆栈以用于其他账户和区域。您可以使用 Amazon CloudFormation 控制台或者在 Amazon CLI 中使用 Amazon CloudFormation 命令添加堆栈实例。在此过程中,我们将其他区域的堆栈实例添加到我们在创建堆栈集中创建的堆栈集。

使用 Amazon Web Services Management Console 将堆栈实例添加到堆栈集

  1. 打开 Amazon CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation

  2. 从导航窗格中,选择 StackSets (堆栈集)。在 StackSets(堆栈集)页面上,选择您在 创建堆栈集 中创建的堆栈集。

  3. 选定堆栈集后,从 Actions(操作)菜单中选择 Add new stacks to StackSet(将新堆栈添加到堆栈集)。

    “管理堆栈集中的堆栈”页面
  4. Set deployment options (设置部署选项) 页面上,提供账户和要为堆栈集添加堆栈的区域。

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

    1. [自行管理权限] 对于 Deployment targets (部署目标),选择 Deploy stacks in accounts (在账户中部署堆栈)。在文本框中粘贴您的目标账号,并使用逗号分隔多个号码。

      [服务托管权限] 对于 Deployment targets (部署目标),请选择您组织中的、要向其部署的账户。

      • 选择 Deploy to organization (部署到组织) 可部署到您组织中的所有账户。

        将堆栈实例部署到组织中的所有账户。
      • 选择 Deploy to organizational units (OUs) (部署到组织单位 (OU)) 可部署到特定 OU 中的所有账户。选择 Add another OU (添加其他 OU),然后将目标 OU ID 粘贴到文本框中。对每个新目标 OU 重复执行此操作。堆栈集还可以所选目标的任何子 OU 为目标。

        将堆栈实例部署到组织内所选 OU 中的所有账户。
      注意

      如果您添加堆栈集已确定目标的 OU,则 StackSets 会在 OU 中尚未具有堆栈集中堆栈实例的任何账户中创建新堆栈实例(例如,在创建堆栈集且已禁用自动部署后添加到 OU 的账户)。

    2. 对于 Deployment regions (部署区域),选择“US West (N. California) (美国西部 (加利福尼亚北部))”。您将在美国西部(加利福尼亚北部)区域为您指定的账户创建新堆栈。

      如果您添加多个区域,Specify regions (指定区域) 下的区域顺序决定其部署顺序。

    3. 对于 Deployment options (部署选项)

      • 对于 Maximum concurrent accounts (最大并发账户数),请保留 Number (数量)1 的默认值。

        这意味着,Amazon CloudFormation 一次仅在一个账户中部署您的堆栈。

      • 对于 Failure tolerance (容错),请保留 Number (数量)0 的默认值。

        这意味着,只要您指定区域之一中有一个堆栈部署失败,Amazon CloudFormation 就会停止当前区域中的部署并取消剩余区域中的部署。如果您希望 CloudFormation 具有更高容错能力,请增加此值。

      选择下一步

  5. Specify Overrides (指定覆盖) 页面上,将属性值保留为指定值。您不会覆盖您要创建的堆栈的任何属性值。选择下一步

  6. Review 页面上,查看您的选择和堆栈集的属性。要进行更改,请在要更改属性的区域中选择 Edit。在创建新堆栈之前,您必须先选中功能区域中的复选框,以确认您使用堆栈集创建的某些资源可能需要新的 IAM 资源和权限。有关可能需要的权限的更多信息,请参阅 确认 Amazon CloudFormation 模板中的 IAM 资源。当您准备好创建堆栈实例时,请选择 Submit(提交)。

    确认所需的功能
  7. Amazon CloudFormation 开始创建您的堆栈实例。在选择 Submit (提交) 时打开的堆栈集详细信息页面中查看堆栈集中堆栈实例的创建进度和状态。完成后,您的新堆栈实例应该会在 Stack instances (堆栈实例) 选项卡上列出。

    堆栈集详细信息页面的操作选项卡

使用 Amazon CLI 将堆栈实例添加到堆栈集

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

--call-as DELEGATED_ADMIN
  1. 打开 Amazon CLI。

  2. 运行 create-stack-instances 命令。

    [自行管理权限] 提供您要为其创建堆栈实例的账户 ID。

    aws cloudformation create-stack-instances --stack-set-name my-awsconfig-stackset --accounts '["account_id"]' --regions '["eu-west-1", "us-west-2"]'

    [服务托管权限] 提供要为其创建堆栈实例的组织(根)ID 或 OU ID。在此示例中,我们使用 ou-rcuk-1x5j1lwoou-rcuk-slr5lh0a 指定 OU。

    aws cloudformation create-stack-instances --stack-set-name StackSet-myApp --deployment-targets OrganizationalUnitIds='["ou-rcuk-r1qi0wl7"]' --regions '["eu-west-1", "us-west-2"]'
    注意

    如果您添加堆栈集已确定目标的 OU,则 StackSets 会在 OU 中尚未具有堆栈集中堆栈实例的任何账户中创建新堆栈实例(例如,在创建堆栈集且已禁用自动部署后添加到 OU 的账户)。