メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

AWS::IAM::Role

AWS Identity and Access Management (IAM) ロールを作成します。IAM ロールを使用すると、EC2 インスタンスで実行されているアプリケーションが AWS リソースに安全にアクセスできます。

IAM ロールの詳細については、『AWS Identity and Access Management ユーザーガイド』の「ロールを使用する」を参照してください。

構文

AWS CloudFormation テンプレートでこのエンティティを宣言するには、次の構文を使用します。

JSON

Copy
{ "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { JSON }, "ManagedPolicyArns": [ String, ... ], "Path": String, "Policies": [ Policies, ... ], "RoleName": String } }

YAML

Copy
Type: "AWS::IAM::Role" Properties: AssumeRolePolicyDocument: JSON object ManagedPolicyArns: - 文字列 Path: String Policies: - Policies RoleName: String

プロパティ

AssumeRolePolicyDocument

このロールに関連付けられている信頼ポリシー。ロールに関連付けることができるロール割り当てポリシーは 1 つだけです。ロール割り当てポリシーの例については、「テンプレートの例」を参照してください。IAM ポリシーで使用できるエレメントの詳細については、『IAM ユーザーガイド』の「IAM ポリシーエレメントの参照」を参照してください。

Required: Yes

Type: JSON ポリシードキュメント。

注記

AWS Identity and Access Management (IAM) では、ポリシーが JSON 形式である必要があります。ただし、YAML 形式のテンプレートでは、JSON または YAML 形式で IAM ポリシーを作成できます。AWS CloudFormation は、IAM に送信する前に常にポリシーを JSON 形式に変換します。

更新に伴う要件: 中断はありません。

ManagedPolicyArns

このロールにアタッチする 1 つ以上の管理ポリシー ARN。

Required: No

Type: List of String values

更新に伴う要件: 中断はありません。

Path

このロールに関連付けるパス。IAM パスについては、IAM ユーザーガイドの「分かりやすい名前とパス」を参照してください。

Required: No

Type: String

更新に伴う要件: 置換

Policies

このロールに関連付けるポリシーです。サンプルテンプレートについては、「Template Examples」を参照してください。

重要

ロール、ユーザー、またはグループの各ポリシー名は一意である必要があります。重複してしまうと、IAM ロールの更新は失敗します。

注記

外部ポリシー (AWS::IAM::PolicyAWS::IAM::ManagedPolicy など) に Ref を持つロールがあり、またリソース (AWS::ECS::Service など) にも同じロールに Ref がある場合には、DependsOn 属性をリソースに追加することによってこのリソースが外部ポリシーに依存します。 この依存性により、ロールのポリシーがリソースのライフサイクルを通じて利用できるようになります。 たとえば、AWS::ECS::Service リソースを持つスタックを削除するときに、DependsOn 属性により、AWS CloudFormation はロールのポリシーを削除する前に必ず AWS::ECS::Service リソースを削除します。

Required: No

: IAM ポリシー のリスト

更新に伴う要件: 中断はありません。

RoleName

IAM ロールの名前。有効な値については、IAM API リファレンスCreateRole アクションの RoleName パラメーターを参照してください。名前を指定しない場合、AWS CloudFormation は一意の物理 ID を生成し、その ID をグループ名として使用します。

重要

名前を指定すると、このリソースの置換が必要な更新はできません。中断が不要であるか、一定の中断が必要な更新であれば、行うことができます。リソースを置き換える必要がある場合は、新しい名前を指定します。

名前を指定した場合、テンプレートの機能を承認するために CAPABILITY_NAMED_IAM 値を指定する必要があります。詳細については、「AWS CloudFormation テンプレートでの IAM リソースの承認」を参照してください。

警告

IAM リソースに名前を付けると、複数のリージョンで同じテンプレートを再利用した場合に、回復不能なエラーが発生する場合があります。 これを防止するために、Fn::JoinAWS::Region を使用して、次の例のように地域固有の名前を作成することをお勧めします (例 {"Fn::Join": ["", [{"Ref": "AWS::Region"}, {"Ref": "MyResourceName"}]]})。

必須: いいえ

Type: String

更新に伴う要件: 置換

IAM ロールのポリシーに関する注意事項

IAM ポリシーとポリシードキュメントの一般情報については、IAM ユーザーガイドの「ポリシーの書き方」を参照してください。

戻り値

参照番号

このリソースの論理 ID が Ref 組み込み関数に提供されると、Ref によりリソース名が返されます。 例:

Copy
{ "Ref": "RootRole" }

論理 ID が "RootRole" である IAM::Role の場合、Ref はそのリソース名を返します。

Ref 関数の使用方法の詳細については、「Ref」を参照してください。

Fn::GetAtt

Fn::GetAtt は、このタイプの指定された属性の値を返します。以下には、利用可能な属性とサンプル戻り値のリストが示されます。

Arn

インスタンスプロファイルの Amazon リソースネーム (ARN) を返します。(例:

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

この場合、“arn:aws:iam::1234567890:role/MyRole-AJJHDSKSDF” などの値が返されます。

Fn::GetAtt の使用の詳細については、「Fn::GetAtt」を参照してください。

テンプレートの例

埋め込みポリシーとインスタンスプロファイルを含む IAM ロール

この例は、IAM::Role の埋め込みポリシーを示します。ポリシーは、IAM::Role Policies プロパティにインラインで指定されます。

JSON

Copy
{ "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

Copy
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

Copy
{ "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

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

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