ランタイム 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 の AWS Lake Formation および Amazon EMR を使用してきめ細かなデータアクセスコントロールを適用する」を参照してください。このブログ投稿は、事前設定されたランタイムロールを使用して Amazon EMR クラスターへの接続を試すデモ環境をセットアップするのに役立ちます。

前提条件

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

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

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

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

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

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

オプション 3 では、Amazon EMR クラスターは Studio Classic アカウントにあり、Amazon EMR 実行ロールはデータアカウントにあります。Studio Classic 実行ロールには、Amazon EMR API を使用してクラスターGetClusterSessionCredentialsにアクセスするためのアクセス許可があります。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 Classic から SageMaker Amazon EMR クラスターを検出する」を参照してください。

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

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

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

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

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

{ "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 アクセスロールを引き受けるために信頼される Studio Classic アカウント IDs を指定します。次に、ポリシーの例を示します。

    { "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 アクセスロールのアクセス許可ポリシーを作成します。アクセスロールのアクセス許可ポリシーで指定された Amazon EMR 実行ロールを使用して API GetClusterSessionCredentials を呼び出すように Amazon EMR アクセスロールを設定します。次に、ポリシーの例を示します。

    { "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. アカウント間でトラフィックが行き来できるように、クロスアカウントネットワークを設定します。ガイド付き手順については、ブログ記事 SageMaker 「Studio Classic から Amazon EMR クラスターを作成および管理してインタラクティブな Spark および ML ワークロードを実行する – パート 2」の「ネットワークのセットアップ」を参照してください。ブログ投稿の手順は、次のタスクを完了するのに役立ちます。

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

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

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

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

Lake Formation へのアクセスの設定

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

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

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

Amazon EMR 実行ロールの設定ファイルを書き込むには、Amazon SageMaker 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 が Amazon EMR クラスターアカウントの ARN で、212121212121 と 434343434343 が許可された Amazon EMR アクセスロールの ARN です。

#!/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