

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# サービスおよびリソースへの Amazon EMR アクセス許可の IAM AWS サービスロールを設定する
<a name="emr-iam-roles"></a>

Amazon EMR およびアプリケーション (Hadoop や Spark など) は、実行時に AWS の他のリソースにアクセスしてアクションを実行するための権限が必要です。Amazon EMR 内の各クラスターは、Amazon EC2 *インスタンスプロファイル*向けの*サービスロール*およびロールが必要です。詳細については、「*IAM ユーザーガイド*」の「[IAMロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)」および「[インスタンスプロファイルの使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)」を参照してください。これらのロールにアタッチされている IAM ポリシーにより、クラスターはユーザーに代わって AWS の他のサービスとやり取りできます。

クラスターで Amazon EMR の自動スケーリングを使用する場合は、追加のロール (Auto Scaling ロール) が必要になります。EMR Notebooks を使用する場合は、EMR Notebooks AWS のサービスロールが必要です。

Amazon EMR は、各ロールのアクセス許可を決定するデフォルトのロールとデフォルトの管理ポリシーを提供します。管理ポリシーは によって作成および管理されるため AWS、サービス要件が変更されると自動的に更新されます。「*IAM ユーザーガイド*」の「[AWS 管理ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies.html)」を参照してください。

アカウントで初めてクラスターやノートブックを作成する場合、Amazon EMR のロールはまだありません。ロールを作成すると、IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) でロール、ロールにアタッチされたポリシー、およびポリシーで許可または拒否されるアクセス許可を確認できます。Amazon EMR で作成および使用するデフォルトのロールを指定できます。また、独自のロールを作成して、これをクラスターの作成時に個別に指定してアクセス許可をカスタマイズできます。さらに、 AWS CLIを使用してクラスターを作成するときに使用するデフォルトのロールを指定できます。詳細については、「[Amazon EMR で IAM ロールをカスタマイズする](emr-iam-roles-custom.md)」を参照してください。

## Amazon EMR にサービスロールを渡すアクセス許可のアイデンティティベースのポリシーの変更
<a name="emr-iam-roles-passrole"></a>

Amazon EMR のフルアクセス許可のデフォルトの管理ポリシーには、次を含む `iam:PassRole` セキュリティ設定が組み込まれています。
+ 特定のデフォルトの Amazon EMR ロール専用の `iam:PassRole` アクセス許可。
+ `iam:PassedToService` `elasticmapreduce.amazonaws.com`や などの指定された AWS サービスでのみポリシーを使用できるようにする 条件`ec2.amazonaws.com`。

IAM コンソールで [AmazonEMRFullAccessPolicy\$1v2](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonEMRFullAccessPolicy_v2) および [AmazonEMRServicePolicy\$1v2](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonEMRServicePolicy_v2) ポリシーの JSON バージョンを表示できます。v2 管理ポリシーを使用して新しいクラスターを作成することが推奨されます。

## サービスロールの概要
<a name="emr-iam-roles-summary"></a>

次の表は、Amazon EMR に関連する IAM サービスロールを簡単に参照できる一覧です。


| 関数 | デフォルトロール | 説明 | デフォルト管理ポリシー | 
| --- | --- | --- | --- | 
|  [Amazon EMR のサービスロール (EMR ロール)](emr-iam-role.md)  |  `EMR_DefaultRole_V2`  |  リソースをプロビジョニングし AWS 、サービスレベルのアクションを実行するときに、Amazon EMR がユーザーに代わって他の サービスを呼び出すことを許可します。このロールは、すべてのクラスターに必須です。  |  `AmazonEMRServicePolicy_v2`  スポットインスタンスをリクエストするには、サービスリンクロールが必要です。このロールが存在しない場合、Amazon EMR サービスロールには、作成するためのアクセス許可が必要です。ない場合はアクセス許可エラーが発生します。スポットインスタンスをリクエストする場合は、このポリシーを更新して、このサービスにリンクされたロールの作成を許可するステートメントを含める必要があります。詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EMR のサービスロール (EMR ロール)](emr-iam-role.md)」および「[スポットインスタンスリクエスト向けのサービスにリンクされたロール](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-requests.html#service-linked-roles-spot-instance-requests)」を参照してください。   | 
| [クラスター EC2 インスタンスのサービスロール (EC2 インスタンスプロファイル)](emr-iam-role-for-ec2.md) |  `EMR_EC2_DefaultRole`  |  クラスターインスタンスで Hadoop エコシステム上で実行されるアプリケーションプロセスは、他の AWS サービスを呼び出すときにこのロールを使用します。EMRFS を使用して Amazon S3 のデータにアクセスする場合は、Amazon S3 のデータの場所に応じて引き受ける各種ロールを指定できます。例えば、複数のチームが単一の Amazon S3 データ「ストレージアカウント」にアクセスできます。詳細については、「[Amazon S3 への EMRFS リクエストの IAM ロールを設定する](emr-emrfs-iam-roles.md)」を参照してください。このロールは、すべてのクラスターに必須です。  |  `AmazonElasticMapReduceforEC2Role`。詳細については、「[クラスター EC2 インスタンスのサービスロール (EC2 インスタンスプロファイル)](emr-iam-role-for-ec2.md)」を参照してください。  | 
| [Amazon EMR の自動スケーリングのサービスロール (Auto Scaling ロール)](emr-iam-role-automatic-scaling.md) |  `EMR_AutoScaling_DefaultRole`  |  動的なスケーリング環境用の追加のアクションを許可します。Amazon EMR でオートスケーリングを使用するクラスターでのみ必須です。詳細については、「[カスタムポリシーによる自動スケーリングを Amazon EMR のインスタンスグループに使用する](emr-automatic-scaling.md)」を参照してください。  |  `AmazonElasticMapReduceforAutoScalingRole`。 詳細については、「」を参照してください[Amazon EMR の自動スケーリングのサービスロール (Auto Scaling ロール)](emr-iam-role-automatic-scaling.md)。  | 
| [EMR Notebooks のサービスロール](emr-managed-notebooks-service-role.md) |  `EMR_Notebooks_DefaultRole`  |  EMR ノートブックが他の AWS リソースにアクセスしてアクションを実行するために必要なアクセス許可を提供します。EMR Notebooks を使用する場合にのみ必須です。  |  `AmazonElasticMapReduceEditorsRole`。詳細については、「[EMR Notebooks のサービスロール](emr-managed-notebooks-service-role.md)」を参照してください。 `S3FullAccessPolicy` もデフォルトでアタッチされます。このポリシーの内容は次のとおりです。   JSON   

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowS3"
    }
  ]
}
```      | 
| [サービスにリンクされたロール](using-service-linked-roles.md) | `AWSServiceRoleForEMRCleanup` | Amazon EMR では､サービスにリンクされたロールが自動的に作成されます。Amazon EMR のサービスが Amazon EC2 リソースをクリーンアップできなくなった場合、Amazon EMR はこのロールを使用してクリーンアップできます。クラスターでスポットインスタンスを使用している場合、[Amazon EMR のサービスロール (EMR ロール)](emr-iam-role.md) にアタッチされているアクセス許可ポリシーは、サービスにリンクされたロールの作成を許可する必要があります。詳細については、「[Amazon EMR でのサービスにリンクされたロールの使用](using-service-linked-roles.md)」を参照してください。 | `AmazonEMRCleanupPolicy` | 

**Topics**
+ [

## Amazon EMR にサービスロールを渡すアクセス許可のアイデンティティベースのポリシーの変更
](#emr-iam-roles-passrole)
+ [

## サービスロールの概要
](#emr-iam-roles-summary)
+ [

# Amazon EMR で使用される IAM サービスロール
](emr-iam-service-roles.md)
+ [

# Amazon EMR で IAM ロールをカスタマイズする
](emr-iam-roles-custom.md)
+ [

# Amazon S3 への EMRFS リクエストの IAM ロールを設定する
](emr-emrfs-iam-roles.md)
+ [

# AWS Glue Data Catalog への Amazon EMR アクセスにリソースベースのポリシーを使用する
](emr-iam-roles-glue.md)
+ [

# AWS サービスを直接呼び出すアプリケーションで IAM ロールを使用する
](emr-iam-roles-calling.md)
+ [

# ユーザーおよびグループによるロールの作成および変更を許可する
](emr-iam-roles-create-permissions.md)

# Amazon EMR で使用される IAM サービスロール
<a name="emr-iam-service-roles"></a>

Amazon EMR は、クラスターリソースのプロビジョニング、アプリケーションの実行、リソースの動的スケーリング、および EMR Notebooks の作成と実行を行う際に、IAM サービスロールを使用してユーザーに代わってアクションを実行します。Amazon EMR は､他の AWS のサービスとやり取りする際に以下のロールを使用します。各ロールは、Amazon EMR 内で固有の機能を果たします。このセクションのトピックでは、各ロールの機能を説明し、ロール別のデフォルトのロールおよびアクセス許可ポリシーを示します。

クラスターに AWS サービスを直接呼び出すアプリケーションコードがある場合は、 SDK を使用してロールを指定する必要がある場合があります。詳細については、「[AWS サービスを直接呼び出すアプリケーションで IAM ロールを使用する](emr-iam-roles-calling.md)」を参照してください。

**Topics**
+ [

# Amazon EMR のサービスロール (EMR ロール)
](emr-iam-role.md)
+ [

# クラスター EC2 インスタンスのサービスロール (EC2 インスタンスプロファイル)
](emr-iam-role-for-ec2.md)
+ [

# Amazon EMR の自動スケーリングのサービスロール (Auto Scaling ロール)
](emr-iam-role-automatic-scaling.md)
+ [

# EMR Notebooks のサービスロール
](emr-managed-notebooks-service-role.md)
+ [

# Amazon EMR でのサービスにリンクされたロールの使用
](using-service-linked-roles.md)

# Amazon EMR のサービスロール (EMR ロール)
<a name="emr-iam-role"></a>

Amazon EMR ロールは、Amazon EMR がリソースをプロビジョニングし、クラスター内で実行されている Amazon EC2 インスタンスのコンテキストでは実行されないサービスレベルのタスクを実行するときに Amazon EMR に対して許可されるアクションを定義します。例えば、このサービスロールを使用してクラスターの起動時に EC2 インスタンスをプロビジョニングします。
+ デフォルトのロール名は `EMR_DefaultRole_V2` です。
+ `EMR_DefaultRole_V2` にアタッチされる、Amazon EMR 範囲のデフォルトの管理ポリシーは `AmazonEMRServicePolicy_v2` です。この v2 ポリシーは、廃止されたデフォルトの管理ポリシー `AmazonElasticMapReduceRole` を置き換えるものです。

`AmazonEMRServicePolicy_v2` は、Amazon EMR がプロビジョニングまたは使用するリソースへの、範囲が制限されたアクセス権限に依存します。このポリシーを使用する場合は、クラスターのプロビジョニング時にユーザータグ `for-use-with-amazon-emr-managed-policies = true` を渡す必要があります。Amazon EMR はこれらのタグを自動的に伝播します。さらに、Amazon EMR によって作成されていない EC2 セキュリティグループなど、特定のタイプのリソースにユーザータグを手動で追加する必要がある場合があります。「[管理ポリシーを使用するためにリソースにタグを付ける](emr-managed-iam-policies.md#manually-tagged-resources)」を参照してください。

**重要**  
Amazon EMR は、この Amazon EMR サービスロールと `AWSServiceRoleForEMRCleanup` ロールを使用して、アカウント内で使用しなくなったクラスターリソース (Amazon EC2 インスタンスなど) をクリーンアップします。ロールポリシーにはリソースを削除または終了するアクションを含める必要があります。そうでない場合、Amazon EMR はこれらのクリーンアップアクションを実行できず、クラスターに残っている未使用のリソースに対して料金が発生する可能性があります。

以下は、現在の `AmazonEMRServicePolicy_v2` ポリシーの内容を示しています。IAM コンソールで [https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonEMRServicePolicy_v2](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AmazonEMRServicePolicy_v2) 管理ポリシーの現在の内容を確認することもできます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CreateInTaggedNetwork",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateNetworkInterface",
        "ec2:RunInstances",
        "ec2:CreateFleet",
        "ec2:CreateLaunchTemplate",
        "ec2:CreateLaunchTemplateVersion"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:subnet/*",
        "arn:aws:ec2:*:*:security-group/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "CreateWithEMRTaggedLaunchTemplate",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateFleet",
        "ec2:RunInstances",
        "ec2:CreateLaunchTemplateVersion"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:launch-template/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "CreateEMRTaggedLaunchTemplate",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateLaunchTemplate"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:launch-template/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "CreateEMRTaggedInstancesAndVolumes",
      "Effect": "Allow",
      "Action": [
        "ec2:RunInstances",
        "ec2:CreateFleet"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:instance/*",
        "arn:aws:ec2:*:*:volume/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "ResourcesToLaunchEC2",
      "Effect": "Allow",
      "Action": [
        "ec2:RunInstances",
        "ec2:CreateFleet",
        "ec2:CreateLaunchTemplate",
        "ec2:CreateLaunchTemplateVersion"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:network-interface/*",
        "arn:aws:ec2:*::image/ami-*",
        "arn:aws:ec2:*:*:key-pair/*",
        "arn:aws:ec2:*:*:capacity-reservation/*",
        "arn:aws:ec2:*:*:placement-group/pg-*",
        "arn:aws:ec2:*:*:fleet/*",
        "arn:aws:ec2:*:*:dedicated-host/*",
        "arn:aws:resource-groups:*:*:group/*"
      ]
    },
    {
      "Sid": "ManageEMRTaggedResources",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateLaunchTemplateVersion",
        "ec2:DeleteLaunchTemplate",
        "ec2:DeleteNetworkInterface",
        "ec2:ModifyInstanceAttribute",
        "ec2:TerminateInstances"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "ManageTagsOnEMRTaggedResources",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags",
        "ec2:DeleteTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:instance/*",
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:ec2:*:*:network-interface/*",
        "arn:aws:ec2:*:*:launch-template/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "CreateNetworkInterfaceNeededForPrivateSubnet",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateNetworkInterface"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:network-interface/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "TagOnCreateTaggedEMRResources",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:network-interface/*",
        "arn:aws:ec2:*:*:instance/*",
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:ec2:*:*:launch-template/*"
      ],
      "Condition": {
        "StringEquals": {
          "ec2:CreateAction": [
            "RunInstances",
            "CreateFleet",
            "CreateLaunchTemplate",
            "CreateNetworkInterface"
          ]
        }
      }
    },
    {
      "Sid": "TagPlacementGroups",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags",
        "ec2:DeleteTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:placement-group/pg-*"
      ]
    },
    {
      "Sid": "ListActionsForEC2Resources",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeCapacityReservations",
        "ec2:DescribeDhcpOptions",
        "ec2:DescribeImages",
        "ec2:DescribeInstances",
        "ec2:DescribeInstanceTypeOfferings",
        "ec2:DescribeLaunchTemplates",
        "ec2:DescribeNetworkAcls",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DescribePlacementGroups",
        "ec2:DescribeRouteTables",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeVolumes",
        "ec2:DescribeVolumeStatus",
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeVpcEndpoints",
        "ec2:DescribeVpcs"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "CreateDefaultSecurityGroupWithEMRTags",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateSecurityGroup"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:security-group/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "CreateDefaultSecurityGroupInVPCWithEMRTags",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateSecurityGroup"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:vpc/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "TagOnCreateDefaultSecurityGroupWithEMRTags",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:security-group/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true",
          "ec2:CreateAction": "CreateSecurityGroup"
        }
      }
    },
    {
      "Sid": "ManageSecurityGroups",
      "Effect": "Allow",
      "Action": [
        "ec2:AuthorizeSecurityGroupEgress",
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:RevokeSecurityGroupEgress",
        "ec2:RevokeSecurityGroupIngress"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "CreateEMRPlacementGroups",
      "Effect": "Allow",
      "Action": [
        "ec2:CreatePlacementGroup"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:placement-group/pg-*"
      ]
    },
    {
      "Sid": "DeletePlacementGroups",
      "Effect": "Allow",
      "Action": [
        "ec2:DeletePlacementGroup"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "AutoScaling",
      "Effect": "Allow",
      "Action": [
        "application-autoscaling:DeleteScalingPolicy",
        "application-autoscaling:DeregisterScalableTarget",
        "application-autoscaling:DescribeScalableTargets",
        "application-autoscaling:DescribeScalingPolicies",
        "application-autoscaling:PutScalingPolicy",
        "application-autoscaling:RegisterScalableTarget"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "ResourceGroupsForCapacityReservations",
      "Effect": "Allow",
      "Action": [
        "resource-groups:ListGroupResources"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "AutoScalingCloudWatch",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:PutMetricAlarm",
        "cloudwatch:DeleteAlarms",
        "cloudwatch:DescribeAlarms"
      ],
      "Resource": [
        "arn:aws:cloudwatch:*:*:alarm:*_EMR_Auto_Scaling"
      ]
    },
    {
      "Sid": "PassRoleForAutoScaling",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::*:role/EMR_AutoScaling_DefaultRole"
      ],
      "Condition": {
        "StringLike": {
          "iam:PassedToService": "application-autoscaling.amazonaws.com*"
        }
      }
    },
    {
      "Sid": "PassRoleForEC2",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::*:role/EMR_EC2_DefaultRole"
      ],
      "Condition": {
        "StringLike": {
          "iam:PassedToService": "ec2.amazonaws.com*"
        }
      }
    },
    {
      "Sid": "CreateAndModifyEmrServiceVPCEndpoint",
      "Effect": "Allow",
      "Action": [
        "ec2:ModifyVpcEndpoint",
        "ec2:CreateVpcEndpoint"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:vpc-endpoint/*",
        "arn:aws:ec2:*:*:subnet/*",
        "arn:aws:ec2:*:*:security-group/*",
        "arn:aws:ec2:*:*:vpc/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "CreateEmrServiceVPCEndpoint",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateVpcEndpoint"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:vpc-endpoint/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true",
          "aws:RequestTag/Name": "emr-service-vpce"
        }
      }
    },
    {
      "Sid": "TagEmrServiceVPCEndpoint",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:vpc-endpoint/*"
      ],
      "Condition": {
        "StringEquals": {
          "ec2:CreateAction": "CreateVpcEndpoint",
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true",
          "aws:RequestTag/Name": "emr-service-vpce"
        }
      }
    }
  ]
}
```

