Amazon EMR でサービスリンクロールを使用して先書きログを作成する
Amazon EMR は、AWS Identity and Access Management (IAM) のサービスにリンクされたロールを使用しています。サービスにリンクされたロールは、Amazon EMR に直接リンクされた特殊な IAM ロールです。サービスにリンクされたロールは、Amazon EMR で事前定義されています。このロールには、サービスがユーザーに代わって他の AWS のサービスを呼び出すために必要な、すべてのアクセス許可が付与されています。
サービスにリンクされたロールは、Amazon EMR サービスロールおよび Amazon EMR の Amazon EC2 インスタンスプロファイルと連動します。サービスロールとインスタンスプロファイルに関する詳細については、「AWS のサービスおよびリソースへのアクセス許可を Amazon EMR に付与する IAM サービスロールの設定」を参照してください。
サービスにリンクされたロールを使用すると、必要な許可を手動で追加する必要がないため、Amazon EMR のセットアップが簡単になります。サービスリンクロールの許可は Amazon EMR が定義し、特に定義されない限り、Amazon EMR のみがそのロールを引き受けることができます。定義したアクセス許可には、信頼ポリシーと許可ポリシーが含まれます。この許可ポリシーを他の IAM エンティティにアタッチすることはできません。
Amazon EMR のサービスリンクロールは、関連するリソースを削除し、アカウント内のすべての EMR クラスターを終了した後にのみ削除できます。これにより、リソースへのアクセス許可を誤って削除することが防止され、Amazon EMR リソースが保護されます。
先行書き込みログ記録 (WAL) のサービスリンクロールのアクセス許可
Amazon EMR は、サービスリンクロール AWSServiceRoleForEMRWAL を使用してクラスターステータスを取得します。
AWSServiceRoleForEMRWAL サービスリンクロールは、次のサービスを信頼してロールを引き受けます。
-
emrwal.amazonaws.com
サービスリンクロールの EMRDescribeClusterPolicyForEMRWAL アクセス許可ポリシーにより、Amazon EMR は、指定されたリソースで次のアクションを完了することができます。
-
アクション:
*
上でDescribeCluster
IAM エンティティ (この場合 Amazon EMR WAL) がサービスにリンクされたロールを作成、編集、削除できるようにするには、アクセス許可を設定する必要があります。必要に応じて、インスタンスプロファイルのアクセス許可ポリシーに次のステートメントを追加します。
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.goskope.com.cn" ] } } }
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.goskope.com.cn" ] } } }
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.goskope.com.cn" ] } } }
Amazon EMR のサービスリンクロールの作成
AWSServiceRoleForEMRWAL ロールを手動で作成する必要はありません。Amazon EMR は、EMRWAL CLI または AWS CloudFormation で WAL ワークスペースを作成するときにこのサービスにリンクされたロールを自動的に作成します。または、Amazon EMR WAL のワークスペースを設定したときにサービスにリンクされたロールがまだ存在しない場合は、HBase がサービスにリンクされたロールを作成します。サービスにリンクされたロールを作成するためのアクセス許可が必要です。この機能を (ユーザー、グループ、ロールなどの) IAM エンティティのアクセス許可ポリシーに追加するステートメントの例については、前のセクション「先行書き込みログ記録 (WAL) のサービスリンクロールのアクセス許可」を参照してください。
Amazon EMR のサービスリンクロールの編集
Amazon EMR は、AWSServiceRoleForEMRWAL サービスリンクロールの編集を許可しません。サービスリンクロールを作成すると、多くのエンティティによってサービスリンクロールが参照される可能性があるため、サービスリンクロール名を変更することはできません。ただし、IAM を使用したサービスリンクロール記述の編集はできます。
サービスにリンクされたロールの説明の編集 (IAM コンソール)
サービスにリンクされたロールの説明は、IAM コンソールを使用して編集できます。
サービスにリンクされたロールの説明を編集するには (コンソール)
-
IAM コンソールのナビゲーションペインで [ロール] を選択します。
-
変更するロールの名前を選択します。
-
[Role description] (ロールの説明) の右にある [Edit] (編集) を選択します。
-
ボックスに新しい説明を入力し、[Save changes] (変更の保存) を選択します。
サービスにリンクされたロールの説明の編集 (IAM CLI)
AWS Command Line Interface から IAM コマンドを使用して、サービスにリンクされたロールの説明を編集できます。
サービスにリンクされたロールの説明を変更するには (CLI)
-
(オプション) ロールの現在の説明を表示するには、次のコマンドを使用します。
$
aws iam get-role --role-name
role-name
CLI コマンドでは、ARN ではなくロール名を使用してロールを参照します。例えば、ロールの ARN が
arn:aws:iam::123456789012:role/myrole
である場合、そのロールをmyrole
と参照します。 -
サービスにリンクされたロールの説明を更新するには、次のいずれかのコマンドを使用します。
$
aws iam update-role-description --role-name
role-name
--descriptiondescription
サービスにリンクされたロールの説明の編集 (IAM API)
サービスにリンクされたロールの説明は、IAM API を使用して編集できます。
サービスにリンクされたロールの説明を変更するには (API)
-
(オプション) ロールの現在の説明を表示するには、次のコマンドを使用します。
IAM API: GetRole
-
ロールの説明を更新するには、次のコマンドを使用します。
IAM API: UpdateRoleDescription
Amazon EMR のサービスリンクロールの削除
サービスリンクロールが必要な機能またはサービスが不要になった場合には、そのサービスリンクロールを削除することをお勧めします。そうすることで、使用していないエンティティがアクティブにモニタリングされたり、メンテナンスされたりすることがなくなります。ただし、削除する前に、サービスにリンクされたロールをクリーンアップする必要があります。
注記
AWSServiceRoleForEMRWAL ロールを削除しても、先行書き込みログ記録オペレーションは影響を受けませんが、Amazon EMR は EMR クラスターが終了すると作成したログを自動的に削除しません。したがって、サービスリンクロールを削除する場合は、Amazon EMR WAL ログを手動で削除する必要があります。
サービスにリンクされたロールのクリーンアップ
IAM を使用してサービスにリンクされたロールを削除するには、まずそのロールにアクティブなセッションがないことを確認し、そのロールで使用されているリソースをすべて削除する必要があります。
サービスにリンクされたロールにアクティブなセッションがあるかどうかを、IAM コンソールで確認するには
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで [Roles] (ロール) を選択します。AWSServiceRoleForEMRWAL ロールの名前 (チェックボックスではない) を選択します。
-
選択したロールの [概要] ページで [アクセスアドバイザー] を選択します。
-
[アクセスアドバイザー] タブで、サービスにリンクされたロールの最新のアクティビティを確認します。
注記
Amazon EMR が AWSServiceRoleForEMRWAL サービスリンクロールを使用しているかどうか不明な場合は、サービスリンクロールを削除してみてください。サービスでロールが使用されている場合、削除は失敗し、サービスリンクロールが使用されているリージョンが表示されます。サービスリンクロールが使用されている場合は、サービスリンクロールを削除する前にセッションが終了するのを待つ必要があります。サービスにリンクされたロールのセッションを取り消すことはできません。
AWSServiceRoleForEMRWAL が使用している Amazon EMR リソースを削除するには
-
アカウントのすべてのクラスターを終了します。詳細については、「開始中、実行中、待機中の状態にある Amazon EMR クラスターを終了する」を参照してください。
サービスにリンクされたロールの削除 (IAM コンソール)
IAM コンソールを使用して、サービスにリンクされたロールを削除できます。
サービスにリンクされたロールを削除するには (コンソール)
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで [Roles] (ロール) を選択します。AWSServiceRoleForEMRWAL の横のチェックボックス (名前や行自体ではなく) を選択します。
-
ページ上部にある [ロールのアクション] で [ロールの削除] を選択します。
-
確認ダイアログボックスで、サービスの最終アクセス時間データを確認します。これは、選択したそれぞれのロールの AWS サービスへの最終アクセス時間を示します。これは、そのロールが現在アクティブであるかどうかを確認するのに役立ちます。続行するには、[はい、削除します] を選択します。
-
IAM コンソール通知を見て、サービスにリンクされたロールの削除の進行状況をモニタリングします。IAM サービスにリンクされたロールの削除は非同期であるため、削除するロールを送信すると、削除タスクは成功または失敗する可能性があります。タスクが失敗した場合は、通知から 詳細を表示または リソースを表示を選択して、削除が失敗した理由を知ることができます。そのロールで使用中のリソースがサービスにあるために削除に失敗した場合、この失敗の理由にはリソースのリストも含まれます。
サービスにリンクされたロールの削除 (IAM CLI)
AWS Command Line Interface から IAM コマンドを使用して、サービスにリンクされたロールを削除できます。サービスにリンクされているロールは、使用されている、または関連するリソースがある場合は削除できないため、削除リクエストを送信する必要があります。これらの条件が満たされないとき、そのリクエストは拒否される場合があります。
サービスにリンクされたロールを削除するには (CLI)
-
削除タスクのステータスを確認するには、レスポンスから
deletion-task-id
を取得する必要があります。サービスにリンクされたロールの削除リクエストを送信するには、次のコマンドを入力します。$
aws iam delete-service-linked-role --role-name AWSServiceRoleForEMRWAL
-
削除タスクのステータスを確認するには、次のコマンドを入力します。
$
aws iam get-service-linked-role-deletion-status --deletion-task-id
deletion-task-id
削除タスクのステータスは、
NOT_STARTED
、IN_PROGRESS
、SUCCEEDED
、またはFAILED
となります。削除が失敗した場合は、失敗した理由がコールによって返され、トラブルシューティングが可能になります。
サービスにリンクされたロールの削除 (IAM API)
IAM API を使用して、サービスにリンクされたロールを削除できます。サービスにリンクされているロールは、使用されている、または関連するリソースがある場合は削除できないため、削除リクエストを送信する必要があります。これらの条件が満たされないとき、そのリクエストは拒否される場合があります。
サービスにリンクされたロールを削除するには (API)
-
サービスにリンクされたロールの削除リクエストを送信するには、DeleteServiceLinkedRole を呼び出します。リクエストで、AWSServiceRoleForEMRWAL のロール名を指定します。
削除タスクのステータスを確認するには、レスポンスから
DeletionTaskId
を取得する必要があります。 -
削除タスクのステータスを確認するには、GetServiceLinkedRoleDeletionStatus を呼び出します。リクエストで
DeletionTaskId
を指定します。削除タスクのステータスは、
NOT_STARTED
、IN_PROGRESS
、SUCCEEDED
、またはFAILED
となります。削除が失敗した場合は、失敗した理由がコールによって返され、トラブルシューティングが可能になります。
AWSServiceRoleForEMRWAL がサポートされているリージョン
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 | 可能 |