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

E-MapReduce:Alibaba Cloud アカウントの他のクラウド リソースにアクセスするためのカスタム ECS アプリケーション ロールの使用

最終更新日:Jan 11, 2025

E-MapReduce(EMR)では、EMR コンソールでクラスターを作成する際に、[基本設定] ステップの [詳細設定] セクションでカスタム ECS アプリケーション ロールを設定できます。 このロールを使用して、パスワードなしモードで Alibaba Cloud アカウントの他のクラウド リソース(オブジェクト ストレージ サービス(OSS)やログ サービスなど)にアクセスできます。 このトピックでは、カスタム ECS アプリケーション ロールの作成方法と使用方法について説明します。

背景情報

EMR クラスターから外部リソースへのアクセスを管理するには、クラスターの作成時に設定されたカスタム ECS アプリケーション ロールにポリシーをアタッチします。 たとえば、次の制限を課すことができます。
  • クラスターは、指定した OSS データ ディレクトリにのみアクセスできます。
  • クラスターは、指定した外部リソースにアクセスできます。

前提条件

手順

  1. ステップ 1:ポリシーを作成する

  2. ステップ 2:RAM ロールを作成する

  3. ステップ 3:クラスターを作成し、外部リソースにアクセスする

ステップ 1:ポリシーを作成する

  1. [ポリシーの作成] ページに移動します。

    1. Alibaba Cloud アカウントを使用して、RAM コンソール にログインします。

    2. 左側のナビゲーション ペインで、[権限] > [ポリシー] を選択します。

    3. [ポリシー] ページで、[ポリシーの作成] をクリックします。

  2. [ポリシーの作成] ページで、[JSON] タブをクリックします。

  3. ポリシー ドキュメントを入力し、[OK] をクリックします。

    スクリプト エディターに次のポリシー ドキュメントを入力します。

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "oss:GetObject", // OSS からオブジェクトを取得するアクション
                    "oss:ListObjects" // OSS オブジェクトを一覧表示するアクション
                ],
                "Resource": [
                    "acs:oss:*:*:emr-logs2", // OSS バケット emr-logs2
                    "acs:oss:*:*:emr-logs2/*" // OSS バケット emr-logs2 内のオブジェクト
                ],
                "Effect": "Allow"
            }
        ]
    }
    説明

    ポリシーの要素:

    • Action:リソースに対するアクション。 この例では、OSS データの読み取りとクエリを実行するための権限が付与されます。

    • Resource:権限が付与されるリソース。 この例では、OSS バケット emr-logs2 とこの OSS バケット内のオブジェクトがリソースとして使用されます。

    ポリシーの基本要素の詳細については、ポリシー要素 を参照してください。

  4. 基本情報セクションの [名前] パラメーターを構成して、ポリシー名を指定します。

    この例では、名前は test-emr です。

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

ステップ 2:RAM ロールを作成する

  1. RAM コンソールの左側のナビゲーション ペインで、[ID] > [ロール] を選択します。

  2. [ロール] ページで、[ロールの作成] をクリックします。

  3. RAM ロールを作成します。

    1. ロールタイプの選択手順で、信頼できるエンティティの選択で [alibaba Cloudサービス] を選択します。

    2. [次へ] をクリックします。

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

      パラメーター

      説明

      RAM ロール名

      この例では、名前は test-emr です。

      信頼できるサービスの選択

      ドロップダウン リストから [elastic Compute Service] を選択します。

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

  4. オプション 信頼できるサービスを変更します。

    重要

    EMR V5.X 以降、EMR V4.5 以降のマイナー バージョン、または EMR V3.32 以降のマイナー バージョンのクラスターを作成する場合は、この手順をスキップしてください。

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

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

    3. [信頼ポリシーの編集] をクリックします。

    4. ecs.aliyuncs.comemr.aliyuncs.com に変更します。

      策略

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

  5. 必要な権限を追加します。

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

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

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

    4. [閉じる] をクリックします。

ステップ 3:クラスターを作成し、外部リソースにアクセスする

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

  2. 上部のナビゲーション バーで、クラスターが存在するリージョンを選択し、ビジネス要件に基づいてリソース グループを選択します

  3. [ECS 上の EMR] ページで、[クラスターの作成] をクリックします。 詳細設定[基本設定] ステップの 手順 2:RAM ロールの作成クラスターを作成する セクションで、 で作成した RAM ロールの名前を入力します。 詳細については、 を参照してください。

    image

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

    次のコマンドを実行して、ポリシーで指定された OSS バケットにアクセスできるかどうかを確認します。

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

    コマンドの <yourBucketName> を OSS バケットの名前に置き換えます。

    • バケットにアクセスする権限がない場合は、OSS バケットへのアクセスが拒否されます。

    • バケットにアクセスする権限がある場合は、OSS バケットへのアクセスが許可されます。

FAQ

  • Q:クラスターの作成時に NoPermission メッセージが表示された場合はどうすればよいですか?
    A:問題を解決するには、次の操作を順番に実行します。
    1. クラスターの作成と ECS アプリケーション ロールの変更に使用した RAM ユーザーに、クラスターの作成と ECS アプリケーション ロールの変更を行う権限があるかどうかを確認します。 RAM ユーザーに AliyunEMRDevelopAccess 権限が付与されている場合は、権限を AliyunEMRFullAccess に変更する必要があります。
    2. クラスターの作成時に指定した ECS アプリケーション ロールの名前が有効かどうかを確認します。
    3. 信頼ポリシーが emr.aliyuncs.com に変更されているかどうかを確認します。
  • Q:Hadoop 分散ファイル システム(HDFS)から OSS バケットにアクセスできない場合はどうすればよいですか?

    A:問題を解決するには、次の操作を順番に実行します。

    1. アクセスする OSS バケットがクラスターと同じリージョンにあるかどうかを確認します。 OSS バケットとクラスターが同じリージョンにない場合は、アクセス リンクに OSS バケットのエンドポイントを追加する必要があります。

    2. アクセスする OSS バケットが、作成されたポリシーで指定されたリソースの 1 つであるかどうかを確認します。 OSS バケットがリソースの 1 つでない場合は、ポリシーを変更します。

    3. OSS バケットの関連する権限が OSS コンソールで設定されているかどうかを確認します。 権限が設定されている場合は、OSS コンソールの設定をキャンセルし、ポリシーで Action を指定して権限を設定する必要があります。