------

サービスロールでは、次の信頼ポリシーを使用する必要があります。

**重要**  
次の信頼ポリシーには、Amazon EMR に付与するアクセス許可をアカウント内の特定のリソースに制限するためのグローバル条件キー [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) および [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) が含まれています。これらを使用することで、[「混乱した代理」問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)から保護できます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowSTSAssumerole",
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": "arn:aws:iam::123456789012:role/EMRServiceRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:elasticmapreduce:*:123456789012:*"
        }
      }
    }
  ]
}
```

------

# クラスター EC2 インスタンスのサービスロール (EC2 インスタンスプロファイル)
<a name="emr-iam-role-for-ec2"></a>

クラスター EC2 インスタンスのサービスロール (Amazon EMR の EC2 インスタンスプロファイルとも呼ばれます) は、インスタンスの起動時に Amazon EMR クラスター内のすべての EC2 インスタンスに割り当てられる特殊なサービスロールです。Hadoop エコシステム上で実行されるアプリケーションプロセスは、このロールを引き受けることで、 AWS の他のサービスとやり取りするアクセス許可を取得します。

EC2 インスタンスのサービスロールの詳細については、*IAM ユーザーガイド*の「[Amazon EC2 インスタンスで実行されるアプリケーションに IAM ロールを使用してアクセス許可を付与する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)」を参照してください。

**重要**  
クラスター EC2 インスタンスのデフォルトのサービスロールとそれに関連する AWS デフォルトの管理ポリシー`AmazonElasticMapReduceforEC2Role`は、代替 AWS 管理ポリシーが提供されず、非推奨になる予定です。廃止されるロールとデフォルトポリシーを置き換えるには、インスタンスプロファイルを作成して指定する必要があります。

## デフォルトのロールとデフォルトの管理ポリシー
<a name="emr-ec2-role-default"></a>
+ デフォルトのロール名は `EMR_EC2_DefaultRole` です。
+ `EMR_EC2_DefaultRole` のデフォルトの管理ポリシー `AmazonElasticMapReduceforEC2Role` のサポートはまもなく終了します。EC2 インスタンスプロファイルのデフォルトの管理ポリシーを使用する代わりに、Amazon EMR が必要とする S3 バケットおよびその他のリソースにリソースベースのポリシーを適用するか、インスタンスプロファイルとして IAM ロールを使用して独自のカスタマー管理ポリシーを使用します。詳細については、「[最低限のアクセス権限を持つクラスター EC2 インスタンスのサービスロールの作成](#emr-ec2-role-least-privilege)」を参照してください。

以下は、`AmazonElasticMapReduceforEC2Role` のバージョン 3 の内容を示しています。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Resource": [
        "*"
      ],
      "Action": [
        "cloudwatch:*",
        "dynamodb:*",
        "ec2:Describe*",
        "elasticmapreduce:Describe*",
        "elasticmapreduce:ListBootstrapActions",
        "elasticmapreduce:ListClusters",
        "elasticmapreduce:ListInstanceGroups",
        "elasticmapreduce:ListInstances",
        "elasticmapreduce:ListSteps",
        "kinesis:CreateStream",
        "kinesis:DeleteStream",
        "kinesis:DescribeStream",
        "kinesis:GetRecords",
        "kinesis:GetShardIterator",
        "kinesis:MergeShards",
        "kinesis:PutRecord",
        "kinesis:SplitShard",
        "rds:Describe*",
        "s3:*",
        "sdb:*",
        "sns:*",
        "sqs:*",
        "glue:CreateDatabase",
        "glue:UpdateDatabase",
        "glue:DeleteDatabase",
        "glue:GetDatabase",
        "glue:GetDatabases",
        "glue:CreateTable",
        "glue:UpdateTable",
        "glue:DeleteTable",
        "glue:GetTable",
        "glue:GetTables",
        "glue:GetTableVersions",
        "glue:CreatePartition",
        "glue:BatchCreatePartition",
        "glue:UpdatePartition",
        "glue:DeletePartition",
        "glue:BatchDeletePartition",
        "glue:GetPartition",
        "glue:GetPartitions",
        "glue:BatchGetPartition",
        "glue:CreateUserDefinedFunction",
        "glue:UpdateUserDefinedFunction",
        "glue:DeleteUserDefinedFunction",
        "glue:GetUserDefinedFunction",
        "glue:GetUserDefinedFunctions"
      ],
      "Sid": "AllowCLOUDWATCH"
    }
  ]
}
```

------

