【问题标题】:Can I use CloudFormation StackSets to deploy to multiple regions in my own account?我可以使用 CloudFormation StackSets 在我自己的账户中部署到多个区域吗?
【发布时间】:2019-02-06 02:27:08
【问题描述】:

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

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

不幸的是,它不起作用,说:

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

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

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

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

AWSCloudFormationStackSetExecutionRole 已存在

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

【问题讨论】:

  • 澄清一下...您是否从要创建堆栈的同一帐户部署堆栈集?也就是说,您上述所有内容中是否只涉及一个 AWS 账户?还是有两个帐户(一个“发件人”和一个“收件人”帐户)?
  • 不是答案,但如果您还没有看到 terraform,请看一下。它可能比 Cloudformation 堆栈集更好地满足您的目的。
  • @JohnRotenstein 只有一个帐号(往来和往来都是同一个帐号)

标签: amazon-web-services amazon-cloudformation


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    相关资源
    最近更新 更多