翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ノートブックから Amazon EMRクラスターに接続する
Studio の Jupyter ノートブックから Amazon EMRクラスターに接続する場合は、追加のセットアップが必要になる場合があります。特に、以下の説明では 2 つの問題を取り上げています。
-
Amazon EMR接続コマンド にパラメータを渡します。 SparkMagic カーネルでは、Papermill がパラメータを渡す方法と がパラメータ SparkMagic を受け取る方法が異なるため、Amazon EMR接続コマンドに渡すパラメータが期待どおりに機能しない場合があります。この制限に対処する回避策は、パラメータを環境変数として渡すことです。問題と回避策の詳細については、「EMR 接続コマンドにパラメータを渡す」を参照してください。
-
ユーザー認証情報を Kerberos、LDAP、または HTTP Basic Auth 認証 Amazon EMRクラスター に渡します。インタラクティブモードでは、Studio はサインイン認証情報を入力できるポップアップフォームで認証情報を要求します。スケジュール済み非インタラクティブなノートブックでは、認証情報を AWS Secrets Manager経由で渡す必要があります。スケジュールされたノートブックジョブ AWS Secrets Manager で を使用する方法の詳細については、「」を参照してくださいユーザー認証情報を Kerberos、LDAP、または HTTP Basic Auth 認証 Amazon EMRクラスターに渡す。
EMR 接続コマンドにパラメータを渡す
SparkMagic PySpark および Spark カーネルでイメージを使用していて、EMR接続コマンドをパラメータ化する場合は、ジョブの作成フォームのパラメータフィールド (追加オプションドロップダウンメニュー) ではなく、環境変数フィールドにパラメータを指定します。Jupyter Notebook EMRの接続コマンドがこれらのパラメータを環境変数として渡すことを確認します。例えば、ジョブの作成時に環境変数として cluster-id
を渡したとします。EMR 接続コマンドは次のようになります。
%%local import os
%sm_analytics emr connect —cluster-id {os.getenv('cluster_id')} --auth-type None
この回避策は、 SparkMagic および Papermill の要件を満たすために必要です。背景コンテキストの場合、 SparkMagic カーネルは、%%local
マジックコマンドが定義したローカル変数に付随することを期待します。ただし、Papermill はオーバーライド時に %%local
magic コマンドを渡しません。この Papermill の制限を回避するには、[環境変数] フィールドに環境変数としてパラメータを指定する必要があります。
ユーザー認証情報を Kerberos、LDAP、または HTTP Basic Auth 認証 Amazon EMRクラスターに渡す
Kerberos、、LDAPまたは HTTP Basic Auth 認証を使用する Amazon EMRクラスターへの安全な接続を確立するには、 を使用してユーザー認証情報 AWS Secrets Manager を接続コマンドに渡します。Secrets Manager シークレットの作成については、「AWS Secrets Manager
シークレットを作成する」を参照してください。シークレットにはユーザー名とパスワードが含まれている必要があります。次の例に示すように、--secrets
引数を使用してシークレットを渡します。
%sm_analytics emr connect --cluster-id j_abcde12345 --auth Kerberos --secret aws_secret_id_123
管理者は、特別なタグに基づいてアクセスを割り当てる attribute-based-access-control (ABAC) メソッドを使用して、柔軟なアクセスポリシーを設定できます。柔軟なアクセスを設定して、アカウント内のすべてのユーザーに 1 つのシークレットを作成したり、ユーザーごとにシークレットを作成したりできます。以下のコードサンプルはこれらのシナリオを示しています。
アカウントのすべてのユーザーに 1 つのシークレットを作成する
{ "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : {"AWS" : "arn:aws:iam::
AWS_ACCOUNT_ID
:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"}, "Action" : "secretsmanager:GetSecretValue", "Resource" : [ "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID
:secret:aes123-1a2b3c", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID
:secret:aes456-4d5e6f", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID
:secret:aes789-7g8h9i" ] } ] }
ユーザーごとに異なるシークレットを作成する
次の例で示すように、PrincipleTag
タグを使用してユーザーごとに異なるシークレットを作成できます。
{ "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : {"AWS" : "arn:aws:iam::
AWS_ACCOUNT_ID
:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"}, "Condition" : { "StringEquals" : { "aws:ResourceTag/user-identity
": "${aws:PrincipalTag/user-identity
}" } }, "Action" : "secretsmanager:GetSecretValue", "Resource" : [ "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID
:secret:aes123-1a2b3c", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID
:secret:aes456-4d5e6f", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID
:secret:aes789-7g8h9i" ] } ] }