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

Amazon CloudFormation StackSets 的服务托管堆栈导入

Amazon CloudFormation 堆栈导入操作可以将现有堆栈导入新的或现有的堆栈集,因此您可以通过一次操作将现有堆栈迁移到堆栈集。StackSets 扩展了堆栈的功能,因此您可以在一次操作中跨多个账户和区域创建、更新或删除堆栈。

堆栈导入的服务托管要求

除了 堆栈导入的要求 部分外,服务托管堆栈导入还需要以下内容。

  • 堆栈导入操作需要一个管理账户或委派管理员账户,您可以在其中管理关联的 Amazon Organizations 组织,例如使用 StackSets 启用信任访问。

  • 目标账户必须是由管理账户或委派管理员账户管理的 Amazon Organizations 的成员。

  • 目标堆栈位于其中一个目标 OU 中。

  • 目标账应为 Amazon Organizations 的成员。

  • Amazon Organizations 访问对于 Organizations 应处于 ACTIVATED 状态。

  • 所导入的堆栈应位于任意成员账户中,而不是管理账户中。

将服务托管堆栈导入新堆栈集(控制台)

使用 Amazon Web Services Management Console 将堆栈导入新堆栈集

要将新堆栈导入堆栈集,请标识包含要导入资源的堆栈。

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

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

  3. StackSets (堆栈集) 页面顶部,选择 Create StackSet (创建堆栈集)

  4. 将以下信息添加到 Choose a template(选择模板)页面。

    1. 对于 StackSet permission model(堆栈集权限模型),选择 Service-managed permissions(服务托管权限)。

    2. 对于 Prerequisite - Prepare template(先决条件 - 准备模板),请选择 Template is ready(模板已就绪)。

      1. 对于 Amazon S3 URL,在 Amazon S3 URL 字段中输入您的 Amazon S3 URL。

      2. 对于 Upload a template file(上传模板文件),选择本地计算机中的 CloudFormation 模板。

    接受您的设置并选择 Next(下一步)。

  5. 将以下信息添加到 Specify StackSet details(指定堆栈集详细信息)页面。

    1. StackSet name(堆栈集名称)框中输入堆栈集名称。

    2. (可选)在 StackSet description(堆栈集描述)部分中输入描述。

    Configure StackSet options(配置堆栈集选项)页面上,查看您的选项,然后选择 Next(下一步)。

  6. 将以下信息添加到 Set deployment options(设置部署选项)页面。

    1. 对于 Add stacks to stack set(将堆栈添加到堆栈集),选择 Import stacks to stack set(将堆栈导入堆栈集)。

    2. 对于 Stacks to import(要导入的堆栈),选择堆栈导入方法。

      1. 对于 Stack ID(堆栈 ID),输入您的堆栈 ID。

      2. 对于 Stack URL(堆栈 URL),输入 Amazon S3 URL。

  7. 将以下信息添加到 Associate organizational units(关联组织单位)部分。

    1. 选择 Associate with organization(与组织关联)以使用根 OU。

    2. 选择 Associate with organizational units (OUs) [与组织单位(OU)关联] 以输入要导入堆栈的父 OU ID。例如,如果 Stack 1Stack 2 位于 OU1 下,而 Stack 3 位于 OU2 下,则输入 OU1OU2

    接受您的设置并选择 Next(下一步)。

  8. Review(审核)页面上,检查您的设置,然后选择 Submit(提交)。

创建服务托管堆栈并将其导入现有堆栈集(控制台)

要将现有堆栈导入新堆栈集,请标识包含要导入资源的堆栈。

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

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

  3. StackSets (堆栈集) 页面顶部,选择 Create StackSet (创建堆栈集)

  4. 将以下信息添加到 Choose a template(选择模板)页面。

    1. 对于 StackSet permission model(堆栈集权限模型),选择 Service-managed permissions(服务托管权限)。

    2. 对于 Prerequisite - Prepare template(先决条件 - 准备模板),请选择 Template is ready(模板已就绪)。

      1. 对于 Amazon S3 URL,在 Amazon S3 URL 字段中输入您的 Amazon S3 URL。

      2. 对于 Upload a template file(上传模板文件),选择本地计算机中的 CloudFormation 模板。

    接受您的设置并选择 Next(下一步)。

  5. 将以下信息添加到 Specify StackSet details(指定堆栈集详细信息)页面。

    1. StackSet name(堆栈集名称)框中输入堆栈集名称。

    2. (可选)在 StackSet description(堆栈集描述)部分中输入描述。

    Configure StackSet options(配置堆栈集选项)页面上,查看您的选项,然后选择 Next(下一步)。

  6. 将以下信息添加到 Set deployment options(设置部署选项)页面。

    1. 对于 Add stacks to stack set(将堆栈添加到堆栈集),请选择 Deploy new stacks(部署新堆栈)。

  7. 将以下信息添加到 Associate organizational units(关联组织单位)部分。

    1. 选择 Associate with organization(与组织关联)以使用根 OU。

    2. 选择 Associate with organizational units (OUs) [与组织单位(OU)关联] 以输入要导入堆栈的父 OU ID。例如,如果 Stack 1Stack 2 位于 OU1 下,而 Stack 3 位于 OU2 下,则输入 OU1OU2

  8. 对于 Specify regions(指定区域)和 Deployment options(部署选项),查看您的选择。

    接受您的设置并选择 Next(下一步)。

  9. Review(审核)页面上,检查您的设置,然后选择 Submit(提交)。

