AWS::IAM::Role - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::IAM::Role

为您的 AWS 账户创建新角色。有关角色的更多信息,请转到 IAM 角色。有关角色名称和可以创建的角色数量限制的信息,请转到 IAM 用户指南 中的 IAM 实体的限制

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::IAM::Role", "Properties" : { "AssumeRolePolicyDocument" : Json, "Description" : String, "ManagedPolicyArns" : [ String, ... ], "MaxSessionDuration" : Integer, "Path" : String, "PermissionsBoundary" : String, "Policies" : [ Policy, ... ], "RoleName" : String, "Tags" : [ Tag, ... ] } }

YAML

Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Json Description: String ManagedPolicyArns: - String MaxSessionDuration: Integer Path: String PermissionsBoundary: String Policies: - Policy RoleName: String Tags: - Tag

属性

AssumeRolePolicyDocument

与此角色关联的信任策略。信任策略定义哪些实体可以代入该角色。只能将一个信任策略与一个角色关联。有关可用于担任角色的策略的示例,请参阅模板示例。有关可以在 IAM 策略中使用的元素的更多信息,请参阅 IAM 用户指南中的 IAM 策略元素参考

必需:是

类型:Json

Update requires: No interruption

Description

您提供的角色的描述。

必需:否

类型:字符串

最高1000

模式[\p{L}\p{M}\p{Z}\p{S}\p{N}\p{P}]*

Update requires: No interruption

ManagedPolicyArns

您要附加到用户的 IAM 托管策略的 Amazon 资源名称 (ARN) 的列表。

有关 ARN 的更多信息,请参阅 AWS 一般参考 中的 Amazon 资源名称 (ARN) 和 AWS 服务命名空间

必需:否

类型:字符串列表

Update requires: No interruption

MaxSessionDuration

要为指定角色设置的最大会话持续时间(以秒为单位)。如果未指定此设置的值,则应用默认最大值(1 小时)。该设置可以具有 1 小时到 12 小时之间的值。

从 AWS CLI 或 API 中代入角色的任何人均可使用 DurationSeconds API 参数或 duration-seconds CLI 参数请求更长的会话。MaxSessionDuration 设置确定可使用 DurationSeconds 参数请求的最大持续时间。如果用户未指定 DurationSeconds 参数值,则默认情况下其安全凭证的有效期为 1 小时。这在您使用 AssumeRole* API 操作或 assume-role* CLI 操作时适用,但在您使用这些操作创建控制台 URL 时不适用。有关更多信息,请参阅 IAM 用户指南 中的使用 IAM 角色

必需:否

类型:整数

最低3600

最高43200

Update requires: No interruption

Path

角色的路径。有关路径的更多信息,请参阅 IAM 用户指南 中的 IAM 标识符

此参数为可选项。如果不指定路径,则默认为斜杠 (/)。

此参数允许(通过其正则表达式模式)使用字符串,该字符串由斜杠 (/) 本身组成,或者必须为以斜杠开头和结尾的字符串。此外,它可以包含从 ! (\u0021) 到 DEL 字符 (\u007F) 的任意 ASCII 字符,包括大多数标点符号字符、数字以及大写和小写字母。

必需:否

类型:字符串

最低1

最高512

模式(\u002F)|(\u002F[\u0021-\u007F]+\u002F)

Update requires: Replacement

PermissionsBoundary

用于为角色设置权限边界的策略的 ARN。

有关权限边界的更多信息,请参阅 IAM 用户指南 中的 IAM 身份的权限边界

必需:否

类型:字符串

Update requires: No interruption

Policies

添加或更新嵌入在指定 IAM 角色中的内联策略文档。

在将内联策略嵌入角色中时,内联策略将用作角色的访问(权限)策略的一部分。在创建角色的同时将创建角色的信任策略。您稍后可以更新角色的信任策略。有关 IAM 角色的更多信息,请转到使用角色委派权限和联合身份

此外,角色可以具有附加的托管策略。有关策略的信息,请参阅 IAM 用户指南 中的托管策略与内联策略

有关可以嵌入角色中的内联策略数量限制的信息,请参阅 IAM 用户指南 中的 IAM 实体的限制

注意

如果外部策略的角色 (例如 AWS::IAM::PolicyAWS::IAM::ManagedPolicy) 具有角色的 Ref,并且资源 (例如 AWS::ECS::Service) 具有同一角色的 Ref,请为该资源添加 DependsOn 属性,以便资源可以依赖该外部策略。此依赖关系确保该角色的策略在资源的整个生命周期内均可用。例如,当您删除一个具有 AWS::ECS::Service 资源的堆栈时,DependsOn 属性可确保在删除其角色的策略之前,AWS CloudFormation 会删除 AWS::ECS::Service 资源。

