翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Studio ノートブックまたは Studio Classic ノートブックから Amazon EMR クラスターに接続すると、ランタイムロールと呼ばれる IAM ロールのリストを視覚的に参照し、臨機応変にそのいずれかを選択できます。その後、ノートブックから作成された Apache Spark、Apache Hive、または Presto のすべてのジョブは、ランタイムロールにアタッチされたポリシーが許可するデータとリソースにのみアクセスするようになります。また、 で管理されているデータレイクからデータにアクセスする場合 AWS Lake Formation、ランタイムロールにアタッチされたポリシーを使用して、テーブルレベルおよび列レベルのアクセスを適用できます。
この機能により、各自がデータへのアクセスレベルに合ったアクセス許可でスコープされたランタイムロールを使用して、自分とチームメイトが同じクラスターに接続できます。また、セッションは共有クラスター上で相互に分離されます。
Studio Classic を使用してこの機能を試すには、「 AWS Lake Formation と Amazon SageMaker Studio Classic の Amazon EMR を使用してきめ細かなデータアクセスコントロールを適用する
前提条件
使用を開始する前に、次の前提条件を満たしていることを確認します。
-
Amazon EMR バージョン 6.9 以降を使用します。
-
Studio Classic を使用する場合: Studio Classic Jupyter サーバーアプリケーションの設定で、JupyterLab のバージョン 3 を使用します。このバージョンは、ランタイムロールを使用した Amazon EMR クラスターへの Studio Classic の接続をサポートします。
Studio を使用する場合: SageMaker ディストリビューションイメージバージョン
1.10
以降を使用します。 -
クラスターのセキュリティ設定でランタイムロールの使用を許可します。詳細については、「Runtime roles for Amazon EMR steps」を参照してください。
-
「Studio または Studio Classic から Amazon EMR クラスターに接続するためにサポートされているイメージとカーネル」に記載されているカーネルのいずれかを使用してノートブックを作成します。
-
ランタイムロールを設定するには、「ランタイム IAM ロールを使用するための Studio の設定」の手順を必ず確認します。
クロスアカウント接続シナリオ
ランタイムロール認証は、データが Studio アカウントの外にある場合に、さまざまなクロスアカウント接続シナリオをサポートします。次の図は、Studio とデータアカウント間で Amazon EMR クラスター、データ、さらには Amazon EMR 実行ロールを割り当てる 3 つの異なる方法を説明しています。