サービスロールでは、次の信頼ポリシーを使用する必要があります。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowSTSAssumerole",
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": "arn:aws:iam::123456789012:role/EMR_EC2_DefaultRole"
    }
  ]
}
```

------

## 最低限のアクセス権限を持つクラスター EC2 インスタンスのサービスロールの作成
<a name="emr-ec2-role-least-privilege"></a>

ベストプラクティスとして、クラスター EC2 インスタンスのサービスロールと、アプリケーションに必要な他の AWS サービスへの最小限のアクセス許可を持つアクセス許可ポリシーを作成することを強くお勧めします。

デフォルトの管理ポリシー (`AmazonElasticMapReduceforEC2Role`) が提供するアクセス許可を使用すると、最初のクラスターを簡単に起動できます。ただし、 `AmazonElasticMapReduceforEC2Role`は廃止予定であり、Amazon EMR は廃止されたロールの代替 AWS マネージドデフォルトポリシーを提供しません。初期クラスターを起動するには、カスタマー管理リソースベースまたは ID ベースのポリシーを提供する必要があります。

以下のポリシーステートメントは、Amazon EMR の機能別に必要なアクセス許可の例を示しています。これらのアクセス許可を使用することで、クラスターが必要とする機能やリソースにのみアクセスを制限するアクセス許可ポリシーを作成することをお勧めします。すべてのポリシーステートメントの例では、 *us-west-2*リージョンと架空の AWS アカウント ID を使用します*123456789012*。実際のクラスターに応じて置き換えてください。

カスタムロールの作成と指定の詳細については、「[Amazon EMR で IAM ロールをカスタマイズする](emr-iam-roles-custom.md)」を参照してください。

**注記**  
EC2 のカスタム EMR ロールを作成する場合は、基本的なワークフローに従います。これにより、同じ名前のインスタンスプロファイルが自動的に作成されます。Amazon EC2 では、異なる名前のインスタンスプロファイルとロールを作成できますが、Amazon EMR はこの設定をサポートしていないため、クラスターの作成時に「無効なインスタンスプロファイル」エラーが発生します。

### EMRFS を使用した Amazon S3 に対するデータの読み書き
<a name="emr-ec2-role-EMRFS"></a>

Amazon EMR クラスターで実行されているアプリケーションが `s3://mydata` 形式を使用してデータを参照する場合、Amazon EMR は EC2 インスタンスプロファイルを使用してリクエストを行います。通常、クラスターはこの方法で Amazon S3 に対するデータの読み書きを行います。Amazon EMR は、デフォルトでクラスター EC2 インスタンスのサービスロールにアタッチされているアクセス許可を使用します。詳細については、「[Amazon S3 への EMRFS リクエストの IAM ロールを設定する](emr-emrfs-iam-roles.md)」を参照してください。

EMRFS の IAM ロールは、クラスター EC2 インスタンスのサービスロールにアタッチされているアクセス許可にフォールバックするため、ベストプラクティスとして、EMRFS の IAM ロールを使用し、クラスター EC2 インスタンスのサービスロールにアタッチされている EMRFS および Amazon S3 アクセス許可に制限することをお勧めします。

次のステートメントの例は、EMRFS が Amazon S3 に対してリクエストを行うために必要なアクセス許可を示しています。
+ *my-data-bucket-in-s3-for-emrfs-reads-and-writes* は、クラスターがデータを読み書きする Amazon S3 内のバケットを指定します。また、*/\$1* を使用してすべてのサブフォルダを指定します。アプリケーションが必要とするバケットおよびフォルダのみを追加します。
+ `dynamodb` アクションを許可するポリシーステートメントは、EMRFS の整合性のあるビューが有効になっている場合にのみ必要です。*EmrFSMetadata* は、EMRFS の整合性のあるビューのデフォルトフォルダを指定します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:CreateBucket",
        "s3:DeleteObject",
        "s3:GetBucketVersioning",
        "s3:GetObject",
        "s3:GetObjectTagging",
        "s3:GetObjectVersion",
        "s3:ListBucket",
        "s3:ListBucketMultipartUploads",
        "s3:ListBucketVersions",
        "s3:ListMultipartUploadParts",
        "s3:PutBucketVersioning",
        "s3:PutObject",
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::my-data-bucket-in-s3-for-emrfs-reads-and-writes",
        "arn:aws:s3:::my-data-bucket-in-s3-for-emrfs-reads-and-writes/*"
      ],
      "Sid": "AllowS3Abortmultipartupload"
    },
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:CreateTable",
        "dynamodb:BatchGetItem",
        "dynamodb:BatchWriteItem",
        "dynamodb:PutItem",
        "dynamodb:DescribeTable",
        "dynamodb:DeleteItem",
        "dynamodb:GetItem",
        "dynamodb:Scan",
        "dynamodb:Query",
        "dynamodb:UpdateItem",
        "dynamodb:DeleteTable",
        "dynamodb:UpdateTable"
      ],
      "Resource": [
        "arn:aws:dynamodb:*:123456789012:table/EmrFSMetadata"
      ],
      "Sid": "AllowDYNAMODBCreatetable"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:PutMetricData",
        "dynamodb:ListTables",
        "s3:ListBucket"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowCLOUDWATCHPutmetricdata"
    },
    {
      "Effect": "Allow",
      "Action": [
        "sqs:GetQueueUrl",
        "sqs:ReceiveMessage",
        "sqs:DeleteQueue",
        "sqs:SendMessage",
        "sqs:CreateQueue"
      ],
      "Resource": [
        "arn:aws:sqs:*:123456789012:EMRFS-Inconsistency-*"
      ],
      "Sid": "AllowSQSGetqueueurl"
    }
  ]
}
```

------

### Amazon S3 へのログファイルのアーカイブ
<a name="emr-ec2-role-s3-logs"></a>

次のポリシーステートメントでは、指定された Amazon S3 の場所にログファイルをアーカイブすることを Amazon EMR クラスターに許可します。以下の例では、クラスターの作成時に、 *s3://MyLoggingBucket/MyEMRClusterLogs*コンソールの **Log フォルダ S3 の場所**、 `--log-uri`のオプション、または `RunJobFlow` コマンドの `LogUri`パラメータを使用して AWS CLIが指定されています。詳細については、「[Simple Storage Service (Amazon S3) にログファイルをアーカイブする](emr-plan-debugging.md#emr-plan-debugging-logs-archive)」を参照してください。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::MyLoggingBucket/MyEMRClusterLogs/*"
      ],
      "Sid": "AllowS3Putobject"
    }
  ]
}
```

------

### AWS Glue データカタログの使用
<a name="emr-ec2-role-glue"></a>

次のポリシーステートメントでは、アプリケーションのメタストアとして AWS Glue データカタログを使用する場合に必要なアクションを許可します。詳細については、*「Amazon EMR Release Guide*」の「Using [the AWS Glue Data Catalog as the metastore for Spark SQL](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-glue.html)」、[「Using the AWS Glue Data Catalog as the metastore for Hive](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hive-metastore-glue.html)」、および[「Using Presto with the AWS Glue Data Catalog](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-presto-glue.html)」を参照してください。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:CreateDatabase",
        "glue:UpdateDatabase",
        "glue:DeleteDatabase",
        "glue:GetDatabase",
        "glue:GetDatabases",
        "glue:CreateTable",
        "glue:UpdateTable",
        "glue:DeleteTable",
        "glue:GetTable",
        "glue:GetTables",
        "glue:GetTableVersions",
        "glue:CreatePartition",
        "glue:BatchCreatePartition",
        "glue:UpdatePartition",
        "glue:DeletePartition",
        "glue:BatchDeletePartition",
        "glue:GetPartition",
        "glue:GetPartitions",
        "glue:BatchGetPartition",
        "glue:CreateUserDefinedFunction",
        "glue:UpdateUserDefinedFunction",
        "glue:DeleteUserDefinedFunction",
        "glue:GetUserDefinedFunction",
        "glue:GetUserDefinedFunctions"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowGLUECreatedatabase"
    }
  ]
}
```

------

# Amazon EMR の自動スケーリングのサービスロール (Auto Scaling ロール)
<a name="emr-iam-role-automatic-scaling"></a>

Amazon EMR の Auto Scaling ロールは、サービスロールと同様の機能を実行しますが、環境を動的にスケーリングするための追加のアクションを実行できます。
+ デフォルトのロール名は `EMR_AutoScaling_DefaultRole` です。
+ `EMR_AutoScaling_DefaultRole` にアタッチされるデフォルトの管理ポリシーは `AmazonElasticMapReduceforAutoScalingRole` です。

`AmazonElasticMapReduceforAutoScalingRole` のバージョン 1 の内容は次のとおりです。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "cloudwatch:DescribeAlarms",
        "elasticmapreduce:ListInstanceGroups",
        "elasticmapreduce:ModifyInstanceGroups"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ],
      "Sid": "AllowCLOUDWATCHDescribealarms"
    }
  ]
}
```

------

サービスロールでは、次の信頼ポリシーを使用する必要があります。

