IAM CloudFormation 模板 AWS 角色



因此,如果我为开发人员创建一个联合开发人员角色 (duh) 并以 cf 模板的形式将其推送到 AWS,则该角色的名称就是我命名的名称。但出于某种原因,如果角色是为 AWS 服务/资源代入而设计的(例如,EC2 实例的 Lambda 角色),则该角色会附加一个看似随机的 12 个字符字符串。

例如:iam-lam-role-85C94J38RDE2

为什么CloudFormation会自动附加它?

请参阅 CloudFormation 文档的名称类型部分:

默认情况下,AWS CloudFormation 会生成一个唯一的物理 ID 来命名资源。例如,AWS CloudFormation 可能会使用以下物理 ID 命名 Amazon S3 存储桶stack123123123123-s3bucket-abcdefghijk1。[...]

如果要使用自定义名称,请在 AWS CloudFormation 模板中为该资源指定名称属性。

对于AWS::IAM::Role(这是支持自定义名称的资源之一),请指定 RoleName 属性以提供自定义名称。

您的问题表明,默认物理 ID 实际上会根据AWS::IAM::Role资源中 AssumeRolePolicyDocument 属性的内容而更改。我在实践中没有观察到任何此类行为,所以我认为您可能为一种资源指定了RoleName,而不是另一种资源。

CloudFormation 将随机字符附加到物理 ID 中,因此 2 个 IAM 角色之间不会发生名称冲突。在给定的 AWS 账户中,不能有 2 个同名的 IAM 角色。

如果您要创建 2 个 CloudFormation 堆栈,每个堆栈都包含一个具有相同逻辑 ID 的 IAM 角色(例如 MyRole ),创建的 IAM 角色会出现名称冲突。这就是 CloudFormation 为您的 IAM 角色生成一个随机名称的原因(例如 MyRole-85C94J38RDE2MyRole-78DM29SKFJD8)。

如果要为 IAM 角色分配固定名称,可以使用 RoleName 属性。

相关内容

  • 没有找到相关文章

最新更新