我可以使用 CloudFormation StackSets 在我自己的账户中部署到多个区域吗?

Dav*_*vid 4 amazon-web-services aws-cloudformation

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

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

不幸的是,这并没有奏效,他说:

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

因此,我对此进行了研究,并发现了有关如何解决该问题的教程:

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

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

AWSCloudFormationStackSetExecutionRole 已存在

那么这可能吗?或者我应该创建一个脚本,使用 CLI 在我帐户内的所有区域部署正常的 CloudFormation 堆栈?

Dav*_*vid 6

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

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

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

arn:aws:iam::<your account number>:role/AWSCloudFormationStackSetAdministrationRole
Run Code Online (Sandbox Code Playgroud)