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

Amazon CloudFormation StackSets 的自行管理堆栈导入

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

例如,如果您的堆栈跨多个账户指定管理员 Amazon Identity and Access Management(IAM)角色,则可以将该堆栈导入堆栈集。通过使用堆栈导入,您可以避免停机和中断,而无需删除和重新创建这些资源。将堆栈导入堆栈集后,原来的堆栈将成为新生成的堆栈集的堆栈实例。

堆栈导入的自行管理要求

除了 堆栈导入的要求 部分外,自行管理堆栈导入还需要以下内容。

  • 堆栈导入操作支持创建具有自行管理权限的堆栈集。

  • 堆栈导入操作需要在其中创建堆栈集的管理员账户和包含堆栈的目标账户。

  • 目标账户必须有权使用 GetTemplate 操作,输入堆栈 ID 或 ARN。因此,您的管理员账户必须被授予 AWSCloudFormationStackSetsAdminstrationAWSCloudFormationStackSetsExectionRole 权限。

将堆栈导入新堆栈集

使用 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(选择模板)页面上,通过以下选项之一指定模板,然后选择 Next(下一步)。

    • 选择 Amazon S3 URL,然后在文本框中指定您的模板的 URL。

    • 选择 Upload a template file(上传模板文件),然后浏览您的模板。

    • 选择 From stack ID(从堆栈 ID),然后输入堆栈 ID。

  5. Specify StackSet details(指定堆栈集详细信息)页面中,输入要创建的堆栈集的名称,然后选择 Next(下一步)。

    (可选)输入堆栈集的描述。

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

  7. Set deployment options(设置部署选项)页面上,选择 Import stacks to stack set(将堆栈导入堆栈集)。

  8. Stacks to import(要导入的堆栈)字段中,输入要导入的堆栈的堆栈 ID。例如,arn:123456789101:us-east-1:StackToImport

    (可选)选择 Add another stack ID(添加另一个堆栈 ID),然后输入您要导入的另一个堆栈的堆栈 ID。每个堆栈导入操作最多可添加 10 个堆栈。

  9. 查看您的部署选项,然后选择 Next(下一步)。

  10. Review 页面上,查看您的选择和堆栈集的属性。准备好将堆栈导入堆栈集后,选择 Submit(提交)。

结果:导入的堆栈现在是指定堆栈集的堆栈实例。要了解有关堆栈导入状态的更多信息,请参阅堆栈集和堆栈实例状态代码

将自行管理堆栈导入现有堆栈集

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

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

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

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

  3. StackSets(堆栈集)页面中,选择要将堆栈导入到的堆栈集。

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

  5. Set deployment options(设置部署选项)页面中,选择 Import stacks to stack set(将堆栈导入堆栈集),然后在 Stacks to import(要导入的堆栈)字段中输入要导入的堆栈的堆栈 ID。例如,arn:123456789101:us-east-1:StackToImport

    (可选)选择 Add another stack ID(添加另一个堆栈 ID),然后输入您要导入的另一个堆栈的堆栈 ID。每个堆栈导入操作最多可添加 10 个堆栈。

  6. 选择 Next(下一步)。

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

  8. Review 页面上,查看您的选择和堆栈集的属性。当您准备好创建堆栈集时,选择 Submit(提交)。

结果:导入的堆栈现在是指定堆栈集的堆栈实例。要了解有关堆栈导入状态的更多信息,请参阅堆栈集和堆栈实例状态代码

将堆栈导入堆栈集(Amazon CLI)

将堆栈导入堆栈集

要将现有堆栈导入堆栈集,请标识包含要导入资源的堆栈。在本示例中,要导入的堆栈为 arn:123456789101:us-east-1:StackToImport

  1. 通过指定要导入的 CloudFormation 堆栈的完整 ARN,从堆栈 ID 创建堆栈集。

    aws cloudformation create-stack-set \ --stack-id "arn:aws:cloudformation:us-east-1:123456789012:stack/StackToImport/f449b250-b969-11e0-a185-5081d0136786" \ --stack-set-name "SingleStackSetName" \ --permission-model "SELF_MANAGED" \ --administration-role-arn "arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole" \ --execution-role-name "AWSCloudFormationStackSetExecutionRole"
  2. 将指定的堆栈导入您的堆栈集。

    aws cloudformation import-stacks-to-stack-set \ --stack-ids "arn:aws:cloudformation:us-east-1:123456789012:stack/StackToImport/f449b250-b969-11e0-a185-5081d0136786" \ --stack-set "SingleStackSetName" \ --permission-model SELF_MANAGED \ --administration-role-arn "arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole" \ --execution-role-name "AWSCloudFormationStackSetExecutionRole"
  3. 将导入的堆栈克隆到其他区域和账户。

    aws cloudformation create-stack-instances \ --stack-set-name "StackSetToWhichStackimported" \ --accounts "123556789101" \ --regions "us-east-1"

将堆栈导入堆栈集

要将现有堆栈导入堆栈集,请标识包含要导入资源的堆栈。在本示例中,要导入的堆栈为 arn:aws:cloudformation:123456789101:us-east-1:stack/StackToImport1/f449b250-b969-11e0-a185-5081d0136786arn:aws:cloudformation:123456789101:us-east-1:stack/StackToImport2/f449b250-b969-11e0-a185-5081d0136786

  1. 从堆栈 ID 创建堆栈集。

    aws cloudformation create-stack-set \ --stack-id "arn:123456789101:us-east-1:StackToImport" \ --stack-set-name "StackSetName" \ --permission-model "SELF_MANAGED" \ --administration-role-arn "arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole" \ --execution-role-name "AWSCloudFormationStackSetExecutionRole"
  2. 将指定的堆栈导入您的堆栈集。

    aws cloudformation import-stacks-to-stackset --stack-ids "arn:aws:cloudformation:123456789101:us-east-1:stack/StackToImport1/f449b250-b969-11e0-a185-5081d0136786, arn:aws:cloudformation:123456789101:us-east-1:stack/StackToImport2/f449b250-b969-11e0-a185-5081d0136786" \ --stack-set "StackSetName" --permission-model SELF_MANAGED \ --administration-role-arn "arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole" \ --execution-role-name "AWSCloudFormationStackSetExecutionRole"
  3. 将导入的堆栈克隆到其他区域和账户。

    aws cloudformation create-stack-instances \ --stack-set-name "StackSetName" \ --accounts "123456789012" \ --regions "us-east-1"