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

Platform For AI:EAS RAM ロールの構成

最終更新日:Jul 10, 2025

EAS サービスで他のクラウド リソースにアクセスする場合、認証のためにアクセス キーを構成する必要があります。 RAM ロールを関連付けることで、長期 AccessKeys を構成することなく、STS 一時認証情報に基づいて EAS サービス インスタンス内の他のクラウド リソースにアクセスできるため、キー漏洩のリスクを軽減できます。 このトピックでは、RAM ロールを作成して EAS に承認する方法、および RAM ロールに基づいて STS 一時アクセス認証情報を取得する方法について説明します。

メリット

RAM ロールは、クラウド サービスが引き受けることができる信頼されたエンティティ ロールであり、「クロスサービス アクセス」の問題を解決するために使用されます。 ID 検証とアクセス制御のために RAM ロールに基づいて一時アクセス認証情報を取得することには、次のメリットがあります。

  • セキュリティと機密性: サービス内で認証情報を管理する必要はありません。 STS 一時アクセス認証情報は長期 AccessKeys に取って代わり、キー漏洩のリスクを軽減します。

  • 便利で制御可能: RAM ロール権限ポリシーを変更することで、開発者がサービス内のクラウド リソースにアクセスするための権限をより便利かつ正確に制御できます。

制限事項

現在、EAS サービスは 1 つの RAM ロールにのみ関連付けることができます。

構成方法

作成時に EAS サービスの RAM ロールを構成し、STS 一時アクセス認証情報を取得します。

EAS の RAM ロールを構成する

以下の構成方法がサポートされています。

構成方法

シナリオ

方法 1: EAS サービスの PAI デフォルト ロールを承認する

説明

PAI デフォルト ロールはサービス ロール AliyunServiceRoleForPaiEas に基づいて動作し、MaxCompute と OSS にアクセスするための権限のみを持ちます。

追加の RAM ロールを作成する必要がなく、MaxCompute および OSS の基本的な開発リソースへのアクセスに適しています。 EAS サービスの PAI デフォルト ロールを承認した後、以下のシナリオでは AccessKeys を構成する必要はありません。

  • EAS サービス所有者が PyODPS SDK を介して実行権限を持つ MaxCompute プロジェクトのデータにアクセスします。

  • OSS SDK を介して現在のワークスペースにプリセットされているデフォルト OSS バケットのデータにアクセスします。

方法 2: EAS サービスのカスタム ロールを承認する

PAI デフォルト ロールの権限が不十分な場合は、RAM ロールを作成し、その権限ポリシーをカスタマイズして、必要に応じて開発者が EAS サービス内でアクセスできるクラウド リソースの範囲を制御できます。

EAS サービスのカスタム ロールを承認した後、STS 一時認証情報を介してクラウド製品にアクセスする場合、権限はカスタム ロールの権限と一致します。 サービス デプロイメント中に、システムはマウントされたデータ ソースにアクセスし、カスタム ロールの権限に基づいてカスタム イメージをプルします。

具体的な構成方法は次のとおりです。

方法 1: EAS サービスの PAI デフォルト ロールを承認する

EAS サービスをデプロイする際、[サービス構成] セクションの JSON に以下の構成を追加します。

"options": {
  "enable_ram_role": true
}
説明

JSON を使用して直接デプロイし、PAI デフォルト ロールを介して OSS SDK を呼び出す場合は、サービス構成に metadata.workspace_id フィールドが含まれていることを確認する必要があります。

