ランタイムIAMロールを使用して Studio Classic から Amazon EMRクラスターに接続する - Amazon SageMaker

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

ランタイムIAMロールを使用して Studio Classic から Amazon EMRクラスターに接続する

Amazon SageMaker Studio Classic ノートブックから Amazon EMRクラスターに接続すると、ランタイムIAMロールと呼ばれるロールのリストを視覚的に参照し、その場で選択することができます。その後、Studio Classic ノートブックから作成されたすべての Apache Spark、Apache Hive、または Presto ジョブは、ランタイムロールにアタッチされたポリシーで許可されているデータとリソースのみにアクセスします。また、 で管理されるデータレイクからデータにアクセスする場合 AWS Lake Formation、ランタイムロールにアタッチされたポリシーを使用して、テーブルレベルおよび列レベルのアクセスを強制できます。

この機能により、各自がデータへのアクセスレベルに合ったアクセス許可でスコープされたランタイムロールを使用して、自分とチームメイトが同じクラスターに接続できます。また、セッションは共有クラスター上で相互に分離されます。同じ共有クラスター上のデータへのきめ細かなアクセスを制御する機能により、Amazon EMRクラスターのプロビジョニングを簡素化し、運用上のオーバーヘッドを削減し、コストを削減できます。

この新しい機能を試すには、「Amazon SageMaker Studio Classic EMRの」の「 AWS Lake Formation と Amazon によるきめ細かなデータアクセスコントロールの適用」を参照してください。このブログ記事は、事前設定されたランタイムロールを使用して Amazon EMRクラスターに接続できるデモ環境を設定するのに役立ちます。

前提条件

使用を開始する前に、次の前提条件を満たしていることを確認します。

  • Amazon EMRバージョン 6.9 以降を使用します。

  • Studio Classic Jupyter サーバーアプリケーション設定で JupyterLab バージョン 3 を使用します。このバージョンでは、ランタイムロールを使用した Amazon EMRクラスターへの Studio Classic 接続がサポートされています。

  • クラスターのセキュリティ設定でランタイムロールの使用を許可します。詳細については、「Amazon ステップのランタイムロールEMR」を参照してください。

  • ユーザーガイド」に記載されているカーネルのいずれかを使用してノートブックを作成します。

  • Studio Classic でランタイムロールを設定するにはランタイムIAMロールを使用するように Studio Classic を設定する、「」の手順を必ず確認してください。

クロスアカウント接続シナリオ

ランタイムロール認証は、データが Studio Classic アカウントの外部に存在する場合に、さまざまなクロスアカウント接続シナリオをサポートします。次の図は、Studio Classic とデータアカウント間で Amazon EMRクラスター、データ、さらには Amazon EMR実行ロールを割り当てる 3 つの異なる方法を示しています。

ランタイムIAMロール認証でサポートされるクロスアカウントシナリオ。

オプション 1 では、Amazon EMRクラスターと Amazon EMR実行ロールは Studio Classic アカウントとは別のデータアカウントにあります。Studio Classic 実行ロールに Amazon EMR アクセスロールを引き受けるアクセス許可を付与する別の Amazon EMR アクセスロールアクセス許可ポリシーを定義します。次に、Amazon EMR アクセスロールは Studio Classic 実行ロールEMRAPIGetClusterSessionCredentialsに代わって Amazon を呼び出し、クラスターへのアクセスを許可します。

オプション 2 では、Amazon EMRクラスターと Amazon EMR実行ロールは Studio Classic アカウントにあります。Studio Classic 実行ロールには、Amazon を使用してクラスターEMRAPIGetClusterSessionCredentialsにアクセスするためのアクセス許可があります。Amazon S3 バケットにアクセスするには、Amazon EMR実行ロールにクロスアカウントの Amazon S3 バケットアクセス許可を付与します。Amazon S3 バケットポリシー内でこれらのアクセス許可を付与します。

オプション 3 では、Amazon EMRクラスターは Studio Classic アカウントにあり、Amazon EMR実行ロールはデータアカウントにあります。Studio Classic 実行ロールには、Amazon を使用してクラスターEMRAPIGetClusterSessionCredentialsにアクセスするためのアクセス許可があります。Amazon EMR実行ロール を実行ロール設定 に追加しますJSON。その後、クラスターを選択するときに UI でロールを選択できます。実行ロール設定JSONファイルの設定方法の詳細については、「」を参照してくださいStudio Classic に実行ロールをプリロードする