オプション 1 では、Amazon EMR クラスターと Amazon EMR ランタイム実行ロールは、Studio アカウントとは別のデータアカウントに配置されています。Studio または Studio Classic の実行ロールに Amazon EMR アクセスロールを引き受けるアクセス許可を付与する、別の (Assumable role
とも呼ばれる) Amazon EMR アクセスロールのアクセス許可ポリシーを定義します。Amazon EMR アクセスロールは、Studio または Studio Classic の実行ロールに代わって Amazon EMR API GetClusterSessionCredentials
を呼び出し、クラスターへのアクセスを許可します。
オプション 2 では、Amazon EMR クラスターと Amazon EMR ランタイム実行ロールは、Studio アカウント内に配置されています。Studio 実行ロールには、Amazon EMR API GetClusterSessionCredentials
を使用してクラスターにアクセスするアクセス許可があります。Amazon S3 バケットにアクセスするには、Amazon EMR ランタイム実行ロールにクロスアカウントの Amazon S3 バケットアクセス許可を付与します。このようなアクセス許可は、Amazon S3 バケットポリシー内で付与します。
オプション 3 では、Amazon EMR クラスターは Studio アカウント内にあり、Amazon EMRランタイム実行ロールはデータアカウント内にあります。Studio または Studio Classic の実行ロールには、Amazon EMR API GetClusterSessionCredentials
を使用してクラスターにアクセスするアクセス許可が付与されています。Amazon EMR ランタイム実行ロールを実行ロールの設定 JSON に追加します。その後、クラスターを選択するときに UI でロールを選択できます。実行ロール設定 JSON ファイルの設定方法の詳細については、「実行ロールを Studio または Studio Classic にプリロードする」を参照してください。
ランタイム IAM ロールを使用するための Studio の設定
Amazon EMR クラスターのランタイムロール認証を確立するには、必要な IAM ポリシー、ネットワーク、およびユーザビリティの強化を設定します。Amazon EMR クラスター、Amazon EMR ランタイム実行ロール、またはその両方が Studio アカウント以外にある場合、クロスアカウント配置を処理するかどうかによって設定は異なります。次のセクションでは、インストールするポリシー、アカウント間のトラフィックを許可するようにネットワークを設定する方法、Amazon EMR 接続を自動化するために指定するローカル設定ファイルについて説明します。
Amazon EMR クラスターと Studio が同じアカウントにある場合のランタイムロール認証の設定
Amazon EMR クラスターが Studio アカウント内に配置されている場合は、以下の手順を実行して Studio 実行ポリシーに必要なアクセス許可を追加します。
-
Amazon EMR クラスターに接続するために必要な IAM ポリシーを追加します。詳細については、「Amazon EMR クラスターのリストを設定する」を参照してください。
-
ポリシーで指定されている、単一または複数の許可済みの Amazon EMR ランタイム実行ロールを渡す際に、Amazon EMR API
GetClusterSessionCredentials
を呼び出すアクセス許可を付与します。 -
(オプション) ユーザー定義の命名規則に従った IAM ロールを渡すアクセス許可を付与します。
-
(オプション) 特定のユーザー定義文字列でタグ付けされた Amazon EMR クラスターにアクセスするアクセス許可を付与します。
-
Amazon EMR クラスターに接続する際に使用するロールを選択できるように、IAM ロールをプリロードします。IAM ロールをプリロードする方法の詳細については、「実行ロールを Studio または 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 が別のアカウントにある場合のランタイムロール認証の設定
Amazon EMR クラスターが Studio アカウントにない場合は、クラスターに接続できるように、SageMaker AI 実行ロールがクロスアカウントの Amazon EMR アクセスロールを引き受けることを許可します。次の手順を実行して、クロスアカウント設定をセットアップします。
-
SageMaker AI 実行ロールのアクセス許可ポリシーを作成して、実行ロールが 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
" } ] } -
信頼ポリシーを作成して、Amazon EMR アクセスロールを引き受ける信頼された Studio アカウント ID を指定します。次に、ポリシーの例を示します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountSageMakerExecutionRoleToAssumeThisRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
studio_account_id
:role/studio_execution_role
" }, "Action": "sts:AssumeRole" } } -
Amazon EMR ランタイム実行ロールに、クラスター上で想定されるタスクを実行するために必要なアクセス許可を付与するように、Amazon EMR アクセスロールのアクセス許可ポリシーを作成します。アクセスロールのアクセス許可ポリシーで指定された Amazon EMR ランタイム実行ロールを使用して
GetClusterSessionCredentials
API を呼び出すように、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
" ] } } } ] } -
アカウント間でトラフィックが行き来できるように、クロスアカウントネットワークを設定します。ガイド付き手順については、「Set up the Amazon EMR クラスターのネットワークアクセスを設定する」を参照してください。このセクションの手順は、以下のタスクを完了するのに役立ちます。
-
Studio アカウントと Amazon EMR アカウントを VPC ピアリング接続して接続を確立します。
-
両方のアカウントのプライベートサブネットルートテーブルにルートを手動で追加します。これにより、Studio アカウントからリモートアカウントのプライベートサブネットへの Amazon EMR クラスターの作成と接続ができるようになります。
-
Studio ドメインにアタッチされたセキュリティグループを設定してアウトバウンドトラフィックを許可し、Amazon EMR プライマリノードのセキュリティグループを Studio インスタンスのセキュリティグループからのインバウンド TCP トラフィックを許可するように設定します。
-
-
Amazon EMR クラスターに接続する際に使用するロールを選択できるように、IAM ランタイムロールをプリロードします。IAM ロールをプリロードする方法の詳細については、「実行ロールを Studio または Studio Classic にプリロードする」を参照してください。
Lake Formation へのアクセスの設定
によって管理されるデータレイクからデータにアクセスする場合 AWS Lake Formation、ランタイムロールにアタッチされたポリシーを使用して、テーブルレベルおよび列レベルのアクセスを適用できます。Lake Formation へのアクセス許可を設定するには、「Integrate Amazon EMR with AWS Lake Formation」を参照してください。
実行ロールを Studio または Studio Classic にプリロードする
Amazon EMR クラスターに接続する際に使用するロールを選択できるように、IAM ランタイムロールをプリロードできます。Studio の JupyterLab のユーザーは、SageMaker AI コンソールまたは提供されたスクリプトを使用できます。
SageMaker AI コンソールを使用してランタイムロールをユーザープロファイルまたはドメインに関連付けるには:
-
https://console.aws.amazon.com/sagemaker/
で SageMaker AI コンソールに移動します。 -
左側のナビゲーションペインでドメインを選択し、アクセス許可を更新した SageMaker AI 実行ロールを使用してドメインを選択します。
-
-
ランタイム (クロスアカウントのユースケースの場合は、ランタイムとアクセスロール) をドメインに追加するには: [ドメインの詳細] ページの[アプリケーション設定] タブで、[JupyterLab] セクションに移動します。
-
ランタイム (およびクロスアカウントユースケースのアクセスロール) をユーザープロファイルに追加するには: ドメインの詳細ページで、ユーザープロファイルタブを選択し、アクセス許可を更新した SageMaker AI 実行ロールを使用してユーザープロファイルを選択します。[アプリケーション設定] タブで、[JupyterLab] セクションに移動します。
-
-
[編集] を選択して、アクセスロール (引き受けられるロール) と EMR Serverless ランタイム実行ロールの ARN を追加します。
-
[送信] を選択します。
次に Amazon EMR サーバーに接続すると、ランタイムロールがドロップダウンメニューに表示されて選択できるようになります。