Amazon EMRクラスターのリストを設定する - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EMRクラスターのリストを設定する

管理者は Studio SageMaker 実行ロールのアクセス許可を設定して、アクセスできる Amazon EMRクラスターのリストをユーザーに表示できるようにし、これらのクラスターに接続できます。アクセスするクラスターは、Studio と同じ AWS アカウント (単一アカウントを選択) または別のアカウント (クロスアカウントを選択) にデプロイできます。次のページでは、Studio または Studio Classic から Amazon EMRクラスターを表示するためのアクセス許可を付与する方法について説明します。

重要

プライベートスペースから起動される JupyterLab および Studio Classic アプリケーションの Amazon EMRクラスターのみを検出して接続できます。Amazon EMRクラスターが Studio 環境と同じ AWS リージョンにあることを確認します。

データサイエンティストが Studio または Studio Classic EMRclustersから Amazon を検出して接続できるようにするには、次の手順に従います。

Amazon EMRクラスターと Studio または Studio Classic が同じ AWS アカウントにデプロイされている場合は、クラスターにアクセスする SageMaker 実行ロールに次のアクセス許可をアタッチします。

  1. ステップ 1: プライベートスペースで使用される SageMaker 実行ロールARNの を取得します。

    のスペースと実行ロールの詳細については SageMaker、「」を参照してくださいドメインスペースのアクセス許可と実行ロールについて

    の実行ロールARNの を取得する方法の詳細については、 SageMaker「」を参照してください実行ロールを取得する

  2. ステップ 2: Amazon EMRクラスターにアクセスする SageMaker 実行ロールに次のアクセス許可をアタッチします。

    1. IAM コンソールに移動します。

    2. ロールを選択し、検索フィールドで名前で実行ロールを検索します。ロール名はARN、最後のスラッシュ (/) の後にある の最後の部分です。

    3. ロールへのリンクに従います。

    4. アクセス許可を追加 を選択し、インラインポリシーを作成します

    5. JSON タブに、Amazon EMR アクセスとオペレーションを許可する Amazon アクセスEMR許可を追加します。ポリシードキュメントの詳細については、「」の「Amazon EMRポリシーを一覧表示する」を参照してくださいリファレンスポリシー。ステートメントのリストをロールのインラインポリシーにコピーする前にregion、 と をaccountID実際の値に置き換えます。

    6. Next を選択し、ポリシー名 を指定します。

    7. [Create policy] を選択します。

注記

Amazon EMRクラスターへのロールベースのアクセスコントロール (RBAC) 接続のユーザーは、 も参照する必要がありますAmazon EMRクラスターと Studio が同じアカウントにある場合にランタイムロール認証を設定する

開始する前に、プライベートスペースで使用される SageMaker 実行ロールARNの を取得します。

のスペースと実行ロールの詳細については SageMaker、「」を参照してくださいドメインスペースのアクセス許可と実行ロールについて

の実行ロールARNの を取得する方法の詳細については、 SageMaker「」を参照してください実行ロールを取得する

Amazon EMRクラスターと Studio または Studio Classic が別々の AWS アカウントにデプロイされている場合は、両方のアカウントにアクセス許可を設定します。

注記

Amazon EMRクラスターへのロールベースのアクセスコントロール (RBAC) 接続のユーザーは、 も参照する必要がありますクラスターと Studio が別のアカウントにある場合のランタイムロール認証の設定

Amazon EMRクラスターアカウントで

