【问题标题】:IAM CloudFormation Templates AWS RolesIAM CloudFormation 模板 AWS 角色
【发布时间】:2017-06-18 10:09:14
【问题描述】:

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

例如:iam-lam-role-85C94J38RDE2

为什么 CloudFormation 会自动附加这个?

【问题讨论】:

  • 您可以展示您的 CloudFormation 模板吗?您是否在这两种情况下都设置了 RoleName 属性?

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


【解决方案1】:

请参阅 CloudFormation 文档的 Name Type 部分:

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

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

对于AWS::IAM::Roleresources that supports custom names 之一),指定RoleName 属性以提供自定义名称。

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

【讨论】:

    【解决方案2】:

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

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

    如果您想为您的 IAM 角色分配一个固定名称,您可以使用the RoleName property

    【讨论】:

      猜你喜欢
      • 2017-07-26
      • 2021-08-20
      • 2019-12-29
      • 2017-05-13
      • 2017-06-25
      • 2020-02-27
      • 2019-09-28
      • 2017-06-17
      • 2020-11-04
      相关资源
      最近更新 更多