创建具有自行管理权限的 Amazon CloudFormation StackSet
本主题介绍如何创建具有自行管理权限的 StackSet,以便跨 Amazon Web Services 账户和区域部署堆栈。
注意
在此之前,您必须首先创建 StackSet 所需的 IAM 角色,以便在 StackSet 的管理账户与需要部署堆栈的账户之间建立可信关系。有关更多信息,请参阅授予自行管理的权限。
创建具有自行管理权限的 StackSet(控制台)
创建 StackSet
登录到 Amazon Web Services Management Console 并打开 Amazon CloudFormation 控制台 https://console.aws.amazon.com/cloudformation
。 -
在屏幕顶部的导航栏中,选择要从中管理 StackSet 的 Amazon Web Services 区域。
-
从导航窗格中,选择 StackSets。
-
从 StackSets 页面顶部,选择创建 StackSet。
-
在权限下,选择自助服务权限,然后选择您创建的 IAM 角色。
-
在先决条件 - 准备模板下,选择模板已就绪。
-
在 Specify template (指定模板) 下,选择指定包含堆栈模板的 S3 存储桶的 URL,或者上传堆栈模板文件。然后选择下一步。
-
在指定 StackSet 详细信息页面上,提供 StackSet 名称,指定所有参数,然后选择下一步。
-
选择下一步以继续。
-
在 Configure StackSet options (配置堆栈集选项) 页面上,在 Tags (标签) 下指定要应用于堆栈中资源的所有标签。有关如何在 Amazon 中使用标签的更多信息,请参阅《Amazon 账单与成本管理 User Guide》中的 Organizing and tracking costs using Amazon cost allocation tags。
-
在执行配置中,请选择活动,启用 CloudFormation 的优化操作处理:
-
为了缩短部署时间,无冲突的操作会同时运行。
-
存在冲突的操作会自动排入队列,按照请求的顺序进行处理。
如果有操作正在运行或排队,CloudFormation 会将所有传入操作排入队列,即使这些操作没有冲突。在此期间,您不能更改执行设置。
-
-
如果模板包含 IAM 资源,则对于功能,请选择我确认该模板可能会创建 IAM 资源以指定您要在模板中使用 IAM 资源。有关更多信息,请参阅确认 CloudFormation 模板中的 IAM 资源。
-
选择下一步。
-
在设置部署选项页面的向 StackSet 添加堆栈中,选择部署新堆栈。
-
对于 Accounts (账户),选择 Deploy stacks in accounts (在账户中部署堆栈)。在文本框中粘贴您的目标 Amazon Web Services 账户编号,并使用逗号分隔多个编号。
注意
如果您还想在该账户中部署堆栈,则可以将您的管理员账户 ID 也包含在其中。
-
对于指定区域,选择要在其中部署堆栈的区域。
-
对于部署选项,请执行以下操作:
-
对于最大并发账户数,请指定并发处理的账户数量。
-
在容错中,请指定每个区域允许的账户失败次数上限。达到此次数限制后,该操作将停止,不会继续到其他区域。
-
对于区域并发,请选择处理区域的方式:顺序(一次处理一个区域)或并行(并发处理多个区域)。
-
对于并发模式,请选择在操作执行期间的并发行为方式。
-
严格容错:操作失败时降低账户并发级别,保持在容错 +1 范围内。
-
软容错 – 即使失败,仍保持您指定的并发级别(最大并发账户数的值)。
-
-
-
选择下一步。
-
在审核页面上,审核您的选择。要进行更改,请在相关部分选择编辑。
-
准备好创建 StackSet 后,选择提交。
CloudFormation 会开始创建 StackSet。选择提交后会打开 StackSet 详细信息页面,可以在其中查看 StackSet 中的堆栈创建进度和状态。
创建具有自行管理权限的 StackSet(Amazon CLI)
请按照本部分中的步骤,使用 Amazon 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
)的两个 Amazon Web Services 账户(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
有关更多信息,请参阅《Amazon 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