**重要**  
次の信頼ポリシーには、Amazon EMR に付与するアクセス許可をアカウント内の特定のリソースに制限するためのグローバル条件キー [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) および [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) が含まれています。これらを使用することで、[「混乱した代理」問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)から保護できます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": "arn:aws:iam::123456789012:role/ApplicationAutoScalingEMRRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:application-autoscaling:*:123456789012:scalable-target/*"
        }
      },
      "Sid": "AllowSTSAssumerole"
    }
  ]
}
```

------

# EMR Notebooks のサービスロール
<a name="emr-managed-notebooks-service-role"></a>

各 EMR Notebook には、他の AWS リソースにアクセスしてアクションを実行するためのアクセス許可が必要です。このサービスロールにアタッチされた IAM ポリシーは、ノートブックが他の AWS サービスと相互運用するためのアクセス許可を提供します。を使用してノートブックを作成するときは AWS マネジメントコンソール、 *AWS サービスロール*を指定します。デフォルトのロール (`EMR_Notebooks_DefaultRole`) を使用するか、独自に作成したロールを指定できます。ノートブックを以前に作成していない場合は、デフォルトのロールを作成することを選択できます。
+ デフォルトのロール名は `EMR_Notebooks_DefaultRole` です。
+ `EMR_Notebooks_DefaultRole` にアタッチされるデフォルト管理ポリシーは、`AmazonElasticMapReduceEditorsRole` および `S3FullAccessPolicy` です。

サービスロールでは、次の信頼ポリシーを使用する必要があります。

**重要**  
次の信頼ポリシーには、Amazon EMR に付与するアクセス許可をアカウント内の特定のリソースに制限するためのグローバル条件キー [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) および [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) が含まれています。これらを使用することで、[「混乱した代理」問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)から保護できます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": "arn:aws:iam::123456789012:role/EMRServiceRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:elasticmapreduce:*:123456789012:*"
        }
      },
      "Sid": "AllowSTSAssumerole"
    }
  ]
}
```

------

`AmazonElasticMapReduceEditorsRole` のバージョン 1 の内容は以下のとおりです。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:AuthorizeSecurityGroupEgress",
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:CreateSecurityGroup",
        "ec2:DescribeSecurityGroups",
        "ec2:RevokeSecurityGroupEgress",
        "ec2:CreateNetworkInterface",
        "ec2:CreateNetworkInterfacePermission",
        "ec2:DeleteNetworkInterface",
        "ec2:DeleteNetworkInterfacePermission",
        "ec2:DescribeNetworkInterfaces",
        "ec2:ModifyNetworkInterfaceAttribute",
        "ec2:DescribeTags",
        "ec2:DescribeInstances",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcs",
        "elasticmapreduce:ListInstances",
        "elasticmapreduce:DescribeCluster",
        "elasticmapreduce:ListSteps"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowEC2Authorizesecuritygroupegress"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:network-interface/*"
      ],
      "Condition": {
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "aws:elasticmapreduce:editor-id",
            "aws:elasticmapreduce:job-flow-id"
          ]
        }
      },
      "Sid": "AllowEC2Createtags"
    }
  ]
}
```

------

`S3FullAccessPolicy` の内容は次のとおりです。`S3FullAccessPolicy` により、EMR Notebooks のサービスロールが、 AWS アカウントのオブジェクトに対してすべての Amazon S3 アクションを実行できます。EMR Notebooks のカスタムサービスロールを作成するときは、サービスロールに Amazon S3 アクセス許可を付与する必要があります。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowS3"
    }
  ]
}
```

------

サービスロールの読み取りおよび書き込みアクセスの範囲を、ノートブックファイルを保存する Amazon S3 の場所に制限できます。次の最小 Amazon S3 アクセス許可セットを使用します。

```
"s3:PutObject",
"s3:GetObject",
"s3:GetEncryptionConfiguration",
"s3:ListBucket",
"s3:DeleteObject"
```

Amazon S3 バケットが暗号化されている場合は、 AWS Key Management Serviceの以下のアクセス許可を含める必要があります。

```
"kms:Decrypt",
"kms:GenerateDataKey",
"kms:ReEncryptFrom",
"kms:ReEncryptTo",
"kms:DescribeKey"
```

Git リポジトリをノートブックにリンクし、リポジトリのシークレットを作成する必要がある場合は、Amazon EMR Notebooks のサービスロールにアタッチされた IAM ポリシーに `secretsmanager:GetSecretValue` アクセス許可を追加する必要があります。ポリシーの例を以下に示します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------

## EMR Notebooks サービスロールのアクセス許可
<a name="emr-managed-notebooks-service-role-permissions"></a>

次の表は、EMR Notebooks がサービスロールを使用して実行するアクションと、各アクションに必要なアクセス許可をリストしています。


****  

| Action | アクセス許可 | 
| --- | --- | 
| ノートブックと Amazon EMR クラスターの間にセキュアネットワークチャネルを確立し、必要なクリーンアップアクションを実行する。 |  <pre>"ec2:CreateNetworkInterface", <br />"ec2:CreateNetworkInterfacePermission", <br />"ec2:DeleteNetworkInterface", <br />"ec2:DeleteNetworkInterfacePermission", <br />"ec2:DescribeNetworkInterfaces", <br />"ec2:ModifyNetworkInterfaceAttribute", <br />"ec2:AuthorizeSecurityGroupEgress", <br />"ec2:AuthorizeSecurityGroupIngress", <br />"ec2:CreateSecurityGroup",<br />"ec2:DescribeSecurityGroups", <br />"ec2:RevokeSecurityGroupEgress",<br />"ec2:DescribeTags",<br />"ec2:DescribeInstances",<br />"ec2:DescribeSubnets",<br />"ec2:DescribeVpcs",<br />"elasticmapreduce:ListInstances", <br />"elasticmapreduce:DescribeCluster", <br />"elasticmapreduce:ListSteps"</pre>  | 
|  AWS Secrets Manager に保存されている Git 認証情報を使用して Git リポジトリをノートブックにリンクする。 |  <pre>"secretsmanager:GetSecretValue"</pre>  | 
| セキュアネットワークチャネルの設定中に EMR Notebooks が作成するネットワークインターフェイスとデフォルトのセキュリティグループに AWS タグを適用します。詳細については、「[AWS リソースのタグ付け](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html)」を参照してください。 |  <pre>"ec2:CreateTags"</pre>  | 
| ノートブックファイルとメタデータにアクセスする、それらを Amazon S3 にアップロードする。 |  <pre>"s3:PutObject",<br />"s3:GetObject",<br />"s3:GetEncryptionConfiguration",<br />"s3:ListBucket",<br />"s3:DeleteObject" </pre> 以下のアクセス許可は、暗号化された Amazon S3 バケットを使用する場合にのみ必要です。 <pre>"kms:Decrypt",<br />"kms:GenerateDataKey",<br />"kms:ReEncryptFrom",<br />"kms:ReEncryptTo",<br />"kms:DescribeKey"</pre>  | 

## AWS マネージドポリシーに対する EMR Notebooks の更新
<a name="notebooks-slr-updates"></a>

2021 年 3 月 1 日以降の EMR Notebooks の AWS マネージドポリシーの更新に関する詳細を表示します。


| 変更 | 説明 | 日付 | 
| --- | --- | --- | 
| AmazonElasticMapReduceEditorsRole - Added permissions | EMR Notebooks で `ec2:describeVPCs` および `elastmicmapreduce:ListSteps` アクセス許可が `AmazonElasticMapReduceEditorsRole` に追加されました。  | 2023 年 2 月 8 日  | 
| EMR Notebooks が変更の追跡を開始  |  EMR Notebooks は AWS 、管理ポリシーの変更の追跡を開始しました。  | 2023 年 2 月 8 日  | 

# Amazon EMR でのサービスにリンクされたロールの使用
<a name="using-service-linked-roles"></a>

Amazon EMR は AWS Identity and Access Management (IAM) [サービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)を使用します。サービスにリンクされたロールは、Amazon EMR に直接リンクされた特殊な IAM ロールです。サービスにリンクされたロールは Amazon EMR によって事前定義されており、サービスがユーザーに代わって他の AWS サービスを呼び出すために必要なすべてのアクセス許可が含まれています。

**Topics**
+ [

# クリーンアップ用の Amazon EMR でのサービスにリンクされたロールの使用
](using-service-linked-roles-cleanup.md)
+ [

# Amazon EMR でサービスリンクロールを使用して先書きログを作成する
](using-service-linked-roles-wal.md)

サービスにリンクされたロールをサポートする他のサービスの詳細については、[AWS 「IAM と連携するサービス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」を参照し、「サービス**にリンクされたロール**」列で**「はい**」を持つサービスを探します。サービスリンクロールに関するドキュメントをサービスで表示するには、リンクで **[はい]** を選択します。

# クリーンアップ用の Amazon EMR でのサービスにリンクされたロールの使用
<a name="using-service-linked-roles-cleanup"></a>

Amazon EMR は AWS Identity and Access Management (IAM) [サービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)を使用します。サービスにリンクされたロールは、Amazon EMR に直接リンクされた特殊な IAM ロールです。サービスにリンクされたロールは Amazon EMR によって事前定義されており、サービスがユーザーに代わって他の AWS サービスを呼び出すために必要なすべてのアクセス許可が含まれています。

サービスにリンクされたロールは、Amazon EMR サービスロールおよび Amazon EMR の Amazon EC2 インスタンスプロファイルと連動します。サービスロールとインスタンスプロファイルに関する詳細については、「[サービスおよびリソースへの Amazon EMR アクセス許可の IAM AWS サービスロールを設定する](emr-iam-roles.md)」を参照してください。

サービスにリンクされたロールを使用すると、必要な許可を手動で追加する必要がないため、Amazon EMR のセットアップが簡単になります。サービスリンクロールの許可は Amazon EMR が定義し、特に定義されない限り、Amazon EMR のみがそのロールを引き受けることができます。定義される許可は信頼ポリシーと許可ポリシーに含まれており、その許可ポリシーを他の IAM エンティティにアタッチすることはできません。

Amazon EMR のサービスにリンクされたロールは、関連するリソースを削除し、アカウント内のすべての EMR クラスターを終了した後にのみ削除できます。これにより、リソースへのアクセス許可を誤って削除することが防止され、Amazon EMR リソースが保護されます。

## クリーンアップ向けのサービスにリンクされたロールの使用
<a name="using-service-linked-roles-permissions-cleanup"></a>

Amazon EMR はサービスベースの **AWSServiceRoleForEMRCleanup** ロールを使用して、Amazon EMR サービスリンクロールがその機能を失った場合に、Amazon EMR が代わりに Amazon EC2 リソースを終了および削除できるようにします。Amazon EMR は、クラスターの作成時にこのサービスリンクロールが存在しない場合は自動的に作成します。

AWSServiceRoleForEMRCleanup サービスリンクロールは、以下のサービスを信頼してロールを引き受けます。
+ `elasticmapreduce.amazonaws.com`

AWSServiceRoleForEMRCleanup サービスリンクロールのアクセス許可ポリシーでは、Amazon EMR は、指定されたリソースで次のアクションを完了することができます。
+ アクション: `DescribeInstances`。対象リソース: `ec2`
+ アクション: `ec2` 上で `DescribeLaunchTemplates`
+ アクション: `ec2` 上で `DeleteLaunchTemplate`
+ アクション: `ec2` 上で `DescribeSpotInstanceRequests`
+ アクション: `ec2` 上で `ModifyInstanceAttribute`
+ アクション: `ec2` 上で `TerminateInstances`
+ アクション: `ec2` 上で `CancelSpotInstanceRequests`
+ アクション: `ec2` 上で `DeleteNetworkInterface`
+ アクション: `ec2` 上で `DescribeInstanceAttribute`
+ アクション: `ec2` 上で `DescribeVolumeStatus`
+ アクション: `ec2` 上で `DescribeVolumes`
+ アクション: `ec2` 上で `DetachVolume`
+ アクション: `ec2` 上で `DeleteVolume`
+ アクション: `ec2` 上で `DescribePlacementGroups`
+ アクション: `DeletePlacementGroup` 上で `ec2`

サービスにリンクされたロールの作成、編集、削除を IAM エンティティ (ユーザー、グループ、ロールなど) に許可するには、権限を設定する必要があります。

## Amazon EMR のサービスリンクロールの作成
<a name="create-service-linked-role"></a>

AWSServiceRoleForEMRCleanup ロールを手動で作成する必要はありません。クラスターを起動するときに、それが初回の起動であるか、AWSServiceRoleForEMRCleanup サービスリンクロールが存在しない場合、この AWSServiceRoleForEMRCleanup サービスリンクロールが Amazon EMR によって自動的に作成されます。サービスにリンクされたロールを作成するためのアクセス許可が必要です。この機能を (ユーザー、グループ、ロールなどの) IAM エンティティのアクセス許可ポリシーに追加するステートメントの例: 

サービスリンクロールを作成する必要のある IAM エンティティのアクセス権限ポリシーに、次のステートメントを追加します。

```
{
             "Sid": "ElasticMapReduceServiceLinkedRole",
             "Effect": "Allow",
             "Action": "iam:CreateServiceLinkedRole",
             "Resource": "arn:aws:iam::*:role/aws-service-role/elasticmapreduce.amazonaws.com*/AWSServiceRoleForEMRCleanup*",
             "Condition": {
                 "StringEquals": {
                     "iam:AWSServiceName": [
                         "elasticmapreduce.amazonaws.com",
                         "elasticmapreduce.amazonaws.com.rproxy.govskope.us.cn"
                     ]
                 }
             }
 }
