首页 > 解决方案 > 我可以使用 CloudFormation StackSets 在我自己的账户中部署到多个区域吗?

问题描述

我有一个简单的 CloudFormation 堆栈,我想将它部署到我帐户中的所有区域,因此我不必手动进入每个区域来部署堆栈,或者创建一个使用 CLI 执行此操作的脚本。

我尝试使用 StackSets 执行此操作:我指出我要部署到的帐户是我自己的帐号。然后我选择了所有区域,并尝试部署。

不幸的是,它没有用,说:

账户 1234567867867 应具有与角色“AWSCloudFormationStackSetAdministrationRole”具有信任关系的“AWSCloudFormationStackSetExecutionRole”角色。

所以我研究了一下,发现了这个关于如何解决这个问题的教程:

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html

但是,在完成该过程时,它不会让我执行第二步,即创建一个信任管理员帐户的角色......我猜这是因为管理员帐户是我的帐户,所以设置信任关系不起作用,但我不确定。这是我得到的错误:

AWSCloudFormationStackSetExecutionRole 已存在

那么这甚至可能吗?或者我应该只创建一个脚本,使用 CLI 在我的账户中的所有区域部署一个普通的 CloudFormation 堆栈?

标签: amazon-web-servicesamazon-cloudformation

解决方案


答案是肯定的,您可以使用 StackSets 在您的一个帐户中跨多个区域进行部署。

您仍然需要按照我在原始问题中链接的文章中的描述创建主/子角色。在这种特殊情况下,您基本上是在说您相信自己可以使用自己的角色。但是一旦你这样做了,你应该能够设置一个 StackSet,指定你自己的帐号作为你想要部署 StackSet 的帐户,并选择你想要的所有区域。

我之前遇到问题的原因是因为显然有人已经将子角色添加到我的帐户中,所以当我尝试自己创建它时,它已经存在(导致错误)。假设没有人弄乱您的帐户,您可能不会遇到这种情况。但是,如果您确实遇到了这种情况(也许您所在的公司有很多人和我一样使用相同的账户集),那么您需要做的就是在 IAM 中找到 AWSCloudFormationStackSetExecutionRole 角色,编辑信任关系,并添加另一个信任关系到信任:

arn:aws:iam::<your account number>:role/AWSCloudFormationStackSetAdministrationRole

推荐阅读