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

使用 Amazon Web Services Management Console或 Amazon CLI 导入自行管理的堆栈

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

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

堆栈导入的自行管理要求

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

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

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

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

将现有堆栈导入新堆栈集(控制台)

开始之前,请标识要导入的堆栈。

  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:aws:cloudformation:us-east-1:123456789012:stack/StackToImport/f449b250-b969-11e0-a185-5081d0136786

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

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

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

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

将现有堆栈导入现有堆栈集(控制台)

开始之前,请标识要导入的堆栈。

  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:aws:cloudformation:us-east-1:123456789012:stack/StackToImport/f449b250-b969-11e0-a185-5081d0136786

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

  6. 选择下一步

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

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

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

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

将现有堆栈导入新堆栈集

以下 create-stack-set 命令将创建一个堆栈集并导入指定堆栈。要导入的堆栈由其 ARN 标识。将占位符文本替换为您自己的信息。

aws cloudformation create-stack-set \ --stack-set-name MyStackSet \ --stack-id arn:aws:cloudformation:us-east-1:123456789012:stack/StackToImport/466df9e0-0dff-08e3-8e2f-5088487c4896 \ --administration-role-arn arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole \ --execution-role-name AWSCloudFormationStackSetExecutionRole
将现有堆栈导入现有堆栈集

以下 import-stacks-to-stack-sets 命令会将指定堆栈导入到 MyStackSet 堆栈集。要导入的堆栈由其 ARN 标识。将占位符文本替换为您自己的信息。

aws cloudformation import-stacks-to-stack-set \ --stack-set MyStackSet \ --stack-ids arn:aws:cloudformation:us-east-1:123456789012:stack/StackToImport/f449b250-b969-11e0-a185-5081d0136786

要指定多个堆栈,请使用以下格式作为 --stack-ids 选项的值。

--stack-ids "arn_1" "arn_2"
将导入的堆栈克隆到其他区域和账户

运行 create-stack-instances 命令以将堆栈实例添加到堆栈集。将占位符文本替换为您自己的信息。

aws cloudformation create-stack-instances \ --stack-set-name MyStackSet \ --accounts '["account_ID_1","account_ID_2"]' \ --regions '["region_1","region_2"]'

恢复堆栈实例导入操作

要恢复堆栈导入操作,请完成以下任务:

  1. 将堆栈实例删除后要保留的每个资源的 DeletionPolicy 属性指定为 Retain。有关更多信息,请参阅 恢复导入操作

  2. 从堆栈集中删除堆栈实例。有关更多信息,请参阅 使用 CloudFormation 控制台或 Amazon CLI 删除堆栈实例

  3. 删除堆栈集。有关更多信息,请参阅 使用 CloudFormation 控制台或 Amazon CLI 删除堆栈集

结果:恢复操作删除了堆栈实例并保留了堆栈的资源。