

# Jupyter 및 AWS Glue Studio 노트북용 AWS Glue 대화형 세션 구성
<a name="interactive-sessions-magics"></a>

## Jupyter 매직 소개
<a name="w2aac29c18b3"></a>

 Jupyter 매직은 셀의 시작 부분이나 셀 전체에 실행할 수 있는 명령입니다. `%`로 시작하는 매직은 라인 매직이고 `%%`로 시작하면 셀 매직입니다. 라인 매직(예:`%region` 및 `%connections`)은 하나의 셀 안에서 여러 매직으로 실행될 수 있으며, 또는 다음 예제와 같이 셀 본문에 포함된 코드로 실행할 수 있습니다.

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

 셀 매직은 전체 셀을 사용해야 하며 명령이 여러 줄에 걸쳐 포함될 수 있습니다. `%%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 대화형 세션에서 사용할 수 있는 매직입니다.

 **세션 매직** 


| 이름 | Type | 설명 | 
| --- | --- | --- | 
|  %help  |  해당 사항 없음  |  모든 매직 명령에 대한 설명 및 입력 유형 목록을 반환합니다. | 
| %profile | 문자열 | 자격 증명 공급자로 사용할 프로파일을 AWS 구성에서 지정합니다. | 
| %region | 문자열 |  세션을 초기화할 AWS 리전을 지정합니다. 기본값은 `~/.aws/configure.`에 있습니다. 예시: `%region us-west-1`  | 
| %idle\$1timeout | 정수 |   셀이 실행된 후 세션이 시간 초과되기까지의 비활성 시간(분)입니다. Spark ETL 세션의 기본 유휴 제한 시간 값은 기본 제한 시간 값인 2,880분(48시간)입니다. 다른 세션 유형에 대해서는 해당 세션 유형에 대한 설명서를 참조하세요. 예시: `%idle_timeout 3000`  | 
| %session\$1id | 해당 사항 없음 | 실행 중인 세션의 세션 ID를 반환합니다. | 
| %session\$1id\$1prefix | 문자열 |   형식이 **[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 | 문자열 |  세션 유형을 스트리밍, ETL 또는 Ray 중 하나로 설정합니다. 예시: `%session_type Streaming`  | 
| %glue\$1version | 문자열 |  이 세션에서 사용할 AWS Glue 버전입니다. 예시: `%glue_version 3.0`  | 

 **작업 유형 선택을 위한 매직** 


| 이름 | Type | 설명 | 
| --- | --- | --- | 
| %streaming | 문자열 | 세션 유형을 AWS Glue 스트리밍으로 변경합니다. | 
| %etl | 문자열 | 세션 유형을 AWS Glue ETL로 변경합니다. | 
| %glue\$1ray | 문자열 | 세션 유형을 AWS Glue for Ray로 변경합니다. [AWS Glue Ray 대화형 세션에서 지원되는 매직](https://docs.aws.amazon.com/glue/latest/dg/is-using-ray-configuration)을 참조하세요. | 

 **AWS Glue for Spart 구성 매직** 

 `%%configure` 매직은 세션에 대한 모든 구성 파라미터로 구성된 JSON 형식의 사전입니다. 각 파라미터는 여기서 지정하거나 개별 매직을 통해 지정할 수 있습니다.


| 이름 | Type | 설명 | 
| --- | --- | --- | 
|  %%configure  |  사전  |   세션에 대한 모든 구성 파라미터로 구성된 JSON 형식 사전을 지정합니다. 각 파라미터는 여기서 지정하거나 개별 매직을 통해 지정할 수 있습니다.  `%%configure`를 사용하는 방법에 대한 예제와 파라미터 목록은 [%%configure 셀 매직 인수](#interactive-sessions-magics-configure-arguments) 섹션을 참조하세요.  | 
| %iam\$1role | 문자열 |   세션을 실행하는 데 사용할 IAM 역할 ARN을 지정합니다. 기본값은 \$1/.aws/configure에 있습니다.  예시: `%iam_role AWSGlueServiceRole`  | 
| %number\$1of\$1workers | 정수 |  작업이 실행될 때 할당되는 정의된 worker\$1type의 작업자 수입니다. `worker_type`도 설정해야 합니다. `number_of_workers`의 기본값은 5입니다. 예시: `%number_of_workers 2`  | 
| %additional\$1python\$1modules | List |  클러스터에 포함할 추가 Python 모듈의 쉼표로 구분된 목록입니다(PyPI 또는 S3에서 가져올 수 있음). 예시: `%additional_python_modules pandas, numpy`.  | 
| %%tags | 문자열 |   세션에 태그를 추가합니다. 태그를 중괄호 \$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) 섹션을 참조하세요.

**세션 구성**


| 파라미터 | 유형 | 설명 | 
| --- | --- | --- | 
| max\$1retries | 정수 | 실패한 경우 이 작업을 다시 시도할 수 있는 최대 횟수입니다. <pre>%%configure<br />{<br />  "max_retries": "0"<br />}                      <br />                          </pre> | 
| max\$1concurrent\$1runs | 정수 | 작업에 허용된 최대 동시 실행 수입니다.예제: <pre>%%configure<br />{<br />  "max_concurrent_runs": "3"<br />}</pre> | 

**세션 파라미터**


| 파라미터 | 유형 | 설명 | 
| --- | --- | --- | 
| --enable-spark-ui | 부울 | Spark UI를 활성화하여 AWS Glue ETL 작업을 모니터링하고 디버깅합니다.<pre>%%configure<br />{<br />  "--enable-spark-ui": "true"<br />}</pre> | 
| --spark-event-logs-path | 문자열 | Amazon S3 경로를 지정합니다. Spark UI 모니터링 기능을 사용하는 경우.예제: <pre>%%configure<br />{<br />  "--spark-event-logs-path": "s3://path/to/event/logs/"<br />}                           <br />                          </pre> | 
| --script\$1location | 문자열 | 작업을 실행하는 스크립트의 S3 경로를 지정합니다.예제:<pre>%%configure <br />{<br />  "script_location": "s3://new-folder-here"<br />}                            <br />                          </pre> | 
| --SECURITY\$1CONFIGURATION | 문자열 | 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 | 문자열 | 스크립트 프로그래밍 언어. 'scala' 또는 'python'의 값이 허용됩니다. 기본값은 'python'입니다.예제: <pre>%%configure <br />{<br />  "--job-language": "scala"<br />}                            <br />                  </pre>  | 
| --class | 문자열 | 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 | 문자열 | 작업 북마크 동작을 제어합니다. '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 | 문자열 | 작업의 임시 디렉터리로 사용될 수 있는 버킷에 대한 Amazon S3 경로를 지정합니다. 기본값은 null입니다.예제: <pre>%%configure <br />{<br />  "--TempDir": "s3://path/to/temp/dir"<br />}                            <br />                  </pre>  | 
| --enable-s3-parquet-optimized-committer | 부울 | Amazon S3에 Parquet 데이터를 쓸 수 있도록 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 | 문자열 | 연속 로깅에 대해 활성화된 작업의 사용자 지정 Amazon CloudWatch 로그 스트림 접두사를 지정합니다. 기본값은 null입니다.예제: <pre>%%configure <br />{<br />  "--continuous-log-stream-prefix": "prefix"<br />}                            <br />                  </pre>  | 
| --continuous-log-conversionPattern | 문자열 | 연속 로깅에 대해 활성화된 작업의 사용자 지정 변환 로그 패턴을 지정합니다. 기본값은 null입니다.예제: <pre>%%configure <br />{<br />  "--continuous-log-conversionPattern": "pattern"<br />}                      <br />                  </pre>  | 
| --conf | 문자열 | 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>  | 
| 제한 시간 | 정수 | Spark 세션이 종료되기 전에 문이 완료될 때까지 기다려야 하는 최대 시간을 결정합니다.<pre>%%configure <br />{<br />  "timeout": "30"<br />}</pre>  | 
| Auto Scaling | 부울 | 오토 스케일링 사용 여부를 결정합니다.<pre>%%configure <br />{<br />  "––enable-auto-scaling": "true"<br />}</pre>  | 

### Spark 작업(ETL 및 스트리밍) 매직
<a name="interactive-sessions-magics-spark-jobs"></a>


| 이름 | Type | 설명 | 
| --- | --- | --- | 
| %worker\$1type | 문자열 | 표준, 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 | List |  세션에서 사용할 연결을 쉼표로 구분된 목록으로 지정합니다.  예제:  <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 | List | Amazon S3에 있는 추가 Python 파일의 쉼표로 구분된 목록입니다. | 
| %extra\$1jars | List | 클러스터에 포함할 추가 jar의 쉼표로 구분된 목록입니다. | 
| %spark\$1conf | 문자열 | 세션의 사용자 지정 Spartk 구성을 지정합니다. 예를 들어 %spark\$1conf spark.serializer=org.apache.spark.serializer.KryoSerializer입니다. | 

### Ray 작업을 위한 매직
<a name="interactive-sessions-magics-ray-jobs"></a>


| 이름 | Type | 설명 | 
| --- | --- | --- | 
| %min\$1workers | 정수 |  Ray 작업에 할당되는 작업자의 최소 수입니다. 기본값: 1. 예시: `%min_workers 2`   | 
| %object\$1memory\$1head | 정수 | 웜 스타트 이후 인스턴스 헤드 노드에서 사용 가능한 메모리의 백분율입니다. 최소값: 0 최대값: 100 예시: `%object_memory_head 100`  | 
| %object\$1memory\$1worker | 정수 | 웜 스타트 이후 인스턴스 워커 노드에서 사용 가능한 메모리의 백분율입니다. 최소값: 0 최대값: 100 예시: `%object_memory_worker 100` | 

### 작업 매직
<a name="interactive-sessions-magics-action"></a>


| 이름 | Type | 설명 | 
| --- | --- | --- | 
| %%sql | 문자열 |   SQL 코드를 실행합니다. 처음 `%%sql` 매직 이후의 모든 줄이 SQL 코드의 일부로 전달됩니다.  예시: `%%sql select * from rds_tables.sales_table`  | 
| %matplot | Matplotlib 수치 |  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 수치 |  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 커널은 자동으로 고유한 세션 이름을 생성합니다. 그러나 세션의 이름은 두 가지 방법으로 직접 지정할 수 있습니다.

1.  `~.aws/config`에 있는 AWS Command Line Interface 구성 파일을 사용합니다. [AWS Command Line Interface를 사용하여 AWS Config 설정](https://docs.aws.amazon.com/config/latest/developerguide/gs-cli.html)을 참조하세요.

1.  `%session_id_prefix` 매직을 사용합니다. [Jupyter용 AWS Glue 대화형 세션에서 지원되는 매직](#interactive-sessions-supported-magics)을(를) 참조하세요.

 세션 이름은 다음과 같이 생성됩니다.
+ 접두사와 session\$1id가 제공된 경우 세션 이름은 \$1접두사\$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 권한과 동일한 IAM 권한이 필요합니다. AWS Glue 작업 및 대화형 세션을 위한 역할 생성에 대한 자세한 내용은 [AWS Glue에 대한 IAM 역할 생성](https://docs.aws.amazon.com/glue/latest/dg/create-an-iam-role.html)을 참조하세요.

 IAM 역할은 두 가지 방법으로 지정할 수 있습니다.
+  `~.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` 매직을 사용하여 지정해야 합니다.