amazon-web-services - 我可以使用 CloudFormation StackSets 在我自己的账户中部署到多个区域吗?
问题描述
我有一个简单的 CloudFormation 堆栈,我想将它部署到我帐户中的所有区域,因此我不必手动进入每个区域来部署堆栈,或者创建一个使用 CLI 执行此操作的脚本。
我尝试使用 StackSets 执行此操作:我指出我要部署到的帐户是我自己的帐号。然后我选择了所有区域,并尝试部署。
不幸的是,它没有用,说:
账户 1234567867867 应具有与角色“AWSCloudFormationStackSetAdministrationRole”具有信任关系的“AWSCloudFormationStackSetExecutionRole”角色。
所以我研究了一下,发现了这个关于如何解决这个问题的教程:
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html
但是,在完成该过程时,它不会让我执行第二步,即创建一个信任管理员帐户的角色......我猜这是因为管理员帐户是我的帐户,所以设置信任关系不起作用,但我不确定。这是我得到的错误:
AWSCloudFormationStackSetExecutionRole 已存在
那么这甚至可能吗?或者我应该只创建一个脚本,使用 CLI 在我的账户中的所有区域部署一个普通的 CloudFormation 堆栈?
解决方案
答案是肯定的,您可以使用 StackSets 在您的一个帐户中跨多个区域进行部署。
您仍然需要按照我在原始问题中链接的文章中的描述创建主/子角色。在这种特殊情况下,您基本上是在说您相信自己可以使用自己的角色。但是一旦你这样做了,你应该能够设置一个 StackSet,指定你自己的帐号作为你想要部署 StackSet 的帐户,并选择你想要的所有区域。
我之前遇到问题的原因是因为显然有人已经将子角色添加到我的帐户中,所以当我尝试自己创建它时,它已经存在(导致错误)。假设没有人弄乱您的帐户,您可能不会遇到这种情况。但是,如果您确实遇到了这种情况(也许您所在的公司有很多人和我一样使用相同的账户集),那么您需要做的就是在 IAM 中找到 AWSCloudFormationStackSetExecutionRole 角色,编辑信任关系,并添加另一个信任关系到信任:
arn:aws:iam::<your account number>:role/AWSCloudFormationStackSetAdministrationRole
推荐阅读
- ionic4 - 使用 SQLite TypeError:无法读取 null 的属性“事务”
- python - 如何从 Python 中的对象数组中访问对象
- terraform - Terraform 和 Azure 数据资源管理器
- excel - 从 2 个工作簿更新匹配值
- syntax-error - 我是否正确理解了该功能及其用途?另外,语法错误?
- arrays - 使用公式来组织具有不同数据量的列
- typescript - 是否可以拒绝在打字稿中直接使用 javascript 属性?
- php - PHP Excel无法保存在文件夹中
- python - 学习 Python。tkinter widget.Grid 管理器出现问题并将滚动条添加到列表框小部件
- c++ - 使用 istream 参数读取的 Istream 函数