翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ノートブックから Amazon EMR クラスターに接続する
Studio の Jupyter Notebook から Amazon EMR クラスターに接続する場合、追加のセットアップを実行する必要がある場合があります。特に、以下の説明では 2 つの問題を取り上げています。
-
Amazon EMR 接続コマンドにパラメータを渡します。SparkMagic カーネルでは、Papermill がパラメータを渡す方法と SparkMagic がパラメータを受け取る方法が異なるため、Amazon EMR 接続コマンドに渡すパラメータが期待どおりに動作しない場合があります。この制限に対処する回避策は、パラメータを環境変数として渡すことです。問題と回避策の詳細については、「EMR 接続コマンドにパラメータを渡す」を参照してください。
-
Kerberos、LDAP、または HTTP ベーシック認証を受けた Amazon EMR クラスターにユーザー認証情報を渡します。インタラクティブモードでは、Studio はサインイン認証情報を入力できるポップアップフォームで認証情報を要求します。スケジュール済み非インタラクティブなノートブックでは、認証情報を AWS Secrets Manager経由で渡す必要があります。スケジュールされたノートブックジョブ AWS Secrets Manager で を使用する方法の詳細については、「」を参照してくださいKerberos、LDAP、または HTTP ベーシック認証を受けた 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
magic コマンドが伴うことを想定しています。ただし、Papermill はオーバーライド時に %%local
magic コマンドを渡しません。この Papermill の制限を回避するには、[環境変数] フィールドに環境変数としてパラメータを指定する必要があります。
Kerberos、LDAP、または HTTP ベーシック認証を受けた 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
管理者は、特別なタグに基づいてアクセスを割り当てる属性ベースのアクセス制御 (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" ] } ] }