E-MapReduce (EMR) では、EMR コンソールでクラスターを作成する際に、[基本設定] ステップの [詳細設定] セクションでカスタム ECS アプリケーションロールを設定できます。このロールを使用して、ご利用の Alibaba Cloud アカウント内の Object Storage Service (OSS) や Log Service などの他のクラウドリソースにパスワード不要でアクセスできます。本トピックでは、カスタム ECS アプリケーションロールの作成および使用方法について説明します。
背景情報
- クラスターがアクセスできるのは、指定した OSS データディレクトリのみです。
- クラスターがアクセスできるのは、指定した外部リソースのみです。
前提条件
OSS コンソール で OSS バケットを作成します。バケットは、ご利用の E-MapReduce クラスターと同じリージョンに配置されている必要があります。詳細については、「バケットの作成」をご参照ください。
操作手順
ステップ 1:ポリシーの作成
-
カスタムポリシー作成ページに移動します。
-
Alibaba Cloud アカウントで RAM コンソール にログインします。
-
左側のナビゲーションウィンドウで、 を選択します。
-
[ポリシー] ページで、[ポリシーの作成] をクリックします。
-
-
[ポリシーの作成] ページで、[JSON] タブをクリックします。
-
ポリシーの内容を入力し、[OK] をクリックします。
次のポリシーを追加します。
{ "Version": "1", "Statement": [ { "Action": [ "oss:GetObject", "oss:ListObjects" ], "Resource": [ "acs:oss:*:*:emr-logs2", "acs:oss:*:*:emr-logs2/*" ], "Effect": "Allow" } ] }説明このポリシーには以下の要素が含まれます。
-
Action:リソースに対する操作。この例では、OSS 内のオブジェクトの読み取りおよびディレクトリの一覧表示に関する権限です。
-
Resource:権限付与対象のオブジェクト。この例では、emr-logs2 という名前の OSS バケットとその中のすべてのオブジェクトです。
ポリシーの基本要素の詳細については、「ポリシー要素」をご参照ください。
-
-
ポリシーの [Name] を入力します。
この例では test-emr を使用します。
-
[OK] をクリックします。
ステップ 2:RAM ロールの作成
-
RAM コンソールの左側ナビゲーションウィンドウで、 を選択します。
-
[Role] ページで、[Create Role] をクリックします。
-
RAM ロールを作成します。
-
[Alibaba Cloud サービス] を選択します。
-
[次へ] をクリックします。
-
[ロールの設定] パネルで、次のパラメーターを設定します。
パラメーター
説明
Role Name
この例では test-emr を使用します。
信頼できるサービスの選択
[クラウドサーバー (ECS)] を選択します。
-
[Complete] をクリックします。
-
-
オプション: 信頼できるサービスを変更します。
重要ご利用のクラスターが EMR 3.32 以降、EMR 4.5 以降、または EMR 5.x 以降を実行している場合は、このステップをスキップできます。
-
[Role] ページで、作成したばかりの [Role Name] をクリックします。
-
[信頼ポリシー] タブをクリックします。
-
[信頼ポリシーの編集] をクリックします。
-
ecs.aliyuncs.comをemr.aliyuncs.comに変更します。
-
[信頼ポリシーの保存] をクリックします。
-
-
カスタムポリシーをアタッチします。
-
[Role] ページで、作成したばかりの [Role Name] の [操作] 列で、[Add Authorization] をクリックします。
-
[Add Authorization] ページで、[カスタムポリシー] を選択し、作成したポリシーをアタッチします。
-
[OK] をクリックします。
-
[無効] をクリックします。
-
ステップ 3:クラスターの作成と外部リソースへのアクセス
-
上部のナビゲーションバーで、必要に応じて リージョンとリソースグループ を選択します。
-
[CREATE_CLUSTER] をクリックします。[基本設定] ページの [Advanced Settings] セクションで、[ステップ 2:RAM ロールの作成] で作成した RAM ロールの名前を追加します。詳細については、「クラスターの作成」をご参照ください。

-
クラスターの作成後、SSH でクラスターにログインします。詳細については、「クラスターへのログイン」をご参照ください。
次のコマンドを実行して、権限付与を確認します。
hdfs dfs -ls oss://<yourBucketName>/説明<yourBucketName> はご利用の OSS バケット名に置き換えてください。
-
ロールに必要な権限がない場合、OSS パスへのアクセスは失敗します。
-
ロールに必要な権限がある場合、OSS パスにアクセスできます。
-
よくある質問
- Q:クラスター作成時に NoPermission メッセージが表示された場合はどうすればよいですか?A:次の操作を順番に実行して問題を解決してください。
- クラスター作成に使用した RAM ユーザーに、クラスター作成および ECS アプリケーションロール変更の権限があるか確認します。RAM ユーザーに AliyunEMRDevelopAccess 権限が付与されている場合は、AliyunEMRFullAccess に変更する必要があります。
- クラスター作成時に指定した ECS アプリケーションロール名が有効かどうか確認します。
- 信頼ポリシーが emr.aliyuncs.com に変更されているか確認します。
-
Q:HDFS が OSS パスにアクセスできないのはなぜですか?
A:次の手順でトラブルシューティングを行ってください。
-
OSS バケットとクラスターが同じリージョンにあるか確認します。異なるリージョンにある場合は、アクセスパスに該当するエンドポイントを追加する必要があります。
-
OSS バケットが作成したポリシーのリソースとして含まれているか確認します。含まれていない場合は、ポリシーを修正してバケットを含めてください。
-
OSS コンソールでバケットの権限が設定されていないか確認します。設定されている場合は削除し、代わりに RAM ポリシーの Action 要素を通じて権限を管理してください。
-