ランタイムIAMロールを使用するように Studio Classic を設定する

Amazon EMRクラスターのランタイムロール認証を確立するには、必要なIAMポリシー、ネットワーク、およびユーザビリティの強化を設定します。Amazon EMRクラスター、Amazon EMR実行ロール、またはその両方が Amazon SageMaker Studio Classic アカウントの外部にある場合、クロスアカウント配置を処理するかどうかによってセットアップが異なります。以下の説明では、インストールするポリシー、クロスアカウント間のトラフィックを許可するようにネットワークを設定する方法、および Amazon EMR接続を自動化するように設定するためのローカル設定ファイルについて説明します。

Amazon EMRクラスターと Studio Classic が同じアカウントにある場合のランタイムロール認証の設定

Amazon EMRクラスターが Studio Classic アカウントにある場合は、基本ポリシーを追加して Amazon EMRクラスターに接続しGetClusterSessionCredentials、クラスターへのアクセスを許可する Amazon EMR API を呼び出すアクセス許可を設定します。Studio Classic 実行ポリシーに必要なアクセス許可を追加するには、次のステップを実行します。

  1. Amazon EMRクラスターに接続するために必要なIAMポリシーを追加します。詳細については、「Studio または Studio Classic から Amazon EMRクラスターを一覧表示する」を参照してください。

  2. ポリシーで指定された 1 つ以上の許可された Amazon EMR実行ロールを渡すEMRAPIGetClusterSessionCredentialsときに Amazon を呼び出すアクセス許可を付与します。

  3. (オプション) ユーザー定義の命名規則に従うIAMロールを渡すアクセス許可を付与します。

  4. (オプション) 特定のユーザー定義文字列でタグ付けされた Amazon EMRクラスターにアクセスするアクセス許可を付与します。

  5. Amazon EMR接続コマンドを手動で呼び出さない場合は、ローカル Amazon に設定ファイルをインストール SageMakerEFSし、Amazon EMRクラスターを選択するときに使用するロールを選択します。IAM ロールをプリロードする方法の詳細については、「」を参照してくださいStudio Classic に実行ロールをプリロードする

次のポリシー例では、モデリンググループとトレーニンググループに属する Amazon EMR実行ロールが を呼び出すことを許可しますGetClusterSessionCredentials。さらに、ポリシー所有者は、文字列 modelingまたは でタグ付けされた Amazon EMRクラスターにアクセスできますtraining

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "*", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::123456780910:role/emr-execution-role-ml-modeling*", "arn:aws:iam::123456780910:role/emr-execution-role-ml-training*" ], "elasticmapreduce:ResourceTag/group": [ "*modeling*", "*training*" ] } } } ] }

クラスターと Studio Classic が異なるアカウントにある場合のランタイムロール認証の設定

