为什么亚马逊建议在 AWS IAM 资源名称中包含区域?
Why do Amazon suggest including the region in AWS IAM resource names?
IAM 资源是全球性的,这意味着它们并不孤立在特定的 AWS 区域内。但是,IAM 角色的文档包括 warning:
Important
Naming an IAM resource can cause an unrecoverable error if you reuse the same template in multiple regions. To prevent this, we recommend using FN::Join and AWS::Region to create a region-specific name, as in the following example ...
他们说的是哪种“不可恢复的错误”? cloudformation 会不会创建资源失败,还是会卡在某种奇怪的状态?
我们拥有的包含 IAM 资源的堆栈仅包含 IAM 资源,所以我想我可以忽略此警告。
他们希望您注意的问题是 IAM 是一个全局命名空间,如果您不手动命名空间资源,这可能会导致问题。
这是一个例子:
- eu-central-1 中的 Stack 1 创建了一个名为
AppAdmin
的角色
- eu-west-1 中的堆栈 2 创建名称为
AppAdmin
的角色 - 此堆栈将无法创建或更新
这种故障通常不会危及生命,它只是意味着,您的部署将被破坏。
如果是对现有堆栈的更新,将执行回滚。
如果是新的堆栈,堆栈将无法创建,您需要在再次推出之前手动删除堆栈(默认情况下,孤立的资源将被删除)。
您可以按照建议为资源命名空间来简单地避免此问题:
- eu-central-1 中的 Stack 1 创建了一个名为
AppAdmin-eu-central-1
的角色
- eu-west-1 中的 Stack 2 创建了一个名为
AppAdmin-eu-west-1
的角色
现在大家都很开心!
(S3 Bucket 名称和其他具有全局命名空间的资源也是如此)
IAM 资源是全球性的,这意味着它们并不孤立在特定的 AWS 区域内。但是,IAM 角色的文档包括 warning:
Important
Naming an IAM resource can cause an unrecoverable error if you reuse the same template in multiple regions. To prevent this, we recommend using FN::Join and AWS::Region to create a region-specific name, as in the following example ...
他们说的是哪种“不可恢复的错误”? cloudformation 会不会创建资源失败,还是会卡在某种奇怪的状态?
我们拥有的包含 IAM 资源的堆栈仅包含 IAM 资源,所以我想我可以忽略此警告。
他们希望您注意的问题是 IAM 是一个全局命名空间,如果您不手动命名空间资源,这可能会导致问题。
这是一个例子:
- eu-central-1 中的 Stack 1 创建了一个名为
AppAdmin
的角色
- eu-west-1 中的堆栈 2 创建名称为
AppAdmin
的角色 - 此堆栈将无法创建或更新
这种故障通常不会危及生命,它只是意味着,您的部署将被破坏。 如果是对现有堆栈的更新,将执行回滚。 如果是新的堆栈,堆栈将无法创建,您需要在再次推出之前手动删除堆栈(默认情况下,孤立的资源将被删除)。
您可以按照建议为资源命名空间来简单地避免此问题:
- eu-central-1 中的 Stack 1 创建了一个名为
AppAdmin-eu-central-1
的角色
- eu-west-1 中的 Stack 2 创建了一个名为
AppAdmin-eu-west-1
的角色
现在大家都很开心!
(S3 Bucket 名称和其他具有全局命名空间的资源也是如此)