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
-
このロールに関連付けられている信頼ポリシー。信頼ポリシーは、ロールを引き受けることができるエンティティを定義します。1 つの信頼ポリシーのみをロールに関連付けることができます。ロールを引き受けるために使用できるポリシーの例については、「テンプレートの例」を参照してください。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 Identifiers」を参照してください。
このパラメータはオプションです。含まれていない場合は、デフォルトのスラッシュ (/) になります。
このパラメータは、(正規表現パターン
を通して) でスラッシュ (/) 単独からなる文字列か、あるいはスラッシュで始めてスラッシュで終わりでなければならない文字列のいずれか可能です。さらに、ほとんどの句読文字、数字、大文字および小文字を含む、! ( \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 ロールの詳細については、「Using Roles to Delegate Permissions and Federate Identities」を参照してください。
ロールには、アタッチされた管理ポリシーを含めることもできます。ポリシーについては、IAM ユーザーガイドの「管理ポリシーとインラインポリシー」を参照してください。
ユーザーに埋め込むことができるインラインポリシー数の制限については、IAM ユーザーガイドの「IAM エンティティにおける制限」を参照してください。
注記 外部ポリシー (
AWS::IAM::Policy
やAWS::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::Join
とAWS::Region
を使用して、次の例のように地域固有の名前を作成することをお勧めします (例{"Fn::Join": ["", [{"Ref": "AWS::Region"}, {"Ref": "MyResourceName"}]]}
)。必須: いいえ
タイプ: 文字列
Update requires: Replacement
Tags
-
指定されたロールにアタッチされているタグのリスト。タグ付けの詳細については、「IAM ユーザーガイド 」の「IAM アイデンティティのタグ付け」を参照してください。
必須: いいえ
タイプ: Tag のリスト
最大:
50
Update requires: No interruption
戻り値
参照番号
When the logical ID of this resource is provided to the Ref
intrinsic function, Ref
returns the resource name.
次に例を示します。
{ "Ref": "RootRole" }
論理 ID RootRole
を持つ AWS::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 ID」を参照してください。
例
埋め込みポリシーとインスタンスプロファイルを含む IAM ロール
この例は、AWS::IAM::Role
の埋め込みポリシーを示します。ポリシーは、AWS::IAM::Role
の Policies
プロパティにインラインで指定され ます。
{ "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"
以下の資料も参照してください。
-
AWS Identity and Access Management API リファレンスの「CreateRole」