Amazon EMRクラスターが Studio Classic アカウントにない場合は、Studio Classic 実行ロールがクロスアカウントの Amazon EMR アクセスロールを引き受けて、クラスターに接続できるようにします。次の手順を実行して、クロスアカウント設定をセットアップします。

  1. Studio Classic 実行ロールのアクセス許可ポリシーを作成して、実行ロールが Amazon EMR アクセスロールを引き受けられるようにします。次に、ポリシーの例を示します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAssumeCrossAccountEMRAccessRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::emr_account_id:role/emr-access-role-name" } ] }
  2. 信頼ポリシーを作成して、Amazon EMR アクセスロールを引き受けるために信頼IDsされる Studio Classic アカウントを指定します。次に、ポリシーの例を示します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountSageMakerExecutionRoleToAssumeThisRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio_account_id:role/studio_execution_role" }, "Action": "sts:AssumeRole" } }
  3. Amazon EMR アクセスロールのアクセス許可ポリシーを作成します。このポリシーは、クラスターで目的のタスクを実行するために必要なアクセス許可を Amazon EMR実行ロールに付与します。アクセスロールのEMRアクセス許可ポリシーで指定された Amazon EMR実行ロールAPIGetClusterSessionCredentialsを使用して を呼び出すように Amazon アクセスロールを設定します。次に、ポリシーの例を示します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallingEmrGetClusterSessionCredentialsAPI", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::emr_account_id:role/emr-execution-role-name" ] } } } ] }
  4. アカウント間でトラフィックが行き来できるように、クロスアカウントネットワークを設定します。ガイド付き手順については、ブログ記事「インタラクティブな Spark および ML ワークロードを実行するための SageMaker Studio Classic EMR からの Amazon クラスターの作成と管理 – パート 2」の「ネットワークのセットアップ」を参照してください。ブログ投稿の手順は、次のタスクを完了するのに役立ちます。

    1. VPC- Studio Classic アカウントと Amazon EMRアカウントをピアリングして接続を確立します。

    2. 両方のアカウントのプライベートサブネットルートテーブルにルートを手動で追加します。これにより、Studio Classic アカウントからリモートアカウントのプライベートサブネットへの Amazon EMRクラスターの作成と接続が可能になります。

    3. Studio Classic ドメインにアタッチされたセキュリティグループを設定してアウトバウンドトラフィックを許可し、Amazon EMRプライマリノードのセキュリティグループを設定して Studio Classic インスタンスのセキュリティグループからのインバウンドTCPトラフィックを許可します。

  5. Amazon EMR接続コマンドを手動で呼び出さない場合は、ローカル Amazon に設定ファイルをインストール SageMakerEFSして、Amazon EMRクラスターを選択するときに使用するロールを選択できます。IAM ロールをプリロードする方法の詳細については、「」を参照してくださいStudio Classic に実行ロールをプリロードする

Lake Formation へのアクセスの設定

によって管理されるデータレイクからデータにアクセスする場合 AWS Lake Formation、ランタイムロールにアタッチされたポリシーを使用して、テーブルレベルおよび列レベルのアクセスを強制できます。Lake Formation アクセスのアクセス許可を設定するには、「Amazon EMRと AWS Lake Formationの統合」を参照してください。

Studio Classic に実行ロールをプリロードする

Amazon EMR接続コマンドを手動で呼び出さない場合は、ローカル Amazon に設定ファイルをインストール SageMakerEFSして、Amazon EMRクラスターを選択するときに使用する実行ロールを選択できます。

Amazon EMR実行ロールの設定ファイルを書き込むには、 ライフサイクル設定を使用して Studio Classic をカスタマイズする (LCC) を Jupyter サーバーアプリケーションに関連付けます。または、設定ファイルを書き込みまたは更新し、コマンド restart-jupyter-server で Jupyter サーバーを再起動することもできます。

次のスニペットは、Studio Classic LCC アプリケーションとクラスターが同じアカウントにある場合に適用できる bash スクリプトの例です。

#!/bin/bash set -eux FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE" FILE_NAME="emr-configurations-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat << 'EOF' > "$FILE" { "emr-execution-role-arns": { "123456789012": [ "arn:aws:iam::123456789012:role/emr-execution-role-1", "arn:aws:iam::123456789012:role/emr-execution-role-2" ] } } EOF

Studio Classic アプリケーションとクラスターが異なるアカウントにある場合は、クラスターを使用できる Amazon EMR アクセスロールを指定します。次のポリシー例では、123456789012 は ARN Amazon EMRクラスターアカウントの で、212121212121434343434343 は許可された Amazon EMR アクセスロールARNsの です。

#!/bin/bash set -eux FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE" FILE_NAME="emr-configurations-DO_NOT_DELETE.json" FILE="$FILE_DIRECTORY/$FILE_NAME" mkdir -p $FILE_DIRECTORY cat << 'EOF' > "$FILE" { "emr-execution-role-arns": { "123456789012": [ "arn:aws:iam::212121212121:role/emr-execution-role-1", "arn:aws:iam::434343434343:role/emr-execution-role-2" ] } } EOF # add your cross-account EMR access role 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 << 'EOF' > "$FILE" { "123456789012": "arn:aws:iam::123456789012:role/cross-account-emr-access-role" } EOF