IAM CloudFormation模板AWS角色

时间:2017-02-01 15:30:27

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

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

Ex:iam-lam-role-85C94J38RDE2

为什么CloudFormation会自动附加?

2 个答案:

答案 0 :(得分:1)

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

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

如果要为IAM角色分配固定名称,可以使用the RoleName property

答案 1 :(得分: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

相关问题