Amazon EMRがデプロイされているアカウントに必要なロールとポリシーを作成するには、次の手順に従います。これは信頼アカウントとも呼ばれます

  1. ステップ 1: Amazon クラスター ARN のサービスロールの を取得します。 EMR

    クラスターのサービスロールARNの を検索する方法については、IAM「サービスおよびリソースに対する AWS Amazon アクセスEMR許可のサービスロールの設定」を参照してください。

  2. ステップ 2: 次の設定AssumableRoleで という名前のカスタムIAMロールを作成します。

    • アクセス許可: Amazon EMRリソースへのアクセスを許可AssumableRoleするために必要なアクセス許可を に付与します。このロールは、クロスアカウントアクセスを含むシナリオではアクセスロールとも呼ばれます。

    • 信頼関係: アクセスを必要とする Studio アカウントから実行ロール (クロスアカウント図SageMakerExecutionRoleの ) を引き受けることを に許可AssumableRoleするように、 の信頼ポリシーを設定します。

    ロールを引き受けることで、Studio または Studio Classic は Amazon で必要なアクセス許可に一時的にアクセスできますEMR。

    Amazon EMR AWS アカウントAssumableRoleで新しい を作成する方法の詳細については、次の手順に従います。

    1. IAM コンソールに移動します。

    2. 左側のナビゲーションペインで、ポリシー を選択し、ポリシー を作成します

    3. JSON タブに、Amazon EMR アクセスとオペレーションを許可する Amazon アクセスEMR許可を追加します。ポリシードキュメントの詳細については、「」の「Amazon EMRポリシーのリスト」を参照してくださいリファレンスポリシー。ステートメントのリストをロールのインラインポリシーにコピーする前にregion、 と をaccountID実際の値に置き換えます。

    4. Next を選択し、ポリシー名 を指定します。

    5. [Create policy] を選択します。

    6. 左側のナビゲーションペインで、ロール を選択し、ロール を作成します

    7. ロールの作成ページで、信頼されたエンティティとしてカスタム信頼ポリシーを選択します。

    8. カスタム信頼ポリシーセクションの次のJSONドキュメントに貼り付け、次へ を選択します。

      For users of Studio and JupyterLab

      studio-account を Studio アカウント ID に置き換え、 をスペースで使用される実行ロールAmazonSageMaker-ExecutionRoleに置き換えます JupyterLab。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio-account:role/service-role/AmazonSageMaker-ExecutionRole" }, "Action": "sts:AssumeRole" } ] }
      For users of Studio Classic

      を Studio Classic アカウント ID studio-accountに置き換えます。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio-account:root" }, "Action": "sts:AssumeRole" } ] }
    9. アクセス許可の追加ページで、先ほど作成したアクセス許可を追加し、次へ を選択します。

    10. レビューページで、 などのロールの名前AssumableRoleとオプションの説明を入力します。

    11. ロールの詳細を確認し、[ロールの作成] を選択します。

    AWS アカウントでロールを作成する方法の詳細については、IAM「ロールの作成 (コンソール)」を参照してください。

Studio アカウントで

