AWS::IAM::Role - AWS CloudFormation

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::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

戻り値

参照番号

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::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"

以下の資料も参照してください。