为什么亚马逊建议在AWS IAM资源名称中包含该地区



IAM资源是全局性的,这意味着它们在特定的AWS区域内并不孤立。但是,IAM角色的文档中包含一条警告:

重要

如果在多个区域中重复使用同一模板,命名IAM资源可能会导致不可恢复的错误。为了防止这种情况,我们建议使用FN::Join和AWS::Region来创建特定于区域的名称,如下例所示。。。

什么样的"不可恢复的错误";他们在说什么?云形成会不会只是无法创建资源,或者事情会陷入某种奇怪的状态?

我们拥有的仅包含IAM资源的堆栈包含IAM资源,因此我怀疑我可能可以忽略此警告。

他们希望您注意的问题是IAM是一个全局命名空间,如果您不手动命名资源,这可能会导致问题。

这里有一个例子:

  • eu-central-1中的堆栈1创建一个名为AppAdmin的角色
  • eu-west-1中的堆栈2创建名称为AppAdmin-的角色,此堆栈将无法创建或更新

此故障通常不会危及生命,只是意味着您的部署将被破坏。如果是对现有堆栈的更新,则将执行回滚。如果它是一个新堆栈,则该堆栈将无法创建,您需要手动删除该堆栈,然后再将其推出(默认情况下,孤立的资源将被删除(。

您可以简单地通过按建议对资源进行命名来避免这个问题:

  • eu-central-1中的堆栈1创建一个名为AppAdmin-eu-central-1的角色
  • eu-west-1中的堆栈2创建一个名为AppAdmin-eu-west-1的角色

现在大家都很开心!

(S3 Bucket名称和其他具有全局名称空间的资源也是如此(

最新更新