将堆栈导入 Amazon CloudFormation StackSets
Amazon CloudFormation 堆栈导入操作可以将现有堆栈导入到新的或现有的堆栈集中,以便您可以在一次操作中将现有堆栈迁移到堆栈集。StackSets 扩展了堆栈的功能,因此您可以通过一次操作跨多个账户和区域创建、更新或删除堆栈。通过指定要导入的堆栈的堆栈 ID,使用堆栈导入操作将最多 10 个堆栈导入到与源堆栈位于同一账户中的新堆栈集中,或者在不同的管理员账户和区域中导入最多 10 个堆栈。任何支持 StackSets 的地方都可以导入堆栈。有关 StackSets 区域支持的信息,请参阅 StackSets 区域支持。
例如,如果您的堆栈指定了跨多个账户的管理员 Amazon Identity and Access Management(IAM)角色,则可以将该堆栈导入到堆栈集中。通过使用堆栈导入,您可以避免停机和中断,而无需删除和重新创建这些资源。将堆栈导入到堆栈集中之后,原始堆栈将成为新生成的堆栈集的堆栈实例。
有关将现有堆栈导入到堆栈集中的更多详细信息,请参阅以下部分。
堆栈导入的要求
在将堆栈导入到堆栈集中之前,请确保您了解以下要求:
-
堆栈导入功能需要管理员账户,您可以在其中创建堆栈集和包含堆栈的目标账户。
-
目标账户必须具有与堆栈 ID 或 ARN 的输入结合使用
GetTemplate操作的权限。因此,必须向您的管理员账户授予 AWSCloudFormationStackSetsAdminstration 或 AWSCloudFormationStackSetsExectionRole 权限。 -
堆栈只能属于一个堆栈集。
-
您可以通过在堆栈导入操作中明确指定标签作为参数来为堆栈集贴堆栈标签。
-
在导入操作期间,堆栈的自定义参数覆盖不会受到影响。
-
堆栈导入操作支持创建具有自行管理权限的堆栈集。
-
导入堆栈时,StackSets 配额和堆栈实例适用。有关配额的更多信息,请参阅 Amazon CloudFormation 配额。
将堆栈导入堆栈集(控制台)
将堆栈导入新堆栈集
使用 Amazon Web Services Management Console 将堆栈导入新堆栈集
要将现有堆栈导入到堆栈集中,请确定包含要导入的资源的堆栈。
通过以下网址登录 Amazon Web Services Management Console并打开 Amazon CloudFormation 控制台:https://console.amazonaws.cn/cloudformation
。 -
从导航窗格中,选择 StackSets (堆栈集)。
-
在 StackSets (堆栈集) 页面顶部,选择 Create StackSet (创建堆栈集)。
-
在 Choose a template (选择模板) 页面上,通过以下其中一个选项指定模板,然后选择 Next (下一步)。
-
选择 Amazon S3 URL,然后在文本框中指定模板的 URL。
-
选择 Upload a template file (上传模板文件),浏览您的模板。
-
选择 From stack ID (源堆栈 ID),输入您的堆栈 ID。
-
-
在 Specify StackSet details (指定 StackSet 详细信息) 页面上,输入要创建的堆栈集的名称,然后选择Next (下一步)。
(可选)输入堆栈集的描述。
-
在 Configure StackSet options (配置 StackSet 选项) 页面上,查看您的选择并选择 Next (下一步)。
-
在 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 个堆栈。
-
查看您的部署选项并选择 Next (下一步)。
-
在 Review 页面上,查看您的选择和堆栈集的属性。准备好将堆栈导入堆栈集时,选择 Submit (提交)。
结果:导入的堆栈现在是指定堆栈集的堆栈实例。要了解有关堆栈导入状态的更多信息,请参阅堆栈集和堆栈实例状态代码。
将堆栈导入现有堆栈集
使用 Amazon Web Services Management Console 将堆栈导入现有堆栈集
要将现有堆栈导入到堆栈集中,请确定包含要导入的资源的堆栈。
通过以下网址登录 Amazon Web Services Management Console并打开 Amazon CloudFormation 控制台:https://console.amazonaws.cn/cloudformation
。 -
从导航窗格中,选择 StackSets (堆栈集)。
-
在 StackSets 页面上,选择要将堆栈导入到的堆栈集。
-
选定堆栈集后,从 Actions (操作) 菜单中选择 Add stacks to StackSet (将堆栈添加到堆栈集)。
-
在 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 个堆栈。
-
选择 Next (下一步)。
-
在 Specify overrides (指定覆盖) 页面上,查看您的选择并选择 Next (下一步)。
-
在 Review 页面上,查看您的选择和堆栈集的属性。当您准备好创建堆栈集时,选择 Submit (提交)。
结果:导入的堆栈现在是指定堆栈集的堆栈实例。要了解有关堆栈导入状态的更多信息,请参阅堆栈集和堆栈实例状态代码。
将堆栈导入堆栈集 (Amazon CLI)
将堆栈导入堆栈集
要将现有堆栈导入到堆栈集中,请确定包含要导入的资源的堆栈。在此示例中,要导入的堆栈是 。arn:123456789101:us-east-1:StackToImport
-
从堆栈 ID 创建堆栈集。
create-stackset --stack-id "arn:123456789101:us-east-1:StackToImport" --stackSetName "SingleStackSetName" --permission-model "SELF_MANAGED" --administration-role-arn "AdminRole" --execution-role-name "ExecutionRole" -
将指定的堆栈导入堆栈集。
import-stack-to-stackset --stack-ids "arn:123456789101:us-east-1:StackToImport" --stackSet "SingleStackSetName" --mutate --permission-model SELF_MANAGED --administration-role-arn "AdminRole" --execution-role-name "ExecutionRole" -
将导入的堆栈克隆到其他区域和账户中。
create-stack-instances --stack-set-name "StackSetToWhichStackimported" --accounts "123556789101" --regions "us-east-1"
将堆栈导入堆栈集
要将现有堆栈导入到堆栈集中,请确定包含要导入的资源的堆栈。在此示例中,要导入的堆栈是 和 arn:123456789101:us-east-1:StackToImport1。arn:123456789101:us-east-1:StackToImport2
-
从堆栈 ID 创建堆栈集。
create-stackset --stack-id "arn:123456789101:us-east-1:StackToImport" --stackSetName "StackSetName" --permission-model "SELF_MANAGED" --administration-role-arn "AdminRole" --execution-role-name "ExecutionRole" -
将指定的堆栈导入堆栈集。
import-stacks-to-stackset --stack-ids "arn:123456789101:us-east-1:StackToImport1,arn:123456789101:us-east-1:StackToImport2" --stackSet "StackSetName" --permission-model SELF_MANAGED --administration-role-arn "AdminRole" --execution-role-name "ExecutionRole" -
将导入的堆栈克隆到其他区域和账户中。
create-stack-instances --stack-set-name "" --accounts "123456789012" --regions "us-east-1"StackSetName
恢复堆栈导入操作
要恢复堆栈导入操作,请完成以下任务:
-
为删除堆栈实例后要保留的每个资源指定一个
Retain的DeletionPolicy属性。有关更多信息,请参阅恢复导入操作。 -
从堆栈集中删除堆栈实例。有关更多信息,请参阅从堆栈集中删除堆栈实例。
-
删除堆栈集。有关更多信息,请参阅删除堆栈集。
结果:恢复操作已删除堆栈实例并保留堆栈的资源。