必需:否

类型策略的列表

Update requires: No interruption

RoleName

IAM 角色的名称。对于有效值,请参阅 IAM 用户指南 中的 CreateRole 操作的 RoleName 参数。

该参数允许(通过其正则表达式模式)使用由大小写字母数字字符组成的字符串(不包含空格)。此外,还可以包含以下任何字符:_+=,.@-。角色名称在账户中必须是唯一的。角色名称不区分大小写。例如,您无法同时创建名为“Role1”和“role1”的角色。

如果不指定名称,则 AWS CloudFormation 会生成一个唯一的物理 ID 并将该 ID 用于角色名称。

如果指定了名称,则必须指定 CAPABILITY_NAMED_IAM 值以确认模板的功能。有关更多信息,请参阅确认 AWS CloudFormation 模板中的 IAM 资源

重要

如果您在多个区域中重用同一模板,则为 IAM 资源命名会导致无法恢复的错误。为防止出现此情况,建议您使用 Fn::JoinAWS::Region 创建特定于区域的名称,如以下示例所示:{"Fn::Join": ["", [{"Ref": "AWS::Region"}, {"Ref": "MyResourceName"}]]}

必需:否

类型:字符串

Update requires: Replacement

Tags

附加到指定角色的标签列表。有关标记的更多信息,请参阅 IAM 用户指南中的标记 IAM 身份

必需:否

类型Tag 的列表

最高50

Update requires: No interruption

返回值

Ref

When the logical ID of this resource is provided to the Ref intrinsic function, Ref returns the resource name.

例如:

{ "Ref": "RootRole" }

对于逻辑 ID 为 RootRoleAWS::IAM::Role 资源,Ref 将返回角色名称。

For more information about using the Ref function, see Ref.

Fn::GetAtt

Fn::GetAtt 内部函数返回此类型的一个指定属性的值。以下为可用属性和示例返回值。

有关使用 Fn::GetAtt 内部函数的更多信息,请参阅 Fn::GetAtt

Arn

返回角色的 Amazon 资源名称 (ARN)。例如:

{"Fn::GetAtt" : ["MyRole", "Arn"] }

此操作会返回一个值,如 arn:aws:iam::1234567890:role/MyRole-AJJHDSKSDF

RoleId

返回用于标识角色的稳定的唯一字符串。例如:AIDAJQABLZS4A3QDU576Q

有关 ID 的更多信息,请参阅 IAM 用户指南 中的 IAM 标识符

示例

带内嵌策略和实例配置文件的 IAM 角色

此示例显示 AWS::IAM::Role 中的内嵌策略。此策略被指定内联在 AWS::IAM::RolePolicies 属性中。

{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "RootRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "Policies": [ { "PolicyName": "root", "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" } ] } } ] } }, "RootInstanceProfile": { "Type": "AWS::IAM::InstanceProfile", "Properties": { "Path": "/", "Roles": [ { "Ref": "RootRole" } ] } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Resources: RootRole: Type: 'AWS::IAM::Role' Properties: AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - ec2.amazonaws.com Action: - 'sts:AssumeRole' Path: / Policies: - PolicyName: root PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: '*' Resource: '*' RootInstanceProfile: Type: 'AWS::IAM::InstanceProfile' Properties: Path: / Roles: - !Ref RootRole

带外部策略和实例配置文件的 IAM 角色

在此示例中,Policy 和 InstanceProfile 资源被指定在 IAM 角色外部。此类资源是通过在其各自的 Roles 属性中指定名称“RootRole”的角色。

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "RootRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version" : "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/" } }, "RolePolicies": { "Type": "AWS::IAM::Policy", "Properties": { "PolicyName": "root", "PolicyDocument": { "Version" : "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" } ] }, "Roles": [ { "Ref": "RootRole" } ] } }, "RootInstanceProfile": { "Type": "AWS::IAM::InstanceProfile", "Properties": { "Path": "/", "Roles": [ { "Ref": "RootRole" } ] } } } }

YAML

AWSTemplateFormatVersion: "2010-09-09" Resources: RootRole: Type: "AWS::IAM::Role" Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - "ec2.amazonaws.com" Action: - "sts:AssumeRole" Path: "/" RolePolicies: Type: "AWS::IAM::Policy" Properties: PolicyName: "root" PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: "*" Resource: "*" Roles: - Ref: "RootRole" RootInstanceProfile: Type: "AWS::IAM::InstanceProfile" Properties: Path: "/" Roles: - Ref: "RootRole"

另请参阅