```

**重要**  
サービスリンクロールがサポートされていなかった 2017 年 10 月 24 日より前に Amazon EMR を使用していた場合、Amazon EMR により、アカウントに AWSServiceRoleForEMRCleanup サービスリンクロールが作成されています。詳細については、「[IAM アカウントに新しいロールが表示される](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)」を参照してください。

## Amazon EMR のサービスリンクロールの編集
<a name="edit-service-linked-role"></a>

Amazon EMR は、AWSServiceRoleForEMRCleanup サービスリンクロールの編集を許可しません。サービスリンクロールを作成すると、多くのエンティティによってサービスリンクロールが参照される可能性があるため、サービスリンクロール名を変更することはできません。ただし、IAM を使用したサービスリンクロール記述の編集はできます。

### サービスにリンクされたロールの説明の編集 (IAM コンソール)
<a name="edit-service-linked-role-iam-console"></a>

サービスにリンクされたロールの説明は、IAM コンソールを使用して編集できます。

**サービスにリンクされたロールの説明を編集するには (コンソール)**

1. IAM コンソールのナビゲーションペインで [**ロール**] を選択します。

1. 変更するロールの名前を選択します。

1. **[Role description]** (ロールの説明) の右にある **[Edit]** (編集) を選択します。

1. ボックスに新しい説明を入力し、**[Save changes]** (変更の保存) を選択します。

### サービスにリンクされたロールの説明の編集 (IAM CLI)
<a name="edit-service-linked-role-iam-cli"></a>

から IAM コマンドを使用して AWS Command Line Interface 、サービスにリンクされたロールの説明を編集できます。

**サービスにリンクされたロールの説明を変更するには (CLI)**

1. (オプション) ロールの現在の説明を表示するには、次のコマンドを使用します。

   ```
   $ aws iam get-role --role-name role-name
   ```

   CLI コマンドでは、ARN ではなくロール名を使用してロールを参照します。例えば、ロールの ARN が `arn:aws:iam::123456789012:role/myrole` である場合、そのロールを **myrole** と参照します。

1. サービスにリンクされたロールの説明を更新するには、次のいずれかのコマンドを使用します。

   ```
   $ aws iam update-role-description --role-name role-name --description description
   ```

### サービスにリンクされたロールの説明の編集 (IAM API)
<a name="edit-service-linked-role-iam-api"></a>

サービスにリンクされたロールの説明は、IAM API を使用して編集できます。

**サービスにリンクされたロールの説明を変更するには (API)**

1. (オプション) ロールの現在の説明を表示するには、次のコマンドを使用します。

   IAM API: [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) 

1. ロールの説明を更新するには、次のコマンドを使用します。

   IAM API: [UpdateRoleDescription](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRoleDescription.html)

## Amazon EMR のサービスリンクロールの削除
<a name="delete-service-linked-role"></a>

サービスリンクロールが必要な機能またはサービスが不要になった場合には、そのサービスリンクロールを削除することをお勧めします。そうすることで、使用していないエンティティがアクティブにモニタリングされたり、メンテナンスされたりすることがなくなります。ただし、削除する前に、サービスにリンクされたロールをクリーンアップする必要があります。

### サービスにリンクされたロールのクリーンアップ
<a name="service-linked-role-review-before-delete"></a>

IAM を使用してサービスリンクロールを削除するには、まずそのサービスリンクロールにアクティブなセッションがないことを確認し、そのサービスリンクロールで使用されているリソースをすべて削除する必要があります。

**サービスにリンクされたロールにアクティブなセッションがあるかどうかを、IAM コンソールで確認するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで **Roles (ロール) ** を選択してください。AWSServiceRoleForEMRCleanup サービスリンクロールの名前 (チェックボックスではない) を選択します。

1. 選択したサービスリンクロールの **[概要]** ページで **[アクセスアドバイザー]** を選択します。

1. [**アクセスアドバイザー**] タブで、サービスにリンクされたロールの最新のアクティビティを確認します。
**注記**  
Amazon EMR が AWSServiceRoleForEMRCleanup サービスリンクロールを使用しているかどうか不明な場合は、サービスリンクロールを削除してみてください。サービスでサービスリンクロールが使用されている場合、削除は失敗し、サービスリンクロールが使用されているリージョンが表示されます。サービスリンクロールが使用されている場合は、サービスリンクロールを削除する前にセッションが終了するのを待つ必要があります。サービスにリンクされたロールのセッションを取り消すことはできません。

**AWSServiceRoleForEMRCleanup が使用している Amazon EMR リソースを削除するには**
+ アカウントのすべてのクラスターを終了します。詳細については、「[開始中、実行中、待機中の状態にある Amazon EMR クラスターを終了する](UsingEMR_TerminateJobFlow.md)」を参照してください。

### サービスにリンクされたロールの削除 (IAM コンソール)
<a name="delete-service-linked-role-iam-console"></a>

IAM コンソールを使用して、サービスにリンクされたロールを削除できます。

**サービスにリンクされたロールを削除するには (コンソール)**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで **Roles (ロール) ** を選択してください。AWSServiceRoleForEMRCleanup の横のチェックボックス (名前や行自体ではなく) を選択します。

1. ページ上部にある **ロールのアクション** で **ロールの削除** を選択します。

1. 確認ダイアログボックスで、サービスの最終アクセス時間データを確認します。このデータには、選択した各ロールが最後に AWS サービスにアクセスした日時が表示されます。これは、そのロールが現在アクティブであるかどうかを確認するのに役立ちます。続行するには、[**はい、削除します**] を選択します。

1. IAM コンソール通知を見て、サービスにリンクされたロールの削除の進行状況を監視します。IAM サービスリンクロールの削除は非同期であるため、削除するサービスリンクロールを送信すると、削除タスクは成功または失敗する可能性があります。タスクが失敗した場合は、通知から **View details]** (詳細を表示) または **View Resources]** (リソースを表示) を選択して、削除が失敗した理由を知ることができます。そのロールで使用中のリソースがサービスにあるために削除に失敗した場合、この失敗の理由にはリソースのリストも含まれます。

### サービスにリンクされたロールの削除 (IAM CLI)
<a name="delete-service-linked-role-iam-cli"></a>

から IAM コマンドを使用して AWS Command Line Interface 、サービスにリンクされたロールを削除できます。サービスにリンクされているロールは、使用されている、または関連するリソースがある場合は削除できないため、削除リクエストを送信する必要があります。これらの条件が満たされないとき、そのリクエストは拒否される場合があります。

**サービスにリンクされたロールを削除するには (CLI)**

1. 削除タスクのステータスを確認するには、レスポンスから `deletion-task-id` を取得する必要があります。サービスにリンクされたロールの削除リクエストを送信するには、次のコマンドを入力します。

   ```
   $ aws iam [delete-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-service-linked-role.html) --role-name AWSServiceRoleForEMRCleanup
   ```

1. 削除タスクのステータスを確認するには、次のコマンドを入力します。

   ```
   $ aws iam [get-service-linked-role-deletion-status](https://docs.aws.amazon.com/cli/latest/reference/iam/get-service-linked-role-deletion-status.html) --deletion-task-id deletion-task-id
   ```

   削除タスクのステータスは、`NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED`、または `FAILED` となります｡ 削除が失敗した場合は、失敗した理由がコールによって返され、トラブルシューティングが可能になります。

### サービスにリンクされたロールの削除 (IAM API)
<a name="delete-service-linked-role-iam-api"></a>

IAM API を使用して、サービスにリンクされたロールを削除できます。サービスにリンクされているロールは、使用されている、または関連するリソースがある場合は削除できないため、削除リクエストを送信する必要があります。これらの条件が満たされないとき、そのリクエストは拒否される場合があります。

**サービスにリンクされたロールを削除するには (API)**

1. サービスにリンクされたロールの削除リクエストを送信するには、[DeleteServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceLinkedRole.html) を呼び出します。リクエストで、AWSServiceRoleForEMRCleanup ロール名を指定します。

   削除タスクのステータスを確認するには、レスポンスから `DeletionTaskId` を取得する必要があります。

1. 削除タスクのステータスを確認するには、[GetServiceLinkedRoleDeletionStatus](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLinkedRoleDeletionStatus.html) を呼び出します。リクエストで `DeletionTaskId` を指定します。

   削除タスクのステータスは、`NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED`、または `FAILED` となります｡ 削除が失敗した場合は、失敗した理由がコールによって返され、トラブルシューティングが可能になります。

## AWSServiceRoleForEMRCleanup がサポートされているリージョン
<a name="emr-slr-regions"></a>

Amazon EMR は、次のリージョンで AWSServiceRoleForEMRCleanup サービスリンクロールの使用をサポートしています。


****  

| リージョン名 | リージョン識別子 | Amazon EMR でのサポート | 
| --- | --- | --- | 
| 米国東部 (バージニア北部) | us-east-1 | はい | 
| 米国東部 (オハイオ) | us-east-2 | はい | 
| 米国西部 (北カリフォルニア) | us-west-1 | はい | 
| 米国西部 (オレゴン)  | us-west-2 | はい | 
| アジアパシフィック (ムンバイ) | ap-south-1 | はい | 
| アジアパシフィック (大阪) | ap-northeast-3 | はい | 
| アジアパシフィック (ソウル) | ap-northeast-2 | はい | 
| アジアパシフィック (シンガポール) | ap-southeast-1 | はい | 
| アジアパシフィック (シドニー) | ap-southeast-2 | はい | 
| アジアパシフィック (東京) | ap-northeast-1 | はい | 
| カナダ (中部) | ca-central-1 | はい | 
| 欧州 (フランクフルト) | eu-central-1 | はい | 
| 欧州 (アイルランド) | eu-west-1 | はい | 
| 欧州 (ロンドン) | eu-west-2 | はい | 
| 欧州 (パリ) | eu-west-3 | はい | 
| 南米 (サンパウロ) | sa-east-1 | はい | 

# Amazon EMR でサービスリンクロールを使用して先書きログを作成する
<a name="using-service-linked-roles-wal"></a>

Amazon EMR は AWS Identity and Access Management (IAM) [サービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)を使用します。サービスにリンクされたロールは、Amazon EMR に直接リンクされた特殊な IAM ロールです。サービスにリンクされたロールは Amazon EMR によって事前定義されており、サービスがユーザーに代わって他の AWS サービスを呼び出すために必要なすべてのアクセス許可が含まれています。

サービスにリンクされたロールは、Amazon EMR サービスロールおよび Amazon EMR の Amazon EC2 インスタンスプロファイルと連動します。サービスロールとインスタンスプロファイルに関する詳細については、「[サービスおよびリソースへの Amazon EMR アクセス許可の IAM AWS サービスロールを設定する](emr-iam-roles.md)」を参照してください。

サービスにリンクされたロールを使用すると、必要な許可を手動で追加する必要がないため、Amazon EMR のセットアップが簡単になります。サービスリンクロールの許可は Amazon EMR が定義し、特に定義されない限り、Amazon EMR のみがそのロールを引き受けることができます。定義される許可は信頼ポリシーと許可ポリシーに含まれており、その許可ポリシーを他の IAM エンティティにアタッチすることはできません。

Amazon EMR のサービスリンクロールは、関連するリソースを削除し、アカウント内のすべての EMR クラスターを終了した後にのみ削除できます。これにより、リソースへのアクセス許可を誤って削除することが防止され、Amazon EMR リソースが保護されます。

## 先行書き込みログ記録 (WAL) のサービスリンクロールのアクセス許可
<a name="using-service-linked-roles-permissions-wal"></a>

Amazon EMR は、サービスリンクロール **AWSServiceRoleForEMRWAL** を使用してクラスターステータスを取得します。

AWSServiceRoleForEMRWAL サービスリンクロールは、次のサービスを信頼してロールを引き受けます。
+ `emrwal.amazonaws.com`

サービスリンクロールの [`EMRDescribeClusterPolicyForEMRWAL`](EMRDescribeClusterPolicyForEMRWAL.md) アクセス許可ポリシーにより、Amazon EMR は、指定されたリソースで次のアクションを完了することができます。
+ アクション: `DescribeCluster`。対象リソース: `*`

IAM エンティティ (この場合 Amazon EMR WAL) がサービスにリンクされたロールを作成、編集、削除できるようにするには、アクセス許可を設定する必要があります。必要に応じて、インスタンスプロファイルのアクセス許可ポリシーに次のステートメントを追加します。

## CreateServiceLinkedRole
<a name="iam-create-wal"></a>

**IAM エンティティが AWSServiceRoleForEMRWAL サービスリンクロールを作成できるようにするには**

サービスにリンクされたロールを作成する必要のある IAM エンティティのアクセス権限ポリシーに、次のステートメントを追加します。

```
{
    "Effect": "Allow",
    "Action": [
        "iam:CreateServiceLinkedRole",
        "iam:PutRolePolicy"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/emrwal.amazonaws.com*/AWSServiceRoleForEMRWAL*",
    "Condition": {
        "StringLike": {
            "iam:AWSServiceName": [
                "emrwal.amazonaws.com",
                "elasticmapreduce.amazonaws.com.rproxy.govskope.us.cn"
            ]
        }
    }
}
```

## UpdateRoleDescription
<a name="iam-update-wal"></a>

**IAM エンティティが AWSServiceRoleForEMRWAL のサービスリンクロールの説明を編集できるようにするには**

サービスにリンクされたロールの説明を編集する必要のある IAM エンティティのアクセス許可ポリシーに次のステートメントを追加します。

```
{
    "Effect": "Allow",
    "Action": [
        "iam:UpdateRoleDescription"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/emrwal.amazonaws.com*/AWSServiceRoleForEMRWAL*",
    "Condition": {
        "StringLike": {
            "iam:AWSServiceName": [
                "emrwal.amazonaws.com",
                "elasticmapreduce.amazonaws.com.rproxy.govskope.us.cn"
            ]
        }
    }
}
```

## DeleteServiceLinkedRole
<a name="iam-delete-wal"></a>

**IAM エンティティが AWSServiceRoleForEMRWAL サービスリンクロールを削除できるようにするには**

サービスにリンクされたロールを削除する必要のある IAM エンティティのアクセス権限ポリシーに、次のステートメントを追加します。

```
{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/elasticmapreduce.amazonaws.com*/AWSServiceRoleForEMRCleanup*",
    "Condition": {
        "StringLike": {
            "iam:AWSServiceName": [
                "emrwal.amazonaws.com",
                "elasticmapreduce.amazonaws.com.rproxy.govskope.us.cn"
            ]
        }
    }
}
```

## Amazon EMR のサービスリンクロールの作成
<a name="create-service-linked-role-wal"></a>

AWSServiceRoleForEMRWAL ロールを手動で作成する必要はありません。Amazon EMR は、EMRWAL CLI または で WAL ワークスペースを作成すると、このサービスにリンクされたロールを自動的に作成します。または AWS CloudFormation、Amazon EMR WAL のワークスペースを設定し、サービスにリンクされたロールがまだ存在しない場合、HBase はサービスにリンクされたロールを作成します。サービスにリンクされたロールを作成するためのアクセス許可が必要です。この機能を (ユーザー、グループ、ロールなどの) IAM エンティティのアクセス許可ポリシーに追加するステートメントの例については、前のセクション「[先行書き込みログ記録 (WAL) のサービスリンクロールのアクセス許可](#using-service-linked-roles-permissions-wal)」を参照してください。

## Amazon EMR のサービスリンクロールの編集
<a name="edit-service-linked-role-wal"></a>

Amazon EMR は、AWSServiceRoleForEMRWAL サービスリンクロールの編集を許可しません。サービスリンクロールを作成すると、多くのエンティティによってサービスリンクロールが参照される可能性があるため、サービスリンクロール名を変更することはできません。ただし、IAM を使用したサービスリンクロール記述の編集はできます。

### サービスにリンクされたロールの説明の編集 (IAM コンソール)
<a name="edit-service-linked-role-iam-console"></a>

サービスにリンクされたロールの説明は、IAM コンソールを使用して編集できます。

**サービスにリンクされたロールの説明を編集するには (コンソール)**

1. IAM コンソールのナビゲーションペインで [**ロール**] を選択します。

1. 変更するロールの名前を選択します。

1. **[Role description]** (ロールの説明) の右にある **[Edit]** (編集) を選択します。

1. ボックスに新しい説明を入力し、**[Save changes]** (変更の保存) を選択します。

### サービスにリンクされたロールの説明の編集 (IAM CLI)
<a name="edit-service-linked-role-iam-cli"></a>

から IAM コマンドを使用して AWS Command Line Interface 、サービスにリンクされたロールの説明を編集できます。

**サービスにリンクされたロールの説明を変更するには (CLI)**

1. (オプション) ロールの現在の説明を表示するには、次のコマンドを使用します。

   ```
   $ aws iam get-role --role-name role-name
   ```

   CLI コマンドでは、ARN ではなくロール名を使用してロールを参照します。例えば、ロールの ARN が `arn:aws:iam::123456789012:role/myrole` である場合、そのロールを **myrole** と参照します。

1. サービスにリンクされたロールの説明を更新するには、次のいずれかのコマンドを使用します。

   ```
   $ aws iam update-role-description --role-name role-name --description description
   ```

### サービスにリンクされたロールの説明の編集 (IAM API)
<a name="edit-service-linked-role-iam-api"></a>

サービスにリンクされたロールの説明は、IAM API を使用して編集できます。

**サービスにリンクされたロールの説明を変更するには (API)**

1. (オプション) ロールの現在の説明を表示するには、次のコマンドを使用します。

   IAM API: [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) 

1. ロールの説明を更新するには、次のコマンドを使用します。

   IAM API: [UpdateRoleDescription](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRoleDescription.html)

## Amazon EMR のサービスリンクロールの削除
<a name="delete-service-linked-role-wal"></a>

サービスリンクロールが必要な機能またはサービスが不要になった場合には、そのサービスリンクロールを削除することをお勧めします。そうすることで、使用していないエンティティがアクティブにモニタリングされたり、メンテナンスされたりすることがなくなります。ただし、削除する前に、サービスにリンクされたロールをクリーンアップする必要があります。

**注記**  
AWSServiceRoleForEMRWAL ロールを削除しても、先行書き込みログ記録オペレーションは影響を受けませんが、Amazon EMR は EMR クラスターが終了すると作成したログを自動的に削除しません。したがって、サービスリンクロールを削除する場合は、Amazon EMR WAL ログを手動で削除する必要があります。

### サービスにリンクされたロールのクリーンアップ
<a name="service-linked-role-review-before-delete"></a>

IAM を使用してサービスにリンクされたロールを削除するには、まずそのロールにアクティブなセッションがないことを確認し、そのロールで使用されているリソースをすべて削除する必要があります。

**サービスにリンクされたロールにアクティブなセッションがあるかどうかを、IAM コンソールで確認するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで **Roles (ロール) ** を選択してください。AWSServiceRoleForEMRWAL ロールの名前 (チェックボックスではない) を選択します。

1. 選択したロールの [**概要**] ページで [**アクセスアドバイザー**] を選択します。

1. [**アクセスアドバイザー**] タブで、サービスにリンクされたロールの最新のアクティビティを確認します。
**注記**  
Amazon EMR が AWSServiceRoleForEMRWAL サービスリンクロールを使用しているかどうか不明な場合は、サービスリンクロールを削除してみてください。サービスでロールが使用されている場合、削除は失敗し、サービスリンクロールが使用されているリージョンが表示されます。サービスリンクロールが使用されている場合は、サービスリンクロールを削除する前にセッションが終了するのを待つ必要があります。サービスにリンクされたロールのセッションを取り消すことはできません。

**AWSServiceRoleForEMRWAL が使用している Amazon EMR リソースを削除するには**
+ アカウントのすべてのクラスターを終了します。詳細については、「[開始中、実行中、待機中の状態にある Amazon EMR クラスターを終了する](UsingEMR_TerminateJobFlow.md)」を参照してください。

### サービスにリンクされたロールの削除 (IAM コンソール)
<a name="delete-service-linked-role-iam-console"></a>

IAM コンソールを使用して、サービスにリンクされたロールを削除できます。

**サービスにリンクされたロールを削除するには (コンソール)**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで **Roles (ロール) ** を選択してください。AWSServiceRoleForEMRWAL の横のチェックボックス (名前や行自体ではなく) を選択します。

1. ページ上部にある **ロールのアクション** で **ロールの削除** を選択します。

1. 確認ダイアログボックスで、サービスの最終アクセス時間データを確認します。このデータには、選択した各ロールが最後に AWS サービスにアクセスした日時が表示されます。これは、そのロールが現在アクティブであるかどうかを確認するのに役立ちます。続行するには、[**はい、削除します**] を選択します。

1. IAM コンソール通知を見て、サービスにリンクされたロールの削除の進行状況をモニタリングします。IAM サービスにリンクされたロールの削除は非同期であるため、削除するロールを送信すると、削除タスクは成功または失敗する可能性があります。タスクが失敗した場合は、通知から **詳細を表示**または **リソースを表示**を選択して、削除が失敗した理由を知ることができます。そのロールで使用中のリソースがサービスにあるために削除に失敗した場合、この失敗の理由にはリソースのリストも含まれます。

### サービスにリンクされたロールの削除 (IAM CLI)
<a name="delete-service-linked-role-iam-cli"></a>

から IAM コマンドを使用して AWS Command Line Interface 、サービスにリンクされたロールを削除できます。サービスにリンクされているロールは、使用されている、または関連するリソースがある場合は削除できないため、削除リクエストを送信する必要があります。これらの条件が満たされないとき、そのリクエストは拒否される場合があります。

**サービスにリンクされたロールを削除するには (CLI)**

1. 削除タスクのステータスを確認するには、レスポンスから `deletion-task-id` を取得する必要があります。サービスにリンクされたロールの削除リクエストを送信するには、次のコマンドを入力します。

   ```
   $ aws iam [delete-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-service-linked-role.html) --role-name AWSServiceRoleForEMRWAL
   ```

1. 削除タスクのステータスを確認するには、次のコマンドを入力します。

   ```
   $ aws iam [get-service-linked-role-deletion-status](https://docs.aws.amazon.com/cli/latest/reference/iam/get-service-linked-role-deletion-status.html) --deletion-task-id deletion-task-id
   ```

   削除タスクのステータスは、`NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED`、または `FAILED` となります｡ 削除が失敗した場合は、失敗した理由がコールによって返され、トラブルシューティングが可能になります。

### サービスにリンクされたロールの削除 (IAM API)
<a name="delete-service-linked-role-iam-api"></a>

IAM API を使用して、サービスにリンクされたロールを削除できます。サービスにリンクされているロールは、使用されている、または関連するリソースがある場合は削除できないため、削除リクエストを送信する必要があります。これらの条件が満たされないとき、そのリクエストは拒否される場合があります。

**サービスにリンクされたロールを削除するには (API)**

1. サービスにリンクされたロールの削除リクエストを送信するには、[DeleteServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceLinkedRole.html) を呼び出します。リクエストで、AWSServiceRoleForEMRWAL のロール名を指定します。

   削除タスクのステータスを確認するには、レスポンスから `DeletionTaskId` を取得する必要があります。

1. 削除タスクのステータスを確認するには、[GetServiceLinkedRoleDeletionStatus](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServiceLinkedRoleDeletionStatus.html) を呼び出します。リクエストで `DeletionTaskId` を指定します。

   削除タスクのステータスは、`NOT_STARTED`、`IN_PROGRESS`、`SUCCEEDED`、または `FAILED` となります｡ 削除が失敗した場合は、失敗した理由がコールによって返され、トラブルシューティングが可能になります。

## AWSServiceRoleForEMRWAL がサポートされているリージョン
<a name="emr-slr-regions-wal"></a>

Amazon EMR は、次のリージョンで AWSServiceRoleForEMRWAL サービスリンクロールの使用をサポートしています。


****  

| リージョン名 | リージョン識別子 | Amazon EMR でのサポート | 
| --- | --- | --- | 
| 米国東部 (バージニア北部) | us-east-1 | はい | 
| 米国東部 (オハイオ) | us-east-2 | はい | 
| 米国西部 (北カリフォルニア) | us-west-1 | はい | 
| 米国西部 (オレゴン)  | us-west-2 | はい | 
| アジアパシフィック (ムンバイ) | ap-south-1 | はい | 
| アジアパシフィック (シンガポール) | ap-southeast-1 | はい | 
| アジアパシフィック (シドニー) | ap-southeast-2 | はい | 
| アジアパシフィック (東京) | ap-northeast-1 | はい | 
| 欧州 (フランクフルト) | eu-central-1 | はい | 
| 欧州 (アイルランド) | eu-west-1 | はい | 

# Amazon EMR で IAM ロールをカスタマイズする
<a name="emr-iam-roles-custom"></a>

IAM サービスロールおよびアクセス許可をカスタマイズして、セキュリティ要件に応じて権限を制限することもできます。アクセス許可をカスタマイズするには、新しいロールおよびポリシーを作成することをお勧めします。まず、デフォルトのロール (`AmazonElasticMapReduceforEC2Role` や `AmazonElasticMapReduceRole`) の管理ポリシーのアクセス許可を確認します。次に、内容をコピーして新しいポリシーステートメントに貼り付け、必要に応じてアクセス許可を変更します。変更したアクセス許可ポリシーを、作成したロールにアタッチします。ロールおよびポリシーを操作するには、IAM の適切なアクセス許可が必要です。詳細については、「[ユーザーおよびグループによるロールの作成および変更を許可する](emr-iam-roles-create-permissions.md)」を参照してください。

EC2 のカスタム EMR ロールを作成する場合は、基本的なワークフローに従います。これにより、同じ名前のインスタンスプロファイルが自動的に作成されます。Amazon EC2 では、異なる名前のインスタンスプロファイルとロールを作成できますが、Amazon EMR はこの設定をサポートしていないため、クラスターの作成時に「無効なインスタンスプロファイル」エラーが発生します。

**重要**  
サービス要件が変更されても、インラインポリシーは自動的に更新されません。インラインポリシーを作成およびアタッチすると、サービスの更新によって突然アクセス許可エラーが発生することがあるので注意してください。詳細については、「*IAM ユーザーガイド*」の「[管理ポリシーとインラインポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies_managed-vs-inline.html)」および「[クラスター作成時にカスタムの IAM ロールを指定する](#emr-iam-roles-launch-jobflow)」を参照してください。

IAM ロールの操作の詳細については、「*IAM ユーザーガイド*」の以下のトピックを参照してください。
+  [AWS サービスにアクセス許可を委任するロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) 
+  [ロールの修正](https://docs.aws.amazon.com/IAM/latest/UserGuide/modifying-role.html) 
+  [ロールの削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/deleting-roles.html) 

## クラスター作成時にカスタムの IAM ロールを指定する
<a name="emr-iam-roles-launch-jobflow"></a>

クラスターを作成するときに、Amazon EMR のサービスロールや Amazon EC2 インスタンスプロファイルのロールを指定します。クラスターを作成するユーザーは、ロールを取得し、Amazon EMR インスタンスおよび EC2 インスタンスに割り当てるためのアクセス許可が必要です。アクセス許可がない場合、**[account is not authorized to call EC2]** エラーが発生します。詳細については、「[ユーザーおよびグループによるロールの作成および変更を許可する](emr-iam-roles-create-permissions.md)」を参照してください。

### コンソールを使用してカスタムロールを指定する
<a name="emr-iam-roles-launch-console"></a>

クラスターを作成する際、**[Advanced options]** (詳細オプション) を使用して、Amazon EMR のカスタムサービスロール、EC2 インスタンスプロファイルのカスタムロール、およびカスタムの Auto Scaling ロールを指定することができます。[**Quick options**] を使用すると、EC2 インスタンスプロファイルのデフォルトのサービスロールおよびデフォルトロールが指定されます。詳細については、「[Amazon EMR で使用される IAM サービスロール](emr-iam-service-roles.md)」を参照してください。

------
#### [ Console ]

**コンソールでカスタム IAM ロールを指定する方法**

コンソールでクラスターを作成する際には、Amazon EMR のサービスロールや EC2 インスタンスプロファイルのカスタムロールを指定する必要があります。詳細については、「[Amazon EMR で使用される IAM サービスロール](emr-iam-service-roles.md)」を参照してください。

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) で Amazon EMR コンソールを開きます。

1. 左側のナビゲーションペインの **[EMR on EC2]** で、**[クラスター]** を選択し、**[クラスターの作成]** を選択します

1. **[セキュリティの設定とアクセス許可]** で、**[インスタンスプロファイルの IAM ロール]** フィールドと **[Amazon EMR のサービスロール]** フィールドを見つけます。各ロールタイプで、リストからロールを選択します。アカウント内のロールで、そのロールタイプに適切な信頼ポリシーが指定されているもののみ表示されます。

1. クラスターに適用するその他のオプションを選択します。

1. クラスターを起動するには、**[クラスターの作成]** を選択します。

------

### を使用してカスタムロール AWS CLI を指定する
<a name="emr-iam-roles-launch-cli"></a>

 AWS CLIから `create-cluster` コマンドとオプションを使用して、Amazon EMR のサービスロールとクラスター EC2 インスタンスのサービスロールを明示的に指定できます。`--service-role` オプションを使用してサービスロールを指定します。`--ec2-attributes` オプションの `InstanceProfile` 引数を使用して、EC2 インスタンスプロファイルのロールを指定します。

Auto Scaling ロールは、別のオプション `--auto-scaling-role` を使用して指定されます。詳細については、「[カスタムポリシーによる自動スケーリングを Amazon EMR のインスタンスグループに使用する](emr-automatic-scaling.md)」を参照してください。

**を使用してカスタム IAM ロールを指定するには AWS CLI**
+ 以下のコマンドは、クラスター起動時に、EC2 インスタンスプロファイルのカスタムのサービスロール、 *MyCustomServiceRoleForEMR* およびカスタムロール、*MyCustomServiceRoleForClusterEC2Instances* を指定します。この例では、デフォルトの Amazon EMR ロールを使用します。
**注記**  
読みやすくするために、Linux 行連続文字 (\$1) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

  ```
  aws emr create-cluster --name "Test cluster" --release-label emr-7.12.0 \
  --applications Name=Hive Name=Pig --service-role MyCustomServiceRoleForEMR \
  --ec2-attributes InstanceProfile=MyCustomServiceRoleForClusterEC2Instances,\
  KeyName=myKey --instance-type m5.xlarge --instance-count 3
  ```

`--use-default-roles` オプションではなく、これらのオプションを使用して、明示的にデフォルトロールを指定できます。`--use-default-roles` オプションは、サービスロールを指定します。また、 AWS CLIの `config` ファイルに定義されている EC2 インスタンスプロファイルのロールを指定します。

次の例は、Amazon EMR のカスタムロールを指定する AWS CLI の `config` ファイルの内容を示しています。この設定ファイルで `--use-default-roles` オプションを指定すると、*MyCustomServiceRoleForEMR* と *MyCustomServiceRoleForClusterEC2Instances* を使用してクラスターが作成されます。デフォルトでは、`config` ファイルはデフォルトの `service_role` として `AmazonElasticMapReduceRole` を指定し、デフォルトの `instance_profile` として `EMR_EC2_DefaultRole` を指定します。

```
[default]
output = json
region = us-west-1
aws_access_key_id = myAccessKeyID
aws_secret_access_key = mySecretAccessKey
emr =
     service_role = MyCustomServiceRoleForEMR
     instance_profile = MyCustomServiceRoleForClusterEC2Instances
```

# Amazon S3 への EMRFS リクエストの IAM ロールを設定する
<a name="emr-emrfs-iam-roles"></a>

**注記**  
このページで説明している EMRFS ロールマッピング機能は、Amazon EMR 6.15.0 で Amazon S3 Access Grants が導入されたことで改善されました。Amazon S3 のデータに対するスケーラブルなアクセスコントロールソリューションとして、[Amazon EMR での S3 Access Grants](emr-access-grants.md) の使用をお勧めします。

クラスターで実行されているアプリケーションが `s3://mydata` 形式を使用してデータを参照する場合、Amazon EMR は EMRFS を使用してリクエストを行います。EMRFS は Amazon S3 と対話するために、[Amazon EC2 インスタンスプロファイル](emr-iam-role-for-ec2.md)にアタッチされたアクセス許可ポリシーを引き受けます。アプリケーションを実行するユーザーやグループ、または Amazon S3 内のデータの場所に関係なく、同じ Amazon EC2 インスタンスプロファイルが使用されます。

クラスターに複数のユーザーがあり、各ユーザーに EMRFS を介して Amazon S3 のデータへの異なるレベルのアクセスが必要な場合は、EMRFS の IAM ロールを使用してセキュリティ設定を設定できます。EMRFS は、リクエスト元のユーザーやグループ、または Amazon S3 内のデータの場所に応じて、クラスター EC2 インスタンスの異なるサービスロールを引き受けることができます。EMRFS の IAM ロールごとに、Amazon S3 のデータにアクセスするための異なるアクセス許可を持つことができます。クラスター EC2 インスタンスのサービスロールの使用の詳細については、「[クラスター EC2 インスタンスのサービスロール (EC2 インスタンスプロファイル)](emr-iam-role-for-ec2.md)」を参照してください。

EMRFS のカスタム IAM ロールの使用は、Amazon EMR バージョン 5.10.0 以降でサポートされます。以前のバージョンを使用しているか、EMRFS の IAM ロールが提供するもの以上の要件がある場合は、代わりにカスタム認証情報プロバイダーを作成することができます。詳細については、「[Authorizing access to EMRFS data in Amazon S3](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-plan-credentialsprovider)」を参照してください。

セキュリティ設定を使用して EMRFS の IAM を指定する場合は、ロールマッピングを設定します。各ロールマッピングは、識別子に対応する IAM ロールを指定します。これらの識別子は、EMRFS を介して Amazon S3 にアクセスするための基準を決定します。識別子は、ユーザー、グループ、またはデータの場所を示す Amazon S3 のプレフィックスです。EMRFS から Amazon S3 に行ったリクエストがアクセスの基準に一致すると、EMRFS では、リクエストに対応する IAM ロールをクラスター EC2 インスタンスに引き受けさせます。クラスター EC2 インスタンスのサービスロールにアタッチされた IAM アクセス許可の代わりに、そのロールにアタッチされた IAM アクセス許可が適用されます。

ロールマッピングのユーザーやグループは、クラスターで定義されている Hadoop ユーザーおよびグループです。ユーザーおよびグループは、EMRFS を使用するアプリケーション (例: YARN ユーザーの偽装) のコンテキストで EMRFS に渡されます。Amazon S3 プレフィックスは、任意の深さのバケット指定子 (例: `s3://amzn-s3-demo-bucket`、`s3://amzn-s3-demo-bucket/myproject/mydata`) にすることができます。1 つのロールマッピング内で複数の識別子を指定できますが、すべてを同じタイプにする必要があります。

**重要**  
EMRFS の IAM ロールは、アプリケーションのユーザー間でのアプリケーションレベルの分離をもたらします。ホスト上のユーザー間でのホストレベルの分離は提供されません。クラスターのアクセス権を持つユーザーは、ロールを引き受けるための分離をバイパスできます。

クラスターアプリケーションが EMRFS を介して Amazon S3 にリクエストを行うと、EMRFS は、セキュリティ設定に表示されるトップダウン順序でロールマッピングを評価します。EMRFS を介して行われた要求がどの識別子とも一致しない場合、EMRFS はクラスター EC2 インスタンスのサービスロールを使用するようフォールバックします。このため、このロールにアタッチされたポリシーで Amazon S3 へのアクセス許可を制限することをお勧めします。詳細については、「[クラスター EC2 インスタンスのサービスロール (EC2 インスタンスプロファイル)](emr-iam-role-for-ec2.md)」を参照してください。

## ロールを設定する
<a name="emr-emrfs-iam-roles-role-configuration"></a>

EMRFS の IAM ロールを使用してセキュリティ設定をセットアップする前に、ロールおよびアクセス許可のポリシーを計画して作成し、ロールにアタッチします。詳細については、「*IAM ユーザーガイド*」の「[EC2 インスタンスのロールの仕組み](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)」を参照してください。アクセス許可ポリシーを作成する際は、まず EC2 のデフォルトの Amazon EMR ロールにアタッチする管理ポリシーを作成し、次にこのポリシーを要件に応じて編集することが推奨されます。デフォルトのロール名は `EMR_EC2_DefaultRole` で、編集するデフォルトの管理ポリシーは `AmazonElasticMapReduceforEC2Role` です。詳細については、「[クラスター EC2 インスタンスのサービスロール (EC2 インスタンスプロファイル)](emr-iam-role-for-ec2.md)」を参照してください。

### ロールアクセス許可を引き受けるための信頼ポリシーの更新
<a name="emr-emrfs-iam-role-trust-policy"></a>

EMRFS が使用する各ロールには、EC2 に対するクラスターの Amazon EMR ロールがそのロールを引き受けることを許可する信頼ポリシーが必要です。同様に、EC2 に対するクラスターの Amazon EMR ロールには、EMRFS ロールがそのロールを引き受けること許可する信頼ポリシーが必要です。

次の例では、信頼ポリシーが EMRFS のロールにアタッチされています。ステートメントは、EC2 のデフォルトの Amazon EMR ロールがこのロールを引き受けることを許可します。たとえば、2 つの架空の EMRFS ロール (`EMRFSRole_First` と `EMRFSRole_Second`) がある場合、このポリシーステートメントは両方の信頼ポリシーにそれぞれ追加されます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": "arn:aws:iam::123456789012:role/EMR_EC2_DefaultRole",
      "Sid": "AllowSTSAssumerole"
    }
  ]
}
```

------

また、次の信頼ポリシー例は `EMR_EC2_DefaultRole` に追加されて、2 つの架空の EMRFS ロールを引き受けることを許可します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/EMRFSRole_First",
        "arn:aws:iam::123456789012:role/EMRFSRole_Second"
      ],
      "Sid": "AllowSTSAssumerole"
    }
  ]
}
```

------

**IAM ロールの信頼ポリシーを更新するには**

IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. [**ロール**] を選択して [**検索**] にロール名を入力したら、その [**ロール名**] を選択します。

1. **[Trust relationships]** (信頼関係)、**[Edit trust relationship]** (信頼関係の編集) の順に選択します。

1. 上記のガイドラインに従って、**[ポリシードキュメント]** に応じて信頼ステートメントを追加し、**[信頼ポリシーの更新]** を選択します。

### キーユーザーとしてロールを指定する
<a name="emr-emrfs-iam-role-key-user"></a>

 AWS KMS keyを使用して暗号化されている Amazon S3 の場所へのアクセスをロールで許可する場合は、そのロールがキーユーザーとして指定されていることを確認します。これにより、KMS キーを使用するアクセス許可がロールに付与されます。詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[AWS KMSでのキーポリシー](https://docs.aws.amazon.com//kms/latest/developerguide/key-policies.html#key-policy-default-allow-users)」を参照してください。

## EMRFS の IAM ロールを使用したセキュリティ設定のセットアップ
<a name="emr-emrfs-iam-roles-setup"></a>

**重要**  
指定した EMRFS の IAM ロールのいずれも適用されない場合、EMRFS は EC2 の Amazon EMR ロールにフォールバックします。クラスターを作成するときに､このロールをカスタマイズして、アプリケーションに適切な Amazon S3 へのアクセス権限を制限し、`EMR_EC2_DefaultRole` の代わりにこのカスタムロールを指定することを検討してください。詳細については、「[Amazon EMR で IAM ロールをカスタマイズする](emr-iam-roles-custom.md)」および「[クラスター作成時にカスタムの IAM ロールを指定する](emr-iam-roles-custom.md#emr-iam-roles-launch-jobflow)」を参照してください。

**コンソールを使用して Amazon S3 への EMRFS リクエストの IAM ロールを指定するには**

1. ロールのマッピングを指定するセキュリティ設定を作成します。

   1. Amazon EMR コンソールで **[Security configurations]** (セキュリティ設定) > **[Create]** (作成) を選択します。

   1. セキュリティ設定の [**Name (名前)**] を入力します。この名前を使用して、クラスターの作成時に使用するセキュリティ設定を指定します。

   1. **[Use IAM roles for EMRFS requests to Amazon S3]** (Amazon S3 への EMRFS のリクエストに IAM ロールを使用) を選択します。

   1. 適用する **[IAM ロール]** を選択し、**[アクセスの基礎]** でリストから識別子タイプ (**[ユーザー]**、**[グループ]**、または **[S3 プレフィックス]**) を選択して、対応する識別子を入力します。複数の識別子を使用する場合は、カンマでスペースを入れずに区切ります。各識別子の種類の詳細については、下記の「[JSON configuration reference](#emrfs-seccfg-json)」を参照してください。

   1. [**Add role (ロールの追加)**] を選択して､前の手順で説明したように追加のロールマッピングを設定します。

   1. 必要に応じて他のセキュリティ設定オプションを設定し、[**Create (作成)**] を選択します。詳細については、「[Amazon EMR コンソールまたは を使用してセキュリティ設定を作成する AWS CLI](emr-create-security-configuration.md)」を参照してください。

1. クラスターの作成時に上記で作成したセキュリティ設定を指定します。詳細については、「[Amazon EMR クラスターのセキュリティ設定を指定する](emr-specify-security-configuration.md)」を参照してください。

**を使用して Amazon S3 への EMRFS リクエストの IAM ロールを指定するには AWS CLI**

1. `aws emr create-security-configuration` コマンドを使用して､セキュリティ設定の名前とセキュリティ設定の詳細を JSON 形式で指定します。

   次のコマンド例は、`EMRFS_Roles_Security_Configuration` という名前のセキュリティ設定を作成します。これは、`MyEmrfsSecConfig.json` ファイルの JSON 構造に基づいており、コマンドが実行されるのと同じディレクトリに保存されます。

   ```
   aws emr create-security-configuration --name EMRFS_Roles_Security_Configuration --security-configuration file://MyEmrFsSecConfig.json.
   ```

   次の `MyEmrFsSecConfig.json` ファイルの構造のガイドラインを使用します。他のセキュリティ設定オプションの構造と共に､この構造を指定することができます。詳細については、「[Amazon EMR コンソールまたは を使用してセキュリティ設定を作成する AWS CLI](emr-create-security-configuration.md)」を参照してください。

   以下は、セキュリティ設定内の EMRFS のカスタム IAM ロールを指定するための JSON スニペットの例です。3 つの異なる識別子タイプのロールマッピングと、パラメータリファレンスを示します。

   ```
   {
     "AuthorizationConfiguration": {
       "EmrFsConfiguration": {
         "RoleMappings": [{
           "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_user1",
           "IdentifierType": "User",
           "Identifiers": [ "user1" ]
         },{
           "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_to_demo_s3_buckets",
           "IdentifierType": "Prefix",
           "Identifiers": [ "s3://amzn-s3-demo-bucket1/","s3://amzn-s3-demo-bucket2/" ]
         },{
           "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_AdminGroup",
           "IdentifierType": "Group",
           "Identifiers": [ "AdminGroup" ]
         }]
       }
     }
   }
   ```    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/emr-emrfs-iam-roles.html)

1. `aws emr create-cluster` コマンドを使用してクラスターを作成し、前のステップで作成したセキュリティ設定を指定します。

   次の例では、Hadoop アプリケーションがインストールされているデフォルトのコアでクラスターを作成します。クラスターは、上記で `EMRFS_Roles_Security_Configuration` として作成されたセキュリティ設定を使用し、さらに EC2 のカスタム Amazon EMR ロール `EC2_Role_EMR_Restrict_S3` (`--ec2-attributes` パラメータの `InstanceProfile` 引数を使用して指定) も使用します。
**注記**  
読みやすくするために、Linux 行連続文字 (\$1) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

   ```
   aws emr create-cluster --name MyEmrFsS3RolesCluster \
   --release-label emr-7.12.0 --ec2-attributes InstanceProfile=EC2_Role_EMR_Restrict_S3,KeyName=MyKey \
   --instance-type m5.xlarge --instance-count 3 \
   --security-configuration EMRFS_Roles_Security_Configuration
   ```

# AWS Glue Data Catalog への Amazon EMR アクセスにリソースベースのポリシーを使用する
<a name="emr-iam-roles-glue"></a>

Amazon EMR で AWS Glue を Hive、Spark、または Presto と組み合わせて使用する場合、 AWS Glue は Data Catalog リソースへのアクセスを制御するためのリソースベースのポリシーをサポートします。これらのリソースには、データベース、テーブル、接続、ユーザー定義関数が含まれます。詳細については、「*AWS Glue デベロッパーガイド*」の「[AWS Glue リソースポリシー](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html)」を参照してください。

リソースベースのポリシーを使用して Amazon EMR 内から AWS Glue へのアクセスを制限する場合、アクセス許可ポリシーで指定するプリンシパルは、クラスターの作成時に指定する EC2 インスタンスプロファイルに関連付けられたロール ARN である必要があります。例えば、カタログにアタッチされたリソースベースのポリシーの場合、以下の例に示されている形式を使用して、クラスター EC2 インスタンスのデフォルトサービスロールのロール ARN である *EMR\$1EC2\$1DefaultRole* を `Principal` として指定できます。

```
arn:aws:iam::acct-id:role/EMR_EC2_DefaultRole
```

*acct-id* は Glue アカウント ID AWS とは異なる場合があります。これにより、さまざまなアカウントで EMR クラスターからアクセスできます。異なるアカウントから、複数のプリンシパルを指定できます。

# AWS サービスを直接呼び出すアプリケーションで IAM ロールを使用する
<a name="emr-iam-roles-calling"></a>

クラスターの EC2 インスタンスで実行されているアプリケーションは、EC2 インスタンスプロファイルを使用して、 AWS サービスを呼び出すときに一時的なセキュリティ認証情報を取得できます。

Amazon EMR のリリース 2.3.0 以降で使用できる Hadoop のバーションは、IAM ロールを利用できるように更新されています。アプリケーションが Hadoop アーキテクチャ上で厳密に実行され、 のサービスを直接呼び出さない場合は AWS、変更なしで IAM ロールで動作する必要があります。

アプリケーションで のサービス AWS を直接呼び出す場合は、IAM ロールを利用するためにサービスを更新する必要があります。これにより、アプリケーションは、クラスターの EC2 インスタンスの `/etc/hadoop/conf/core-site.xml` からアカウント認証情報を取得する代わりに、SDK を利用して IAM ロールを使うリソースにアクセスしたり、EC2 インスタンスメタデータを呼び出して一時的な認証情報を取得したりできます。

**SDK を使用して IAM ロールを持つ AWS リソースにアクセスするには**
+ 以下のトピックでは、いくつかの AWS SDKs を使用して IAM ロールを使用して一時的な認証情報にアクセスする方法を示します。各トピックは IAM ロールを使用しないアプリケーションのバージョンから始まり、IAM ロールを使用するためにアプリケーションを変換する処理を説明します。
  +  「*AWS SDK for Java デベロッパーガイド*」の「[Java 用 SDK を使用した Amazon EC2 インスタンスの IAM ロールの設定](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-roles.html)」 
  +  「*AWS SDK for .NET デベロッパーガイド*」の「[Using IAM roles for Amazon EC2 instances with the SDK for .NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-roles.html)」 
  +  「*AWS SDK for PHP デベロッパーガイド*」の「[PHP 用 SDK を使用した Amazon EC2 インスタンスの IAM ロールの設定](https://docs.aws.amazon.com/sdk-for-php/latest/developer-guide/php-dg-roles.html)」 
  +  「*AWS SDK for Ruby デベロッパーガイド*」の「[Ruby 用 SDK を使用した Amazon EC2 インスタンスの IAM ロールの設定](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/ruby-dg-roles.html)」 

**EC2 インスタンスメタデータから一時的な認証情報を取得するには**
+ 指定された IAM ロールと連動して実行している EC2 インスタンスから以下の URL を呼び出します。これにより、関連する一時的なセキュリティ認証情報 (AccessKeyId、SecretAccessKey、SessionToken、および Expiration) が返されます。次の例では Amazon EMR のデフォルトのインスタンスプロファイル (`EMR_EC2_DefaultRole`) を使用しています。

  ```
  GET http://169.254.169.254/latest/meta-data/iam/security-credentials/EMR_EC2_DefaultRole
  ```

IAM ロールを使用するアプリケーションの記述の詳細については、[Amazon EC2 インスタンスで実行されるアプリケーションに AWS リソースへのアクセスを許可する](https://docs.aws.amazon.com/IAM/latest/UserGuide/role-usecase-ec2app.html)」を参照してください。

一時的なセキュリティ認証情報の詳細については、「*一時的セキュリティ認証情報の使用*」ガイドの「[一時的な認証情報の使用](https://docs.aws.amazon.com/STS/latest/UsingSTS/using-temp-creds.html)」を参照してください。

# ユーザーおよびグループによるロールの作成および変更を許可する
<a name="emr-iam-roles-create-permissions"></a>

IAM プリンシパル (ユーザーおよびグループ) が、デフォルトロールなど、クラスターのロールを作成、変更、指定するには、次のアクションの実行権限が必要です。各アクションの詳細については、「*IAM API リファレンス*」の「[アクション](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Operations.html)」を参照してください 。
+ `iam:CreateRole`
+ `iam:PutRolePolicy`
+ `iam:CreateInstanceProfile`
+ `iam:AddRoleToInstanceProfile`
+ `iam:ListRoles`
+ `iam:GetPolicy`
+ `iam:GetInstanceProfile`
+ `iam:GetPolicyVersion`
+ `iam:AttachRolePolicy`
+ `iam:PassRole`

`iam:PassRole` アクセス権限では、クラスターを作成できます。残りのアクセス権限では、デフォルトのロールを作成できます。

ユーザーへのアクセス許可の割り当てについては、「*IAM ユーザーガイド*」の「[ユーザーのアクセス許可の変更](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)」を参照してください。