将服务托管堆栈导入现有堆栈集(控制台)

选择堆栈集并确定您要导入的堆栈。

将堆栈导入现有堆栈集
  1. 登录到 Amazon Web Services Management Console 并打开 Amazon CloudFormation 控制台 https://console.aws.amazon.com/cloudformation

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

  3. 选择要将堆栈导入到的堆栈集,然后从 Actions(操作)下拉列表中选择 Add stacks to StackSet(将堆栈添加到堆栈集)。

  4. 将以下信息添加到 Set deployment options(设置部署选项)页面。

    1. 对于 Add stacks to stack set(将堆栈添加到堆栈集),选择 Import stacks to stack set(将堆栈导入堆栈集)。

    2. 将以下信息添加到 Stacks to import(要导入的堆栈)部分。

      1. 对于 Stack ID(堆栈 ID),输入您的堆栈 ID。

      2. 对于 Stack URL(堆栈 URL),输入 Amazon S3 URL。

    3. 将以下信息添加到 Associate organizational units(关联组织单位)部分。

      1. 选择 Associate with organization(与组织关联)以使用根 OU。

      2. 选择 Associate with organizational units (OUs) [与组织单位(OU)关联] 以输入要导入堆栈的父 OU ID。例如,如果 Stack 1Stack 2 位于 OU1 下,而 Stack 3 位于 OU2 下,则输入 OU1OU2

      接受您的设置并选择 Next(下一步)。

  5. 查看 Specify overrides(指定覆盖)页面,然后选择 Next(下一步)。

  6. 确认并检查 Review(审核)页面,然后选择 Submit(提交)。

将服务托管堆栈导入堆栈集(Amazon CLI)

创建堆栈集后,可以通过传递所导入堆栈的堆栈 ID 来导入堆栈。您还可以传递要将其映射到的 OU ID 列表。

StackSets 将在这些 OU 中导入用户提供的堆栈,并将这些 OU 用作堆栈集的部署目标。输入中显示的堆栈 ID 将在内部映射到 OU ID 列表输入中最近的 OU。如果堆栈不属于输入列表中的现有 OU ID,则 Amazon CLI 将返回 StackNotFoundException 错误。

import-stacks-to-stack-set 操作为 OU ID 输入中的堆栈创建堆栈实例。以下 Amazon CLI 示例使用 import-stacks-to-stack-set 操作将堆栈导入堆栈集。

  • 要使用 import-stacks-to-stack-sets 操作,请指定要导入到堆栈集的 stack-idsstack-ids-url

    aws cloudformation import-stacks-to-stack-set \ --stack-set-name ServiceMangedStackSet \ --stack-ids "arn:123456789012:us-east-1:Stack1" \ --organizational-unit-ids ou-examplerootid111-exampleouid111
    aws cloudformation import-stacks-to-stack-set \ --stack-set-name ServiceMangedStackSet \ --stack-ids-url https://DOC-EXAMPLE-BUCKET \ --organizational-unit-ids ou-examplerootid111-exampleouid111
注意

import-stacks-to-stack-sets 操作要求您指定至少一个组织单位 ID(OU ID),以便它可以将要导入的堆栈关联到该特定 OU。此操作不会为关联 OU 中的其他成员账户创建堆栈实例。要更新关联 OU 的成员账户,请使用 create-stack-instancesupdate-stack-instances

create-stack-set 使用用户提供的模板(直接上传或来自 Amazon S3)为 OU 下的所有账户创建堆栈实例。以下 Amazon CLI 示例使用 create-stack-set 操作将堆栈导入新堆栈集。

  • 要使用 create-stack-set 操作,请指定堆栈集名称并将堆栈导入新创建的堆栈集。

    aws cloudformation create-stack-set \ --template-url https://DOC-EXAMPLE-BUCKET \ --permission-model SERVICE_MANAGED \ --auto-deployment Enabled=true