【问题标题】:Why do Amazon suggest including the region in AWS IAM resource names?为什么 Amazon 建议在 AWS IAM 资源名称中包含区域?
【发布时间】:2021-06-25 08:42:16
【问题描述】:

IAM 资源是全球性的,这意味着它们不会在特定 AWS 区域内隔离。但是,IAM 角色的文档包括 warning

重要

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

他们在谈论什么样的“不可恢复的错误”? cloudformation 会无法创建资源,还是会陷入某种奇怪的状态?

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

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation amazon-iam


    【解决方案1】:

    他们希望您注意的问题是 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 存储桶名称和其他具有全局命名空间的资源也是如此)

    【讨论】:

    • 很公平。我觉得最好只创建一次资源,而不是创建多个具有不同名称的相同资源。我将忽略他们的建议,因为就像我提到的那样,我们在他们自己的堆栈中拥有我们的 IAM 资源,因此无法在新区域中重新创建它们是可以接受的行为。
    • 假设你有不同版本的应用部署在不同的地区,它们的资源需要不同的能力/特权;-) - 疯狂的方法......
    猜你喜欢
    • 1970-01-01
    • 2011-12-02
    • 2015-08-15
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多