方法 2: EAS サービスのカスタム ロールを承認する

  1. RAM コンソールにログインし、RAM ロールを作成する

    次の主要なパラメータに注意してください。

    • [信頼エンティティの種類]: [Alibaba Cloud サービス] を選択します。

    • [信頼されているサービス名]: [Platform For AI/PAI] (eas.pai.aliyuncs.com) を選択します。

    image

  2. RAM ロールに権限を付与します。

    システム ポリシーまたはカスタム ポリシーを RAM ロールに付与することで、関連するリソース アクセスまたは操作権限を付与します。 たとえば、OSS にアクセスするための AliyunOSSReadOnlyAccess 権限を RAM ロールに付与します。

    重要

    サービスのデプロイ時にデータ ソースをマウントしたり、カスタム イメージを使用したりする場合、システムは RAM ロールの権限に基づいてデータ ソース (NAS または OSS) と Container Registry にアクセスし、イメージをプルします。

  3. EAS サービスをデプロイするときに RAM ロールを関連付けます。

    サービス構成セクションの JSON に次のコンテンツを構成します。ここで、role_arn は前の手順で作成した RAM ロールの ARN に置き換える必要があります。 ARN の取得方法については、「RAM ロールを表示する」をご参照ください。

    "options": {
      "enable_ram_role": true
    },
    "role_arn": "acs:ram::111*************:role/${RoleName}"

    (オプション) Resource Access Management (RAM) ユーザー (Alibaba Cloud サブアカウント) を使用して EAS サービスをデプロイする場合は、Alibaba Cloud アカウント (プライマリアカウント) に連絡して、次の信頼ポリシーを付与してもらい、RAM ロールを EAS インスタンスに渡す権限を取得します。 詳細については、「カスタム権限ポリシーを作成する」および「RAM ユーザーに権限を付与する」をご参照ください。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "ram:PassRole",
          "Resource": "acs:ram::*:role/${RoleName}"
        }
      ]
    }

    ${RoleName} を EAS サービスに関連付けられた RAM ロールの名前に置き換えます。

EAS サービスに関連付けられた RAM ロールに基づいて一時アクセス認証情報を取得する

PAI デフォルト ロールまたはカスタム ロールを EAS サービスに割り当てた後、次の方法で一時アクセス認証情報を取得できます。

方法 1: Credentials ツールを使用して取得する

Credentials ツールは、EAS サービス インスタンス内のローカル サービス (EAS サービスの作成時に自動的に挿入されます) を呼び出して、定期的に更新される STS 一時アクセス認証情報を取得します。

EAS サービスをデプロイするときは、次の主要な構成を完了します。

  • Alibaba Cloud Credentials ツールをインストールします。

    [サードパーティライブラリ設定] パラメーターで、[サードパーティライブラリリスト] を選択し、編集ボックスで alibabacloud_credentials を設定して Alibaba Cloud Credentials ツールをインストールします。

    説明

    サードパーティ ライブラリがイメージにプリインストールされている場合は、この構成をスキップできます。

  • スクリプト ファイルを構成します。

    Python の場合、スクリプト コンテンツの例は次のとおりです。 他の言語 SDK の例については、「アクセス認証情報を使用した Alibaba Cloud OpenAPI へのアクセスのベスト プラクティス」をご参照ください。

    from alibabacloud_credentials.client import Client as CredClient
    from alibabacloud_credentials.models import Config as CredConfig
    
    credentialsConfig = CredConfig(
        type='credentials_uri'
    )
    credentialsClient = CredClient(credentialsConfig)

方法 2: EAS サービス インスタンス内のローカル サービスに直接アクセスする

EAS サービス インスタンス内で、次のコマンドを実行して自動的に挿入されたローカル サーバーにアクセスし、一時アクセス認証情報を取得します。

# インスタンス RAM ロールの一時承認アクセス認証情報を取得する
curl $ALIBABA_CLOUD_CREDENTIALS_URI

サンプルレスポンス:

{
	"Code": "Success",
	"AccessKeyId": "STS.N*********7",
	"AccessKeySecret": "3***************d",
	"SecurityToken": "DFE32G*******",
	"Expiration": "2024-05-21T10:39:29Z"
}

ここで:

  • SecurityToken: RAM ロールの一時トークンを示します。

  • Expiration: RAM ロールの一時承認アクセス認証情報の有効期限を示します。

方法 3: EAS サービス インスタンス内のローカル ファイルに直接アクセスする

EAS サービス インスタンス内の指定されたパスにあるファイル (PAI-EAS によって自動的に挿入され、定期的に更新されます) にアクセスして、RAM ロールの一時アクセス認証情報を取得します。 このファイルのパスは /etc/ram/credentials で、ファイルの内容の例は次のとおりです。

