

# AWS Glue Jupyter および AWS Glue Studio ノートブックのインタラクティブセッションの設定
<a name="interactive-sessions-magics"></a>

## Jupyter Magics の概要
<a name="w2aac29c18b3"></a>

 Jupyter Magics は、セル先頭またはセル本文全体として実行できるコマンドです。マジックの先頭は、Line Magics の場合は `%`、Cell Magics の場合は `%%` です。`%region` や `%connections` などの Line Magics は、セル内の複数のマジック、または次の例のようにセル本文に含まれるコードを使用して実行できます。

```
%region us-east-2
%connections my_rds_connection
dy_f = glue_context.create_dynamic_frame.from_catalog(database='rds_tables', table_name='sales_table')
```

 Cell Magics はセル全体を使用する必要があり、コマンドを複数行に渡すことができます。`%%sql` の例を以下に示します。

```
%%sql
select * from rds_tables.sales_table
```

## Jupyter 向け AWS Glue インタラクティブセッションでサポートされているマジック
<a name="interactive-sessions-supported-magics"></a><a name="interactive-sessions-magics2"></a>

 以下に、Jupyter Notebookの AWS Glue インタラクティブセッションで使用できるマジックを示します。

 **Sessions Magics** 


| 名前 | 型 | 説明 | 
| --- | --- | --- | 
|  %help  |  該当なし  |  すべてのマジックコマンドのために説明と入力タイプのリストを返します。 | 
| %profile | String | AWS 認証情報プロバイダーとして使用するための設定に、プロファイルを指定します。 | 
| %region | String |  [AWS リージョン] を指定します。; この中でセッションを初期化します。`~/.aws/configure.` からのデフォルト設定 例:`%region us-west-1`  | 
| %idle\$1timeout | Int |   セルが実行されてからセッションがタイムアウトするまでの非アクティブ時間 (分)。Spark ETL セッションのデフォルトのアイドルタイムアウト値は、デフォルトのタイムアウトである 2,880分 (48時間) です。他のセッションタイプについては、該当するセッションタイプのマニュアルを参照してください。 例:`%idle_timeout 3000`  | 
| %session\$1id | 該当なし | 実行中のセッションのセッション ID をリターンします。 | 
| %session\$1id\$1prefix | String |   **[session\$1id\$1prefix]-[session\$1id]** の形式ですべてのセッション ID に先行する文字列を定義します。セッション ID を指定しないと、ランダムな UUID が生成されます。AWS Glue Studio で Jupyter Notebook を実行する場合に、このマジックはサポートされていません。 例:`%session_id_prefix 001`  | 
| %status |  | 現在の AWS Glue セッションのステータス (期間、構成、実行中のユーザー/ロールなど) を返します。 | 
| %stop\$1session  |  | 現在のセッションを停止します。 | 
| %list\$1sessions |  | 名前と ID で、現在実行中のすべてのセッションをリストします。 | 
| %session\$1type | String |  セッションタイプをストリーミング、ETL、または Ray のいずれかに設定します。 例:`%session_type Streaming`  | 
| %glue\$1version | String |  このセッションで使用される AWS Glue のバージョン。 例:`%glue_version 3.0`  | 

 **ジョブタイプを選択するためのマジック** 