Studio がデプロイされているアカウントで、信頼されたアカウント とも呼ばれます。クラスターにアクセスする実行ロールを SageMaker、信頼しているアカウントのリソースにアクセスするために必要なアクセス許可で更新します。

  1. ステップ 1: プライベートスペースで使用される SageMaker 実行ロールARNの を取得します。

    のスペースと実行ロールの詳細については SageMaker、「」を参照してくださいドメインスペースのアクセス許可と実行ロールについて

    の実行ロールARNの を取得する方法の詳細については、 SageMaker「」を参照してください実行ロールを取得する

  2. ステップ 2: Amazon EMRクラスターにアクセスする SageMaker 実行ロールに次のアクセス許可をアタッチします。

    1. IAM コンソールに移動します。

    2. ロールを選択し、検索フィールドで名前で実行ロールを検索します。ロール名はARN、最後のスラッシュ (/) の後にある の最後の部分です。

    3. ロールへのリンクに従います。

    4. アクセス許可を追加 を選択し、インラインポリシーを作成します

    5. JSON タブに、ドメイン、ユーザープロファイル、スペースを更新するアクセス許可をロールに付与するインラインポリシーを追加します。ポリシードキュメントの詳細については、「」の「ドメイン、ユーザープロファイル、およびスペース更新アクションポリシー」を参照してくださいリファレンスポリシー。ステートメントのリストをロールのインラインポリシーにコピーする前にaccountIDregionと を実際の値に置き換えます。

    6. Next を選択し、ポリシー名 を指定します。

    7. [Create policy] を選択します。

    8. インラインポリシーの作成ステップを繰り返して、実行ロールに を引き受けAssumableRole、ロールのアクセスポリシーで許可されているアクションを実行するアクセス許可を付与する別のポリシーを追加します。emr-account を Amazon EMRアカウント ID AssumableRoleに置き換え、 を Amazon EMRアカウントで作成された想定ロールの名前に置き換えます。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRoleAssumptionForCrossAccountDiscovery", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": ["arn:aws:iam::emr-account:role/AssumableRole" ] }] }
    9. (オプション) Studio と同じアカウントにデプロイされた Amazon EMRクラスターのリストを許可するには、 の Amazon ポリシーのリストで定義されているように、Studio 実行ロールに追加のインラインEMRポリシーを追加しますリファレンスポリシー

  3. ステップ 3: 想定ロール (複数可) (アクセスロール) をドメインまたはユーザープロファイルに関連付けます。 JupyterLabStudio のユーザーは、 SageMaker コンソールまたは提供されたスクリプトを使用できます。

    ユースケースに対応するタブを選択します。

    Associate your assumable roles in JupyterLab using the SageMaker console

    SageMaker コンソールを使用して、想定ロールをユーザープロファイルまたはドメインに関連付けるには:

    1. で SageMaker コンソールに移動しますhttps://console.aws.amazon.com/sagemaker/

    2. 左側のナビゲーションペインで、ドメイン を選択し、アクセス許可を更新した SageMaker 実行ロールを使用してドメインを選択します。

      • ドメインに想定ロール (アクセスロール) を追加するには: ドメインの詳細ページのアプリケーション設定タブで、 JupyterLabセクションに移動します。

      • 想定ロール (複数可) (アクセスロール) をユーザープロファイルに追加するには: ドメインの詳細ページで、ユーザープロファイルタブを選択し、アクセス許可を更新した SageMaker 実行ロールを使用してユーザープロファイルを選択します。App Configurations タブで、 JupyterLabセクションに移動します。

    3. ARNs 想定ロール (アクセスロール) の編集と追加を選択します。

    4. [送信] を選択します。

    Associate your assumable roles in JupyterLab using a Python script

    アクセス許可を更新した SageMaker 実行ロールを使用してスペースから開始された JupyterLab アプリケーションで、ターミナルで次のコマンドを実行します。domainIDuser-profile-nameemr-accountIDAssumableRole ( ランタイムロール EMRServiceRole の場合) を適切な値に置き換えます。 RBAC このコードスニペットは、 SageMaker ドメイン内の特定のユーザープロファイル ( を使用client.update_userprofile) またはドメイン設定 ( を使用client.update_domain) のユーザープロファイル設定を更新します。具体的には、アプリケーションが JupyterLab Amazon EMRアカウント内で Amazon EMRクラスターを実行するための特定のIAMロール (AssumableRole) を引き受けることを許可します。

    import botocore.session import json sess = botocore.session.get_session() client = sess.create_client('sagemaker') client.update_userprofile( DomainId="domainID", UserProfileName="user-profile-name", DefaultUserSettings={ 'JupyterLabAppSettings': { 'EmrSettings': { 'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"], 'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServiceRole", "arn:aws:iam::emr-accountID:role/AnotherServiceRole"] } } }) resp = client.describe_user_profile(DomainId="domainID", UserProfileName=user-profile-name") resp['CreationTime'] = str(resp['CreationTime']) resp['LastModifiedTime'] = str(resp['LastModifiedTime']) print(json.dumps(resp, indent=2))
    For users of Studio Classic

    Studio Classic 実行ロールAssumableRoleに ARNの を指定します。ARN は、起動時に Jupyter サーバーによってロードされます。Studio が使用する実行ロールは、信頼するアカウント 内の Amazon EMRクラスターを検出して接続するためのクロスアカウントロールを前提としています。

    この情報は、ライフサイクル設定 (LCC) スクリプトを使用して指定できます。ドメインまたは特定のユーザープロファイルLCCに をアタッチできます。使用するLCCスクリプトは JupyterServer 設定である必要があります。LCC スクリプトの作成方法の詳細については、「Studio Classic でライフサイクル設定を使用する」を参照してください。

    以下はLCCスクリプトの例です。スクリプトを変更するには、 AssumableRoleと をそれぞれの値emr-accountに置き換えます。クロスアカウントの数は 5 に制限されています。

    # This script creates the file that informs Studio Classic that the role "arn:aws:iam::emr-account:role/AssumableRole" in remote account "emr-account" must be assumed to list and describe Amazon EMR clusters in the remote account. #!/bin/bash set -eux FILE_DIRECTORY="/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE" FILE_NAME="emr-discovery-iam-role-arns-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat > "$FILE" <<- "EOF" { emr-cross-account1: "arn:aws:iam::emr-cross-account1:role/AssumableRole", emr-cross-account2: "arn:aws:iam::emr-cross-account2:role/AssumableRole" } EOF

    LCC が実行され、ファイルが書き込まれると、サーバーはファイルを読み取り/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE/emr-discovery-iam-role-arns-DO_NOT_DELETE.json、クロスアカウント を保存しますARN。

Studio または Studio Classic ノートブックから Amazon EMRクラスターを検出して接続する方法については、Studio または Studio Classic から Amazon EMRクラスターを一覧表示する「」を参照してください。