

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

# ノートブックから Amazon EMR クラスターに接続する
<a name="scheduled-notebook-connect-emr"></a>

Studio の Jupyter Notebook から Amazon EMR クラスターに接続する場合、追加のセットアップを実行する必要がある場合があります。特に、以下の説明では 2 つの問題を取り上げています。
+ **Amazon EMR 接続コマンドにパラメータを渡します**。SparkMagic カーネルでは、Papermill がパラメータを渡す方法と SparkMagic がパラメータを受け取る方法が異なるため、Amazon EMR 接続コマンドに渡すパラメータが期待どおりに動作しない場合があります。この制限に対処する回避策は、パラメータを環境変数として渡すことです。問題と回避策の詳細については、「[EMR 接続コマンドにパラメータを渡す](#scheduled-notebook-connect-emr-pass-param)」を参照してください。
+ **Kerberos、LDAP、または HTTP ベーシック認証を受けた Amazon EMR クラスターにユーザー認証情報を渡します**。インタラクティブモードでは、Studio はサインイン認証情報を入力できるポップアップフォームで認証情報を要求します。スケジュール済み非インタラクティブなノートブックでは、認証情報を AWS Secrets Manager経由で渡す必要があります。スケジュールされたノートブックジョブ AWS Secrets Manager で を使用する方法の詳細については、「」を参照してください[Kerberos、LDAP、または HTTP ベーシック認証を受けた Amazon EMR クラスターにユーザー認証情報を渡します。](#scheduled-notebook-connect-emr-credentials)。

## EMR 接続コマンドにパラメータを渡す
<a name="scheduled-notebook-connect-emr-pass-param"></a>

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 クラスターにユーザー認証情報を渡します。
<a name="scheduled-notebook-connect-emr-credentials"></a>

Kerberos、LDAP、または HTTP Basic Auth 認証を使用する Amazon EMR クラスターへの安全な接続を確立するには、 AWS Secrets Manager を使用してユーザー認証情報を接続コマンドに渡します。Secrets Manager シークレットの作成については、「[AWS Secrets Manager シークレットを作成する](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)」を参照してください。シークレットには、ユーザー名とパスワードが含まれている必要があります。次の例に示すように、`--secrets` 引数を使用してシークレットを渡します。

```
%sm_analytics emr connect --cluster-id j_abcde12345 
    --auth Kerberos 
    --secret aws_secret_id_123
```

管理者は、特別なタグに基づいてアクセスを割り当てる属性ベースのアクセス制御 (ABAC) メソッドを使用して柔軟なアクセスポリシーを設定できます。柔軟なアクセスを設定して、アカウント内のすべてのユーザーに 1 つのシークレットを作成したり、ユーザーごとにシークレットを作成したりできます。以下のコードサンプルはこれらのシナリオを示しています。

**アカウントのすべてのユーザーに 1 つのシークレットを作成する**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{111122223333}}:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"
            },
            "Action": "secretsmanager:GetSecretValue",
            "Resource": [
                "arn:aws:secretsmanager:us-west-2:{{111122223333}}:secret:aes123-1a2b3c",
                "arn:aws:secretsmanager:us-west-2:{{111122223333}}:secret:aes456-4d5e6f",
                "arn:aws:secretsmanager:us-west-2:{{111122223333}}:secret:aes789-7g8h9i"
            ]
        }
    ]
}
```

------

**ユーザーごとに異なるシークレットを作成する**

次の例で示すように、`PrincipleTag` タグを使用してユーザーごとに異なるシークレットを作成できます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{111122223333}}: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:{{111122223333}}:secret:aes123-1a2b3c",
                "arn:aws:secretsmanager:us-west-2:{{111122223333}}:secret:aes456-4d5e6f",
                "arn:aws:secretsmanager:us-west-2:{{111122223333}}:secret:aes789-7g8h9i"
            ]
        }
    ]
}
```

------