すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:カスタム ECS アプリケーションロールを使用した、ご利用の Alibaba Cloud アカウント内の他のクラウドリソースへのアクセス

最終更新日:Mar 26, 2026

カスタム ECS アプリケーションロールを EMR クラスターにアタッチすることで、クラスターのノードは認証情報を保存することなく、ご利用の Alibaba Cloud アカウント内の他のクラウドリソース (Object Storage Service (OSS) や Simple Log Service (SLS) など) にアクセスできます。ロールにアタッチされたポリシーは、クラスターがアクセスできるリソースと操作を正確に定義するため、きめ細かな制御が可能になります。

重要

EMR V5.x 以降、EMR V4.5 より後のマイナーバージョン、または EMR V3.32 より後のマイナーバージョンを実行するクラスターを作成する場合、ステップ 2 の信頼ポリシーの更新は不要です。これより前のバージョンでは、信頼できるサービスを Elastic Compute Service (ECS) から EMR に変更する必要があります。詳細については、「ステップ 2、サブステップ 4」をご参照ください。

前提条件

開始する前に、以下が準備できていることを確認してください。

概要

設定には 3 つのステップが含まれます:

  1. ポリシーの作成 — クラスターがアクセスできるリソースと実行できる操作を定義します。

  2. RAM ロールの作成 — ECS が引き受けることができるロールを作成し、ステップ 1 のポリシーをアタッチします。

  3. クラスターの作成とアクセスの検証 — クラスター作成時に RAM ロールを関連付け、アクセスが機能することを確認します。

ステップ 1:ポリシーの作成

  1. Alibaba Cloud アカウントで Resource Access Management (RAM) コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[権限] > [ポリシー] を選択し、[ポリシーの作成] をクリックします。

  3. [ポリシーの作成] ページで、[JSON] タブをクリックし、エディターにポリシードキュメントを入力します。次の例では、特定の OSS バケットへの読み取り専用アクセスを許可します:

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "oss:GetObject",
                    "oss:ListObjects"
                ],
                "Resource": [
                    "acs:oss:*:*:examplebucket",
                    "acs:oss:*:*:examplebucket/*"
                ],
                "Effect": "Allow"
            }
        ]
    }

    examplebucket を実際の OSS バケット名に置き換えてください。Resource フィールドには 2 つのエントリが必要です。1 つはバケット自体 (examplebucket) で、もう 1 つはその中のすべてのオブジェクト (examplebucket/*) です。Action フィールドは読み取り専用アクセスを許可します。oss:GetObject はオブジェクトのダウンロードを、oss:ListObjects はオブジェクトのリスト表示を許可します。ポリシーの構文と利用可能な操作の詳細については、「ポリシー要素」をご参照ください。

  4. [OK] をクリックし、[基本情報] セクションで [名前] フィールドを設定します。この例では、名前は test-emr です。

  5. [OK] をクリックします。

ステップ 2:RAM ロールの作成

  1. RAM コンソールの左側のナビゲーションウィンドウで、[ID] > [ロール] を選択し、[ロールの作成] をクリックします。

  2. [ロールタイプの選択] ステップで、[信頼できるエンティティを選択][Alibaba Cloud サービス] に設定し、[次へ] をクリックします。

  3. [ロールの設定] ステップで、次のパラメーターを設定します。[OK] をクリックします。

    パラメーター
    RAM ロール名ロールの名前を入力します。この例では test-emr
    信頼できるサービスの選択[Elastic Compute Service]
  4. (任意) 信頼ポリシーの更新。これより前のバージョンでは、信頼できるサービスを ECS から EMR に変更する必要があります。この変更を行わないと、クラスターの作成が NoPermission エラーで失敗します。

    重要

    EMR V5.x 以降、EMR V4.5 より後のマイナーバージョン、または EMR V3.32 より後のマイナーバージョンを実行するクラスターを作成する場合、このステップはスキップしてください。これらのバージョンではこの変更は不要です。

    1. [ロール] ページで、作成した RAM ロールの名前をクリックします。

    2. [信頼ポリシー] タブをクリックし、[信頼ポリシーの編集] をクリックします。

    3. ecs.aliyuncs.comemr.aliyuncs.com に変更します。Trust policy edit

    4. [信頼ポリシーのドキュメントを保存] をクリックします。

  5. ロールに必要な権限を付与します:

    1. [ロール] ページで、作成したロールを見つけ、[操作] 列の [権限の付与] をクリックします。

    2. [権限の付与] パネルで、[ポリシー] セクションのドロップダウンリストから [カスタムポリシー] を選択し、ステップ 1 で作成したポリシーを選択します。

    3. [権限の付与] をクリックし、[閉じる] をクリックします。

ステップ 3:クラスターの作成とアクセスの検証

  1. EMR コンソールにログインします。左側のナビゲーションウィンドウで、[EMR on ECS] をクリックします。

  2. 上部のナビゲーションバーで、クラスターを配置するリージョンを選択し、リソースグループを選択します。

  3. [クラスターの作成] をクリックします。[基本設定] ステップの [詳細設定] セクションで、ステップ 2 で作成した RAM ロールの名前を入力します。その他のクラスター構成オプションについては、「クラスターの作成」をご参照ください。

    Advanced settings for ECS application role

  4. クラスターが作成されたら、SSH を使用してクラスターにログインします。詳細については、「クラスターへのログイン」をご参照ください。

  5. 次のコマンドを実行して、クラスターがポリシーで指定された OSS バケットにアクセスできることを確認します:

    hdfs dfs -ls oss://<yourBucketName>/

    <yourBucketName> を実際の OSS バケット名に置き換えてください。

    • バケットのコンテンツがリスト表示されれば、アクセスは正常に機能しています。

    • アクセスが拒否された場合、クラスターにはバケットへのアクセス権限がありません。以下の「よくある質問」をご参照ください。

よくある質問

クラスター作成時に NoPermission エラーが表示されるのはなぜですか?

次の項目を順番に確認してください:

  1. クラスターを作成する RAM ユーザーには AliyunEMRFullAccess が必要です。ユーザーが AliyunEMRDevelopAccess を持っている場合は、AliyunEMRFullAccess に変更してください。

  2. 指定した ECS アプリケーションロール名が有効であり、作成した RAM ロールと一致することを確認してください。

  3. 信頼ポリシーの更新が必要な EMR バージョン (EMR V5.x、EMR V4.5、または EMR V3.32 より前) を使用している場合は、信頼ポリシーで ecs.aliyuncs.comemr.aliyuncs.com に変更されていることを確認してください。

Hadoop 分散ファイルシステム (HDFS) から OSS バケットにアクセスできないのはなぜですか?

次の項目を順番に確認してください:

  1. OSS バケットは EMR クラスターと同じリージョンにある必要があります。異なるリージョンにある場合は、バケットのエンドポイントを接続文字列に追加してください。

  2. バケットはポリシーのリソースとしてリストされている必要があります。リストされていない場合は、ポリシーの Resource フィールドを更新して含めてください。

  3. バケットレベルの権限が OSS コンソールで直接設定されている場合、それらの設定がポリシーと競合する可能性があります。OSS コンソールの権限を削除し、RAM ポリシーの Action フィールドを介してのみアクセスを管理してください。