创建具有自行管理权限的 AWS CloudFormation StackSet
本主题介绍如何创建具有自行管理权限的 StackSet,以便跨 AWS 账户和区域部署堆栈。
注意
在此之前,您必须首先创建 StackSet 所需的 IAM 角色,以便在 StackSet 的管理账户与需要部署堆栈的账户之间建立可信关系。有关更多信息,请参阅授予自行管理的权限。
创建具有自行管理权限的 StackSet(控制台)
创建 StackSet
登录到 AWS Management Console 并打开 AWS CloudFormation 控制台 https://console.aws.amazon.com/cloudformation
。 -
在屏幕顶部的导航栏中,选择要从中管理 StackSet 的 AWS 区域。
-
从导航窗格中,选择 StackSets。
-
从 StackSets 页面顶部,选择创建 StackSet。
-
在权限下,选择自助服务权限,然后选择您创建的 IAM 角色。
-
在先决条件 - 准备模板下,选择模板已就绪。
-
在 Specify template (指定模板) 下,选择指定包含堆栈模板的 S3 存储桶的 URL,或者上传堆栈模板文件。然后选择下一步。
-
在指定 StackSet 详细信息页面上,提供 StackSet 名称,指定所有参数,然后选择下一步。
-
选择下一步以继续。
-
在 Configure StackSet options (配置堆栈集选项) 页面上,在 Tags (标签) 下指定要应用于堆栈中资源的所有标签。有关如何在 AWS 中使用标签的更多信息,请参阅《AWS 账单与成本管理 User Guide》中的 Organizing and tracking costs using AWS cost allocation tags。
-
在执行配置中,请选择活动,启用 CloudFormation 的优化操作处理:
-
为了缩短部署时间,无冲突的操作会同时运行。
-
存在冲突的操作会自动排入队列,按照请求的顺序进行处理。
如果有操作正在运行或排队,CloudFormation 会将所有传入操作排入队列,即使这些操作没有冲突。在此期间,您不能更改执行设置。
-
-
如果模板包含 IAM 资源,则对于功能,请选择我确认该模板可能会创建 IAM 资源以指定您要在模板中使用 IAM 资源。有关更多信息,请参阅确认 CloudFormation 模板中的 IAM 资源。
-
选择下一步。
-
在设置部署选项页面的向 StackSet 添加堆栈中,选择部署新堆栈。
-
对于 Accounts (账户),选择 Deploy stacks in accounts (在账户中部署堆栈)。在文本框中粘贴您的目标 AWS 账户编号,并使用逗号分隔多个编号。
注意
如果您还想在该账户中部署堆栈,则可以将您的管理员账户 ID 也包含在其中。
-
对于指定区域,选择要在其中部署堆栈的区域。
-
对于部署选项,请执行以下操作:
-
对于最大并发账户数,请指定并发处理的账户数量。
-
在容错中,请指定每个区域允许的账户失败次数上限。达到此次数限制后,该操作将停止,不会继续到其他区域。
-
对于区域并发,请选择处理区域的方式:顺序(一次处理一个区域)或并行(并发处理多个区域)。
-
对于并发模式,请选择在操作执行期间的并发行为方式。
-
严格容错:操作失败时降低账户并发级别,保持在容错 +1 范围内。
-
软容错 – 即使失败,仍保持您指定的并发级别(最大并发账户数的值)。
-
-
-
选择下一步。
-
在审核页面上,审核您的选择。要进行更改,请在相关部分选择编辑。
-
准备好创建 StackSet 后,选择提交。
CloudFormation 会开始创建 StackSet。选择提交后会打开 StackSet 详细信息页面,可以在其中查看 StackSet 中的堆栈创建进度和状态。
创建具有自行管理权限的 StackSet(AWS CLI)
请按照本部分中的步骤,使用 AWS CLI 来执行以下操作:
-
创建 StackSet 容器。
-
部署堆栈实例。
创建 StackSet
-
使用 create-stack-set 命令创建一个新 StackSet(名为
)。以下示例中,使用存储在 S3 存储桶中的模板,包含将my-stackset
设置为KeyPairName
的参数。TestKey
aws cloudformation create-stack-set \ --stack-set-name
my-stackset
\ --template-urlhttps://s3.region-code.amazonaws.com/amzn-s3-demo-bucket/MyApp.template
\ --parametersParameterKey=KeyPairName,ParameterValue=TestKey
-
在 create-stack-set 命令完成后,运行 list-stack-sets 命令可查看您的 StackSet 是否已创建。您应在结果中看到新的 StackSet。
aws cloudformation list-stack-sets
-
使用 create-stack-instances 命令将堆栈部署到 StackSet 中。以下示例中,在两个区域(
和us-west-2
)的两个 AWS 账户(us-east-1
和account_ID_1
)中部署堆栈。account_ID_2
使用
--operation-preferences
选项设置并发账户处理和其他部署首选项。此示例使用基于计数的设置。请注意,MaxConcurrentCount
不得大于FailureToleranceCount
+ 1。对于基于百分比的设置,请改用FailureTolerancePercentage
或MaxConcurrentPercentage
。aws cloudformation create-stack-instances \ --stack-set-name
my-stackset
\ --accountsaccount_ID_1 account_ID_2
\ --regionsus-west-2 us-east-1
\ --operation-preferencesMaxConcurrentCount=1,FailureToleranceCount=0
有关更多信息,请参阅《AWS CloudFormation API 参考》中的 CreateStackInstances。
-
使用 describe-stack-set-operation 命令验证堆栈是否已成功创建。在
--operation-id
选项中,指定作为 create-stack-instances 输出部分内容返回的操作 ID。aws cloudformation describe-stack-set-operation \ --stack-set-name
my-stackset
\ --operation-idoperation_ID