{
	"Code": "Success",
	"AccessKeyId": "STS.N*********7",
	"AccessKeySecret": "3***************d",
	"SecurityToken": "DFE32G*******",
	"Expiration": "2024-05-21T10:39:29Z"
}

このセクションでは、EAS RAM ロールに基づいて PyODPS または OSS にアクセスする方法について説明します。 サービスイメージにコードを統合するか、モデル構成を使用してサービスインスタンスにマウントできます。 この例では、マウント方法を示します。 手順は次のとおりです。

  1. [カスタムデプロイメント] ページに移動します。 詳細については、「サービスデプロイメント」をご参照ください。

  2. [カスタムデプロイメント] ページで、次の主要パラメーターを構成します。 パラメーター構成の詳細については、「コンソールカスタムデプロイメントパラメーターの説明」をご参照ください。

    パラメーター

    説明

    環境情報

    実行コマンド

    python /mnt/data/xx.py など、コードを実行するコマンドを追加します。

    モデル構成

    [モデル構成] を使用して、コードファイル xx.py を EAS サービスインスタンスにマウントします。 コードファイルが置かれているディレクトリを選択し、マウントパス /mnt/data/ を構成します。 コードファイルの内容の例は次のとおりです。

    例 1:RAM ロールに基づいて OSS データにアクセスする

    import oss2
    from alibabacloud_credentials.client import Client
    from alibabacloud_credentials import providers
    from itertools import islice
    
    if __name__ == '__main__':
        auth = oss2.ProviderAuth(providers.DefaultCredentialsProvider())
        # <oss_endpoint> は OSS バケット名に置き換える必要があります。<oss_bucket> は OSS バケットが配置されているリージョンのエンドポイントに置き換える必要があります。
        bucket = oss2.Bucket(auth,
                             '<oss_endpoint>',
                             '<oss_bucket>'
                  )
    
        for b in islice(oss2.ObjectIterator(bucket), 10):
            print(b.key)
    

    ここで:

    • <oss_bucket> は OSS バケット名に置き換える必要があり、現在のワークスペースにプリセットされているデフォルトの OSS バケットであることを確認します。

    • <oss_endpoint> は、OSS バケットが配置されているリージョンのエンドポイントに置き換える必要があります。 EAS はデフォルトでパブリックネットワークに接続されないため、内部ネットワークエンドポイントアドレス(oss-cn-hangzhou-internal.aliyuncs.com など)を構成する必要があります。 パブリックネットワークエンドポイント(oss-cn-hangzhou.aliyuncs.com など)を使用する必要がある場合は、EAS のパブリックネットワークアクセス機能を備えた仮想プライベートクラウド (VPC) を構成する必要があります。 詳細については、「ネットワーク接続を構成する」をご参照ください。

    例 2:RAM ロールに基づいて PyODPS データにアクセスする

    from alibabacloud_credentials import providers
    from odps.accounts import CredentialProviderAccount
    from odps import ODPS
    
    if __name__ == '__main__':
        account = CredentialProviderAccount(providers.DefaultCredentialsProvider())
        # <odps_project> はプロジェクト名に置き換える必要があります。<odps_endpoint> はプロジェクトが配置されているリージョンのエンドポイントに置き換える必要があります。
        o = ODPS(
            account=account,
            project="<odps_project>", 
            endpoint="<odps_endpoint>" 
        )
    
        for t in o.list_tables():
            print(t)
    

    ここで:

    • <odps_project> はプロジェクト名に置き換える必要があります。 MaxCompute コンソール にログインし、指定したリージョンの[ワークスペース] > [プロジェクト管理]で特定のプロジェクト名を表示できます。

      説明

      RAM ユーザーを使用する場合は、ユーザーがプロジェクトに対する操作権限を持っていることを確認してください。 詳細については、「他のユーザーを承認する」をご参照ください。

    • <odps_endpoint> は、プロジェクトが配置されているリージョンのエンドポイントに置き換える必要があります。 EAS はデフォルトでパブリックネットワークに接続されないため、内部ネットワークエンドポイントアドレス(https://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api など)を構成する必要があります。 パブリックネットワークエンドポイント(https://service.cn-hangzhou.maxcompute.aliyun.com/api など)を使用する必要がある場合は、EAS のパブリックネットワークアクセス機能を備えた仮想プライベートクラウド (VPC) を構成する必要があります。 詳細については、「ネットワーク接続を構成する」をご参照ください。

    サードパーティライブラリ構成

    以下の[サードパーティライブラリリスト]を設定して、Alibaba Cloud Credentials ツール、PyODPS SDK、および OSS SDK をインストールします。

    alibabacloud_credentials
    pyodps
    oss2
    説明

    サードパーティライブラリがイメージにプリインストールされている場合は、この構成をスキップできます。

    サービス構成

    PAI デフォルトロールを例に、[サービス構成] セクションの JSON に以下の構成を追加します。

    "options": {
            "enable_ram_role": true
        }
    説明

    JSON を使用して直接デプロイし、PAI デフォルトロールを使用して OSS SDK を呼び出す場合は、サービス構成に metadata.workspace_id フィールドが含まれていることを確認する必要があります。

  3. パラメーターの構成が完了したら、[デプロイ] をクリックします。

    サービスが正常にデプロイされた後、サービスログで実行結果を確認できます。

よくある質問

EAS サービスをデプロイする際に、カスタム RAM ロールの設定でエラーが発生した場合の解決方法

  • エラーメッセージ: image

    RAM コンソール にログインし、ロールが存在するかどうかを確認します。

    • ロールが存在しない場合は、インスタンスのカスタム RAM ロールを既存のロールに変更します。

    • ロールが存在する場合は、プライマリアカウントに連絡して、サブアカウントに次のカスタム権限ポリシー(${RoleName} を RAM ロールの名前に置き換える)を付与し、RAM ロールを EAS インスタンスに渡す権限を取得します。詳細については、「RAM ユーザーに権限を付与する」をご参照ください。

      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "ram:PassRole",
            "Resource": "acs:ram::*:role/${RoleName}" // RAM ロールのリソース
          }
        ]
      }
  • デプロイメントイベントのエラーメッセージは レンダリングできません、エラー: ユーザーのロールの引き受けに失敗しました、理由: この操作を実行する権限がありません。RAM によって承認される必要があります。 です。

    これは、[Elastic Algorithm Service] ページで、サービス名をクリックし、[デプロイメントイベント] タブに切り替えることで表示できます。次の図を参照してください: image

    ほとんどの場合、このエラーは RAM ロールに信頼ポリシーが設定されていないために発生します。 RAM ロールの信頼ポリシーを設定するには、次の手順を実行します。

    1. RAM 管理者として RAM コンソール にログインします。

    2. 左側のナビゲーションウィンドウで、[ID 管理] > [ロール] を選択します。

    3. [ロール] ページで、対象の RAM ロールの名前をクリックします。

    4. [信頼ポリシー] タブで、[信頼ポリシーの編集] をクリックして、"eas.pai.aliyuncs.com" の信頼を追加します。

    5. コードエディターで、信頼ポリシーの内容を変更し、[OK] をクリックします。

      次のサンプルコードは、RAM ロールの元のポリシードキュメントを示しています。

      {
        "Statement": [
          {
            "Action": "sts:AssumeRole", // ロールを借用するためのアクション
            "Effect": "Allow", // 許可
            "Principal": { // 信頼できるエンティティ
              "RAM": [
                "acs:ram::aaa:root" // ルートアカウント
              ],
              "Service": [
                "xxx.aliyuncs.com" // サービス
              ]
            }
          }
        ],
        "Version": "1" // ポリシーのバージョン
      }

      新しいポリシーの内容は次のとおりです。

      {
        "Statement": [
          {
            "Action": "sts:AssumeRole", // ロールを借用するためのアクション
            "Effect": "Allow", // 許可
            "Principal": { // 信頼できるエンティティ
              "RAM": [
                "acs:ram::aaa:root" // ルートアカウント
              ],
              "Service": [
                "xxx.aliyuncs.com", // サービス
                "eas.pai.aliyuncs.com" // EAS サービス
              ]
            }
          }
        ],
        "Version": "1" // ポリシーのバージョン
      }