| 名前 | 型 | 説明 | 
| --- | --- | --- | 
| %streaming | 文字列 | セッションタイプを AWS Glue ストリーミングに変更します。 | 
| %etl | String | セッションタイプを AWS Glue ETL に変更します。 | 
| %glue\$1ray | String | セッションタイプを AWS Glue for Ray に変更します。「[Magics supported by AWS Glue Ray interactive sessions](https://docs.aws.amazon.com/glue/latest/dg/is-using-ray-configuration)」を参照してください。 | 

 **AWS Glue for Spark 設定マジック** 

 `%%configure` マジックは、セッションのすべての構成パラメータで構成される JSON 形式のディクショナリです。各パラメータは、ここで指定することも、個々のマジックを使って指定することもできます。


| 名前 | 型 | 説明 | 
| --- | --- | --- | 
|  %%configure  |  辞書  |   セッションのすべての構成パラメータで構成される JSON 形式のディクショナリを指定します。各パラメータは、ここで指定することも、個々のマジックを使って指定することもできます。  パラメータのリストと `%%configure` の使用方法の例については、「[%%configure セルマジック引数](#interactive-sessions-magics-configure-arguments)」を参照してください。  | 
| %iam\$1role | String |   セッションを実行する IAM ロール ARN を指定します。\$1/.aws/configure からのデフォルト設定。  例:`%iam_role AWSGlueServiceRole`  | 
| %number\$1of\$1workers | Int |  ジョブの実行時に割り当てられる、定義された worker\$1type のワーカーの数。`worker_type` も設定する必要があります。デフォルト `number_of_workers` は 5 です。 例:`%number_of_workers 2`  | 
| %additional\$1python\$1modules | リスト |  クラスターに含める追加の Python モジュールのカンマ区切りリスト (PyPI または S3 からでも可)。 例えば、`%additional_python_modules pandas, numpy` などです。  | 
| %%tags | String |   セッションにタグを追加します。タグを中かっこ \$1 \$1 で囲んで指定します。各タグ名のペアは二重引用符 (" ") で囲まれ、カンマ (,) で区切られます。 <pre>%%tags<br />{"billing":"Data-Platform", "team":"analytics"}<br />                      </pre> `%status` マジックを使用して、セッションに関連付けられたタグを表示します。 <pre>%status</pre> <pre>Session ID: <sessionId><br /> Status: READY<br /> Role: <example-role><br /> CreatedOn: 2023-05-26 11:12:17.056000-07:00<br /> GlueVersion: 3.0<br /> Job Type: glueetl<br /> Tags: {'owner':'example-owner', 'team':'analytics', 'billing':'Data-Platform'}<br /> Worker Type: G.4X<br /> Number of Workers: 5<br /> Region: us-west-2<br /> Applying the following default arguments:<br /> --glue_kernel_version 0.38.0<br /> --enable-glue-datacatalog true<br /> Arguments Passed: ['--glue_kernel_version: 0.38.0', '--enable-glue-datacatalog: true']                <br />                </pre>  | 
| %%assume\$1role | 辞書 |  JSON 形式のディクショナリまたは IAM ロールの ARN 文字列を指定して、クロスアカウントアクセス用のセッションを作成します。 ARN を使用した例: <pre>%%assume_role<br />{<br />  'arn:aws:iam::XXXXXXXXXXXX:role/AWSGlueServiceRole'<br />}<br />                </pre> 認証情報の例: <pre> %%assume_role<br />{{<br />    "aws_access_key_id" = "XXXXXXXXXXXX",<br />    "aws_secret_access_key" = "XXXXXXXXXXXX",<br />    "aws_session_token" = "XXXXXXXXXXXX"<br />}}</pre>  | 

### %%configure セルマジック引数
<a name="interactive-sessions-magics-configure-arguments"></a>

 `%%configure` マジックは、セッションのすべての構成パラメータで構成される JSON 形式のディクショナリです。各パラメータは、ここで指定することも、個々のマジックを使って指定することもできます。`%%configure` セルマジックがサポートする引数の例については、以下を参照してください。ジョブに指定された実行引数に `--` プレフィックスを使用します。例: 

```
%%configure
{
   "--user-jars-first": "true",
   "--enable-glue-datacatalog": "false"
}
```

 ジョブパラメータの詳細については、「[ジョブのパラメータ](aws-glue-programming-etl-glue-arguments.md)」を参照してください。

**セッション設定**


| パラメータ | Type | 説明 | 
| --- | --- | --- | 
| max\$1retries | Int | 失敗した場合にこのジョブを再試行する最大回数。 <pre>%%configure<br />{<br />  "max_retries": "0"<br />}                      <br />                          </pre> | 
| max\$1concurrent\$1runs | Int | ジョブで許可される同時実行の最大数。例: <pre>%%configure<br />{<br />  "max_concurrent_runs": "3"<br />}</pre> | 

**セッションパラメータ**


| パラメータ | Type | 説明 | 
| --- | --- | --- | 
| --enable-spark-ui | ブール値 | Spark UI を有効にして AWS Glue ETL ジョブのモニタリングとデバッグを行います。<pre>%%configure<br />{<br />  "--enable-spark-ui": "true"<br />}</pre> | 
| --spark-event-logs-path | String | Amazon S3 パスを指定します。Spark UI のモニタリング機能を使用する場合。例: <pre>%%configure<br />{<br />  "--spark-event-logs-path": "s3://path/to/event/logs/"<br />}                           <br />                          </pre> | 
| --script\$1location | String | ジョブを実行するスクリプトへの S3 パスを指定します。例:<pre>%%configure <br />{<br />  "script_location": "s3://new-folder-here"<br />}                            <br />                          </pre> | 
| --SECURITY\$1CONFIGURATION | String | AWS Glue セキュリティ設定の名前 例: <pre>%%configure<br />{<br />    "--security_configuration": {<br />"encryption_type": "kms",<br />"kms_key_id": "YOUR_KMS_KEY_ARN"<br />}<br />}<br />                  </pre>  | 
| --job-language | String | スクリプトプログラミング言語。'scala' または 'python' の値を使用できます。デフォルトは 'python' です。例: <pre>%%configure <br />{<br />  "--job-language": "scala"<br />}                            <br />                  </pre>  | 
| --class | String | Scala スクリプトのエントリポイントとなる Scala クラス。デフォルトは null です。例: <pre>%%configure <br />{<br />  "--class": "className"<br />}                            <br />                  </pre>  | 
| --user-jars-first | ブール値 | クラスパスにあるお客様のその他の JAR ファイルに優先順位を付けます。デフォルトは null です。例: <pre>%%configure <br />{<br />  "--user-jars-first": "true"<br />}                            <br />                  </pre>  | 
| --use-postgres-driver | ブール値 | Amazon Redshift JDBC ドライバーとの競合を避けるために、クラスパスにある Postgres JDBC ドライバーが優先されます。デフォルトは null です。例: <pre>%%configure <br />{<br />  "--use-postgres-driver": "true"<br />}                            <br />                  </pre>  | 
| --extra-files | List(string) | スクリプトを実行する前に、AWS Glue がスクリプトの作業ディレクトリにコピーする設定ファイルなどの追加ファイルを指す Amazon S3 のパス。例: <pre>%%configure <br />{<br />  "--extra-files": "s3://path/to/additional/files/"<br />}                            <br />                  </pre>  | 
| --job-bookmark-option | String | ジョブブックマークの動作を制御します。'job-bookmark-enable'、'job-bookmark-disable' または 'job-bookmark-pause' の値を使用できます。デフォルトは 'job-bookmark-disable' です。例: <pre>%%configure<br />{<br />  "--job-bookmark-option": "job-bookmark-enable"<br />}                            <br />                  </pre>  | 
| --TempDir | String | ジョブの一時ディレクトリとして使用できるバケットへの Amazon S3 のパスを指定します。デフォルトは null です。例: <pre>%%configure <br />{<br />  "--TempDir": "s3://path/to/temp/dir"<br />}                            <br />                  </pre>  | 
| --enable-s3-parquet-optimized-committer | ブール値 | Parquet データを Amazon S3 に書き込むために、EMRFS Amazon S3 最適化コミッターを有効にします。デフォルトは 'true' です。例: <pre>%%configure <br />{<br />  "--enable-s3-parquet-optimized-committer": "false"<br />}                            <br />                  </pre>  | 
| --enable-rename-algorithm-v2 | ブール値 | EMRFS 名前変更アルゴリズムのバージョンをバージョン 2 に設定します。デフォルトは 'true' です。例: <pre>%%configure <br />{<br />  "--enable-rename-algorithm-v2": "true"<br />}                            <br />                  </pre>  | 
| --enable-glue-datacatalog | ブール値 | AWS Glue データカタログの Apache Spark Hive メタストアとしての使用を有効にします。例: <pre>%%configure <br />{<br />  "--enable-glue-datacatalog": "true"<br />}                            <br />                  </pre>  | 
| --enable-metrics | ブール値 | ジョブの実行のジョブプロファイリングに関するメトリクスの収集を有効にします。デフォルトは 'false' です。例: <pre>%%configure <br />{<br />  "--enable-metrics": "true"<br />}                            <br />                  </pre>  | 
| --enable-continuous-cloudwatch-log | ブール値 | AWS Glue ジョブのリアルタイムの連続ログ記録を有効にします。デフォルトは 'false' です。例: <pre>%%configure <br />{<br />  "--enable-continuous-cloudwatch-log": "true"<br />}                            <br />                  </pre>  | 
| --enable-continuous-log-filter | ブール値 | 連続ログ記録が有効であるジョブを作成または編集するときに、標準フィルタまたはフィルタなしを指定します。デフォルトは 'true' です。例: <pre>%%configure <br />{<br />  "--enable-continuous-log-filter": "true"<br />}                            <br />                  </pre>  | 
| --continuous-log-stream-prefix | String | 連続ログ記録が有効なジョブのカスタム Amazon CloudWatch ログストリームプレフィックスを指定します。デフォルトは null です。例: <pre>%%configure <br />{<br />  "--continuous-log-stream-prefix": "prefix"<br />}                            <br />                  </pre>  | 
| --continuous-log-conversionPattern | String | 連続ログ記録を有効にしたジョブのカスタム変換ログパターンを指定します。デフォルトは null です。例: <pre>%%configure <br />{<br />  "--continuous-log-conversionPattern": "pattern"<br />}                      <br />                  </pre>  | 
| --conf | String | Spark の設定パラメータを制御します。高度なユースケース向けです。各パラメータの前に --conf を使用してください。例: <pre>%%configure<br />{<br />    "--conf": "spark.hadoop.hive.metastore.glue.catalogid=123456789012 --conf hive.metastore.client.factory.class=com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory --conf hive.metastore.schema.verification=false"<br />}       <br />        </pre>  | 
| タイムアウト | Int | Spark セッションが終了する前にステートメントの完了を待機する最大時間を決定します。<pre>%%configure <br />{<br />  "timeout": "30"<br />}</pre>  | 
| 自動スケーリング | ブール値 | 自動スケーリングを使用するかどうかを決定します。<pre>%%configure <br />{<br />  "––enable-auto-scaling": "true"<br />}</pre>  | 

### Spark ジョブ (ETL とストリーミング) のマジック
<a name="interactive-sessions-magics-spark-jobs"></a>


| 名前 | 型 | 説明 | 
| --- | --- | --- | 
| %worker\$1type | 文字列 | Standard、G.1X、G.2X、G.4X、G.8X、G.12X、G.16X、R.1X、R.2X、R.4X、または R.8X。number\$1of\$1workers も設定する必要があります。デフォルトの worker\$1type は G.1X です。 | 
| %connections | リスト |  セッションで使用する接続のカンマ区切りリストを指定します。  例:  <pre>%connections my_rds_connection<br />                    dy_f = glue_context.create_dynamic_frame.from_catalog(database='rds_tables', table_name='sales_table')</pre>  | 
| %extra\$1py\$1files | リスト | Amazon S3 からの追加の Python ファイルのカンマ区切りリスト。 | 
| %extra\$1jars | リスト | クラスターに含める追加の jar のカンマ区切りリスト | 
| %spark\$1conf | String | セッション用のカスタム Spark 設定を指定します。例えば、%spark\$1conf spark.serializer=org.apache.spark.serializer.KryoSerializer。 | 

### Ray ジョブのマジック
<a name="interactive-sessions-magics-ray-jobs"></a>


| 名前 | 型 | 説明 | 
| --- | --- | --- | 
| %min\$1workers | Int |  Ray ジョブに割り当てられるワーカーの最小数。デフォルト: 1。 例:`%min_workers 2`   | 
| %object\$1memory\$1head | Int | ウォームスタート後のインスタンスヘッドノードの空きメモリの割合。最小値: 0。最大値: 100。例:`%object_memory_head 100`  | 
| %object\$1memory\$1worker | Int | ウォームスタート後のインスタンスワーカーノードの空きメモリの割合。最小値: 0。最大値: 100。例:`%object_memory_worker 100` | 

### Action Magics
<a name="interactive-sessions-magics-action"></a>


| 名前 | 型 | 説明 | 
| --- | --- | --- | 
| %%sql | 文字列 |   SQL コードを実行します。最初の `%%sql` マジックの後のすべての行は、SQL コードの一部として渡されます。  例:`%%sql select * from rds_tables.sales_table`  | 
| %matplot | Matplotlib Figure |  Matplotlib ライブラリを使用してデータを可視化します。 例: <pre>import matplotlib.pyplot as plt<br /><br /># Set X-axis and Y-axis values<br />x = [5, 2, 8, 4, 9]<br />y = [10, 4, 8, 5, 2]<br />  <br /># Create a bar chart <br />plt.bar(x, y)<br />  <br /># Show the plot<br />%matplot plt      <br />                </pre>  | 
| %plotly | Plotly Figure |  Plotly ライブラリを使用してデータを可視化します。 例: <pre>import plotly.express as px<br />                  <br />#Create a graphical figure<br />fig = px.line(x=["a","b","c"], y=[1,3,2], title="sample figure")<br /><br />#Show the figure<br />%plotly fig</pre>  | 

## ネーミングセッション
<a name="interactive-sessions-naming-sessions"></a>

 AWS Glue インタラクティブセッションは、AWS リソースであり、名前が必要です。名前はセッションごとに固有である必要があり、IAM 管理者によって制限される場合があります。詳細については、「[IAM を使用したインタラクティブセッション](glue-is-security.md)」を参照してください。Jupyter カーネルは固有のセッション名を自動的に生成します。ただし、セッション名は、次の 2 つの方法で手動で名前を付けることができます。

1.  `~.aws/config` にある AWS Command Line Interface 設定ファイルを使用する。「[AWS Command Line Interface による AWS の設定](https://docs.aws.amazon.com/config/latest/developerguide/gs-cli.html)」を参照してください。

1.  `%session_id_prefix` マジックを使用する。「[Jupyter 向け AWS Glue インタラクティブセッションでサポートされているマジック](#interactive-sessions-supported-magics)」を参照してください。

 セッション名は、次のように生成されます。
+ プレフィックスと session\$1id が指定されている場合、セッション名は \$1prefix\$1-\$1UUID\$1 になります。
+ 何も指定されていない場合、セッション名は \$1UUID\$1 になります。

プレフィックスにセッション名を使用すると、AWS CLI またはコンソールにセッションを一覧表示した際にセッションを認識できます。

## インタラクティブセッションの IAM ロールの指定
<a name="iam-role-interactive-sessions"></a>

 インタラクティブセッションを実行する AWS ETL コードを使って、AWS Glue Identity and Access Management (IAM)ロールを指定する必要があります。

 ロールには、AWS Glue ジョブ実行に必要なアクセス許可と同じ IAM アクセス許可が付与されている必要があります。AWS Glue ジョブおよびインタラクティブセッションのロール作成の詳細については、「[AWS Glue 用にIAM ロールを作成する](https://docs.aws.amazon.com/glue/latest/dg/create-an-iam-role.html)」を参照してください。

 IAM ロールは、次の 2 つの方法で指定できます。
+  `~.aws/config` にある AWS Command Line Interface 設定ファイルを使用する (推奨)。詳細については、「[\$1/.aws/config でのセッションの設定](https://docs.aws.amazon.com/glue/latest/ug/interactive-sessions-magics.html#interactive-sessions-named-profiles)」を参照してください。
**注記**  
 `%profile` マジックを使用すると、そのプロファイルの `glue_iam_role` の設定が優先されます。
+  %iam\$1role マジックを使用する。(詳しくは、「[Jupyter 向け AWS Glue インタラクティブセッションでサポートされているマジック](#interactive-sessions-supported-magics)」を参照してください。) 

## 名前付きプロファイルを使用したセッションの設定
<a name="interactive-sessions-named-profiles"></a>

 AWS Glue インタラクティブセッションでは、AWS Command Line Interface または boto3 と同じ認証情報が使用されます。インタラクティブセッションでは、`~/.aws/config` (Linux および MacOS) または `%USERPROFILE%\.aws\config` (Windows) にある AWS CLI などの名前付きプロファイルと優先的に連携します。詳細については、「[名前を指定されたプロファイルを使用する](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles)」を参照してください。

 AWS Glue サービスロールとセッション ID プレフィックスをプロファイルで指定できるようにすることで、インタラクティブセッションが名前付きプロファイルを利用します。プロファイルロールを設定するには、以下に示すように、名前付きプロファイルに `iam_role` キーまたは `session_id_prefix `、あるいはその両方の行を追加します。`session_id_prefix` は引用符を必要としません。例えば、` session_id_prefix` を追加する場合は、`session_id_prefix=myprefix` の値を入力します。

```
[default]
region=us-east-1
aws_access_key_id=AKIAIOSFODNN7EXAMPLE 
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
glue_iam_role=arn:aws:iam::<AccountID>:role/<GlueServiceRole> 
session_id_prefix=<prefix_for_session_names>

[user1] 
region=eu-west-1
aws_access_key_id=AKIAI44QH8DHBEXAMPLE 
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
glue_iam_role=arn:aws:iam::<AccountID>:role/<GlueServiceRoleUser1> 
session_id_prefix=<prefix_for_session_names_for_user1>
```

 認証情報を生成するカスタムメソッドがある場合は、`~/.aws/config` ファイルの `credential_process` パラメーターを使用するようにプロファイルを設定することもできます。例: 

```
[profile developer]
region=us-east-1
credential_process = "/Users/Dave/generate_my_credentials.sh" --username helen
```

 `credential_process` パラメータを使用した認証情報の調達の詳細については、「[外部プロセスを使用した認証情報の調達](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sourcing-external.html)」を参照してください。

 使用しているプロファイルにリージョンまたは `iam_role` が設定されていない場合は、最初に実行するセルの `%region` と `%iam_role` マジックを使用して設定する必要があります。　　　 