IAM CloudFormation 模板 AWS 角色
IAM CloudFormation Templates AWS Roles
因此,如果我要为开发人员创建联合开发人员角色 (duh) 并将其以 cf 模板的形式推送到 AWS,角色的名称就是我所命名的。但出于某种原因,如果该角色是为 AWS services/resources 设计的(例如,EC2 实例的 Lambda 角色),该角色会附加一个看似随机的 12 个字符的字符串。
例如:iam-lam-role-85C94J38RDE2
为什么 CloudFormation 会自动附加这个?
CloudFormation 将随机字符附加到物理 ID,因此 2 个 IAM 角色之间不会发生名称冲突。在给定的 AWS 账户中,不能有 2 个同名的 IAM 角色。
如果您要创建 2 个 CloudFormation 堆栈,每个堆栈都包含一个具有相同逻辑 ID 的 IAM 角色(例如 MyRole
),则创建的 IAM 角色会发生名称冲突。这就是 CloudFormation 为您的 IAM 角色生成随机名称的原因(例如 MyRole-85C94J38RDE2
和 MyRole-78DM29SKFJD8
)。
如果您想为您的 IAM 角色指定一个固定的名称,您可以使用 the RoleName
property。
请参阅 CloudFormation 文档的 Name Type 部分:
By default, AWS CloudFormation generates a unique physical ID to name a resource. For example, AWS CloudFormation might name an Amazon S3 bucket with the following physical ID stack123123123123-s3bucket-abcdefghijk1
. [...]
If you want to use a custom name, specify a name property for that resource in your AWS CloudFormation template.
为AWS::IAM::Role
(which is one of the resources that supports custom names), specify the RoleName
属性提供自定义名称。
您的问题表明默认物理 ID 实际上根据 AWS::IAM::Role
资源中 AssumeRolePolicyDocument
属性 的内容而改变。我在实践中没有观察到任何此类行为,所以我认为您可能为一个资源而不是另一个资源指定了 RoleName
。
因此,如果我要为开发人员创建联合开发人员角色 (duh) 并将其以 cf 模板的形式推送到 AWS,角色的名称就是我所命名的。但出于某种原因,如果该角色是为 AWS services/resources 设计的(例如,EC2 实例的 Lambda 角色),该角色会附加一个看似随机的 12 个字符的字符串。
例如:iam-lam-role-85C94J38RDE2
为什么 CloudFormation 会自动附加这个?
CloudFormation 将随机字符附加到物理 ID,因此 2 个 IAM 角色之间不会发生名称冲突。在给定的 AWS 账户中,不能有 2 个同名的 IAM 角色。
如果您要创建 2 个 CloudFormation 堆栈,每个堆栈都包含一个具有相同逻辑 ID 的 IAM 角色(例如 MyRole
),则创建的 IAM 角色会发生名称冲突。这就是 CloudFormation 为您的 IAM 角色生成随机名称的原因(例如 MyRole-85C94J38RDE2
和 MyRole-78DM29SKFJD8
)。
如果您想为您的 IAM 角色指定一个固定的名称,您可以使用 the RoleName
property。
请参阅 CloudFormation 文档的 Name Type 部分:
By default, AWS CloudFormation generates a unique physical ID to name a resource. For example, AWS CloudFormation might name an Amazon S3 bucket with the following physical ID
stack123123123123-s3bucket-abcdefghijk1
. [...]If you want to use a custom name, specify a name property for that resource in your AWS CloudFormation template.
为AWS::IAM::Role
(which is one of the resources that supports custom names), specify the RoleName
属性提供自定义名称。
您的问题表明默认物理 ID 实际上根据 AWS::IAM::Role
资源中 AssumeRolePolicyDocument
属性 的内容而改变。我在实践中没有观察到任何此类行为,所以我认为您可能为一个资源而不是另一个资源指定了 RoleName
。