AWS CloudFormation 堆栈导入操作可以将现有堆栈导入新的或现有的堆栈集,因此您可以通过一次操作将现有堆栈迁移到堆栈集。通过使用堆栈导入,您可以避免停机和中断,而无需删除和重新创建这些资源。将堆栈导入堆栈集后,原来的堆栈将成为指定的堆栈集的堆栈实例。
自行管理式堆栈导入的注意事项
-
堆栈导入操作需要在其中创建堆栈集的管理员账户和包含堆栈的目标账户。
-
目标账户必须有权使用
GetTemplate
操作,输入堆栈 ID 或 ARN。因此,您的管理员账户必须被授予 AWSCloudFormationStackSetAdministrationRole 或 AWSCloudFormationStackSetsExectionRole 权限。
将现有堆栈导入新堆栈集(控制台)
开始之前,请标识要导入的堆栈。
登录到 AWS Management Console 并打开 AWS CloudFormation 控制台 https://console.aws.amazon.com/cloudformation
。 -
从导航窗格中,选择 StackSets (堆栈集)。
-
在 StackSets (堆栈集) 页面顶部,选择 Create StackSet (创建堆栈集)。
-
在选择模板页面上,通过以下选项之一指定模板,然后选择下一步。
-
选择 Amazon S3 URL,然后在文本框中指定您的模板的 URL。
-
选择 Upload a template file(上传模板文件),然后浏览您的模板。
-
选择 From stack ID(从堆栈 ID),然后输入堆栈 ID。
-
-
在指定堆栈集详细信息页面中,输入要创建的堆栈集的名称,然后选择下一步。
(可选)输入堆栈集的描述。
-
在配置堆栈集选项页面上,查看您的选项,然后选择下一步。
-
在设置部署选项页面上,选择将堆栈导入堆栈集。
-
在 Stacks to import(要导入的堆栈)字段中,输入要导入的堆栈的堆栈 ID。例如,
。arn:aws:cloudformation:us-east-1:123456789012:stack/StackToImport/f449b250-b969-11e0-a185-5081d0136786
(可选)选择添加另一个堆栈 ID,然后输入您要导入的另一个堆栈的堆栈 ID。每个堆栈导入操作最多可添加 10 个堆栈。
-
查看您的部署选项,然后选择下一步。
-
在 Review 页面上,查看您的选择和堆栈集的属性。准备好将堆栈导入堆栈集后,选择提交。
结果:导入的堆栈现在是指定堆栈集的堆栈实例。要了解有关堆栈导入状态的更多信息,请参阅 StackSets 状态代码。
将现有堆栈导入现有堆栈集(控制台)
开始之前,请标识要导入的堆栈。
登录到 AWS Management Console 并打开 AWS CloudFormation 控制台 https://console.aws.amazon.com/cloudformation
。 -
从导航窗格中,选择 StackSets (堆栈集)。
-
在堆栈集页面中,选择要将堆栈导入到的堆栈集。
-
选定堆栈集后,从 Actions(操作)菜单中选择 Add stacks to StackSet(将堆栈添加到堆栈集)。
-
在设置部署选项页面中,选择将堆栈导入堆栈集,然后在要导入的堆栈字段中输入要导入的堆栈的堆栈 ID。例如,
。arn:aws:cloudformation:us-east-1:123456789012:stack/StackToImport/f449b250-b969-11e0-a185-5081d0136786
(可选)选择添加另一个堆栈 ID,然后输入您要导入的另一个堆栈的堆栈 ID。每个堆栈导入操作最多可添加 10 个堆栈。
-
选择下一步。
-
在指定覆盖页面上,查看您的选择,然后选择下一步。
-
在 Review 页面上,查看您的选择和堆栈集的属性。当您准备好创建堆栈集时,选择 Submit(提交)。
结果:导入的堆栈现在是指定堆栈集的堆栈实例。要了解有关堆栈导入状态的更多信息,请参阅 StackSets 状态代码。
将堆栈导入堆栈集(AWS CLI)
将现有堆栈导入新堆栈集
以下 create-stack-set
命令将创建一个堆栈集并导入指定堆栈。要导入的堆栈由其 ARN 标识。将占位符文本替换为您自己的信息。
aws cloudformation create-stack-set \ --stack-set-name
MyStackSet
\ --stack-idarn:aws:cloudformation:us-east-1:123456789012:stack/StackToImport/466df9e0-0dff-08e3-8e2f-5088487c4896
\ --administration-role-arnarn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole
\ --execution-role-nameAWSCloudFormationStackSetExecutionRole
将现有堆栈导入现有堆栈集
以下 import-stacks-to-stack-sets
命令会将指定堆栈导入到 MyStackSet
堆栈集。要导入的堆栈由其 ARN 标识。将占位符文本替换为您自己的信息。
aws cloudformation import-stacks-to-stack-set \ --stack-set
MyStackSet
\ --stack-idsarn: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
"]'