AWS CloudFormation StackSets 的自行管理堆栈导入 - AWS CloudFormation

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

CloudFormation 堆栈导入操作可以将现有堆栈导入新的或现有的 StackSet,因此您通过一次操作就可以将现有堆栈迁移到 StackSet。通过使用堆栈导入,您可以避免停机和中断,而无需删除和重新创建这些资源。将堆栈导入 StackSet后,原来的堆栈将成为指定的 StackSet 的堆栈实例。

自行管理式堆栈导入的注意事项
  • 堆栈导入操作需要在其中创建 StackSet 的管理员账户和包含堆栈的目标账户。

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

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

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

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

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

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

  4. 选择模板页面上,通过以下选项之一指定模板,然后选择下一步

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

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

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

  5. 指定 StackSet 详细信息页面中,输入要创建的 StackSet 的名称,然后选择下一步

    (可选)输入 StackSet 的描述。

  6. 配置堆栈集选项页面上,查看您的选项,然后选择下一步

  7. 设置部署选项页面上,选择将堆栈导入堆栈集

  8. Stacks to import(要导入的堆栈)字段中,输入要导入的堆栈的堆栈 ID。例如 arn:aws:cloudformation:us-east-1:123456789012:stack/StackToImport/f449b250-b969-11e0-a185-5081d0136786

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

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

  10. 审核页面上,检查您的选择和 StackSet 的属性。准备好将堆栈导入 StackSet 后,选择提交

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

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

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

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

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

  3. StackSet 页面中,选择要导入堆栈的 StackSet。

  4. 选择 StackSet 后,从操作菜单中选择将堆栈添加到 StackSet

  5. 设置部署选项页面中,选择将堆栈导入堆栈集,然后在要导入的堆栈字段中输入要导入的堆栈的堆栈 ID。例如 arn:aws:cloudformation:us-east-1:123456789012:stack/StackToImport/f449b250-b969-11e0-a185-5081d0136786

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

  6. 选择下一步

  7. 指定覆盖页面上,查看您的选择,然后选择下一步

  8. 审核页面上,检查您的选择和 StackSet 的属性。准备好创建 StackSet 后,选择提交

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

将堆栈导入 StackSet(AWS CLI)

将现有堆栈导入新 StackSet

以下 create-stack-set 命令将创建一个 StackSet 并导入指定堆栈。要导入的堆栈由其 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
将现有堆栈导入现有 StackSet

以下 import-stacks-to-stack-sets 命令会将指定堆栈导入到 MyStackSet StackSet。要导入的堆栈由其 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 命令会将堆栈实例添加到 StackSet。将占位符文本替换为您自己的信息。

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