

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon EMR Notebook 개요
<a name="emr-managed-notebooks"></a>

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.

[Apache Spark](https://aws.amazon.com/emr/features/spark/)를 실행하는 Amazon EMR 클러스터와 함께 Amazon EMR Notebooks를 사용하여 Amazon EMR 콘솔 내에서 [Jupyter](https://jupyter.org) Notebook 및 JupyterLab 인터페이스를 생성하고 열 수 있습니다. EMR 노트북은 쿼리와 코드를 실행하는 데 사용할 수 있는 '서버리스' 노트북입니다. 기존 노트북과 달리 EMR 노트북의 콘텐츠(노트북 셀 내 방정식, 쿼리, 모델, 코드, 설명 텍스트)는 클라이언트에서 실행됩니다. 명령은 EMR 클러스터에서 커널을 사용하여 실행됩니다. 노트북 콘텐츠는 내구성과 유연한 재사용을 위해 클러스터 데이터와 별도로 Amazon S3에 저장됩니다.

클러스터를 시작하고, 분석을 위해 EMR 노트북을 연결한 다음, 클러스터를 종료할 수 있습니다. 실행 중인 한 클러스터에 연결된 노트북을 닫고 다른 클러스터로 전환할 수도 있습니다. 여러 사용자가 동일한 클러스터에 노트북을 동시에 연결하고 Amazon S3의 노트북 파일을 서로 공유할 수 있습니다. 이러한 기능을 사용하면 온디맨드로 클러스터를 실행하여 비용을 절감할 수 있으며 다양한 클러스터와 데이터 세트에 맞게 노트북을 재구성하는 데 소요되는 시간을 단축할 수 있습니다.

또한 Amazon EMR 콘솔과 상호 작용할 필요 없이 Amazon EMR API를 사용하여 프로그래밍 방식으로 EMR 노트북을 실행할 수도 있습니다('헤드리스 실행'). EMR 노트북에 파라미터 태그가 있는 셀을 포함해야 합니다. 이 셀을 사용하면 스크립트가 새 입력 값을 노트북에 전달할 수 있습니다. 파라미터화된 노트북은 다양한 입력 값 세트와 함께 재사용할 수 있습니다. 새 입력 값으로 편집하고 실행하기 위해 동일한 노트북을 복사할 필요가 없습니다. Amazon EMR은 파라미터화된 노트북을 실행할 때마다 S3에 출력 노트북을 생성하고 저장합니다. EMR 노트북 API 코드 샘플은 [EMR Notebooks에 대한 프로그래밍 명령 샘플](emr-managed-notebooks-headless.md) 섹션을 참조하세요.

**중요**  
EMR Notebooks 기능은 Amazon EMR 릴리스 5.18.0 이상을 사용하는 클러스터를 지원합니다. 최신 버전의 Amazon EMR 또는 최소 5.30.0, 5.32.0 또는 6.2.0을 사용하는 클러스터에서 EMR Notebooks를 사용하는 것이 좋습니다. 이 릴리스에서 Jupyter 커널은 Jupyter 인스턴스에서 실행되는 대신, 연결된 클러스터에서 실행됩니다. 이를 통해 성능을 개선하는 데 도움이 되며 커널과 라이브러리를 사용자 지정하는 기능을 향상합니다. 자세한 내용은 [클러스터 릴리스 버전별 기능 차이점](emr-managed-notebooks-considerations.md#considerations-cluster-version) 단원을 참조하십시오.

Amazon S3 스토리지와 Amazon EMR 클러스터의 해당 요금이 적용됩니다.

# Amazon EMR Notebooks를 콘솔에서 Amazon EMR Studio Workspaces로 사용 가능
<a name="emr-managed-notebooks-migration"></a>

## EMR Notebooks에서 Workspace로 전환
<a name="emr-notebooks-workspaces-transition"></a>

[새로운 Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)에서는 EMR Notebooks를 Amazon EMR Studio Workspace와 통합하여 단일 환경으로 만들었습니다. EMR Studio를 사용하는 경우 노트북을 구성하고 실행하기 위해 다양한 Workspace를 생성하고 구성할 수 있습니다. 이전 콘솔에 Amazon EMR Notebooks가 있는 경우 콘솔에서 EMR Studio Workspaces로 사용 가능합니다.

Amazon EMR은 사용자를 위해 이러한 새로운 EMR Studio Workspace를 만들었습니다. 생성된 Studio의 수는 EMR Notebooks에서 사용하는 개별 VPC의 수와 일치합니다. 예를 들어, EMR Notebooks의 서로 다른 두 VPC에 있는 EMR 클러스터에 연결하는 경우 두 개의 새로운 EMR Studio가 생성됩니다. 노트북은 새 Studio에 배포됩니다.

**중요**  
이전 Amazon EMR 콘솔에서 새 노트북을 생성하는 옵션을 해제했습니다. 대신 새 Amazon EMR 콘솔에서 **Workspace 생성**을 사용합니다.

Amazon EMR Studio Workspace에 대한 자세한 내용은 [EMR Studio Workspace 알아보기](emr-studio-configure-workspace.md) 섹션을 참조하세요. EMR Studio의 개념적 개요는 [Amazon EMR Studio 작동 방식](how-emr-studio-works.md) 페이지에서 [워크스페이스](how-emr-studio-works.md#emr-studio-workspaces) 섹션을 참조하세요.

## 필요한 작업
<a name="emr-notebooks-workspaces-prepare"></a>

이전 콘솔에서도 기존 노트북을 계속 사용할 수 있지만 대신 콘솔에서 Amazon EMR Studio Workspaces를 사용하는 것이 좋습니다. [EMR Notebooks에서는 사용할 수 없는 EMR Studio의 기능](#emr-notebooks-workspaces-enhancements)을 켜려면 추가 역할 권한을 구성해야 합니다.

**참고**  
기존 EMR Notebooks를 EMR Studio Workspace로 보고 새 Workspace를 생성하려면 적어도 사용자의 역할에 대한 `elasticmapreduce:ListStudios` 및 `elasticmapreduce:CreateStudioPresignedUrl` 권한이 있어야 합니다. 모든 EMR Studio 기능에 액세스하려는 경우 EMR Notebooks 사용자에게 필요한 추가 권한의 전체 목록은 [EMR Notebooks 사용자를 위한 EMR Studio 기능 활성화](#emr-notebooks-workspaces-enable) 섹션을 참조하세요.

## EMR Notebooks에서 확장된 EMR Studio의 향상된 기능
<a name="emr-notebooks-workspaces-enhancements"></a>

Amazon EMR Studio를 사용하면 EMR Notebooks에서는 사용할 수 없는 다음과 같은 기능을 설정하고 사용할 수 있습니다.
+ [Jupyterlab 내에서 EMR 클러스터 찾아보기 및 연결](emr-studio-create-use-clusters.md)
+ [Jupyterlab 내에서 EMR Notebooks 가상 클러스터 찾아보기 및 연결](emr-studio-create-use-clusters.md)
+ [Jupyterlab 내에서 Git 리포지토리에 연결](emr-studio-git-repo.md)
+ [다른 팀원과 협업하여 노트북 코드 작성 및 실행 ](emr-studio-workspace-collaboration.md)
+ [SQL 탐색기로 데이터 찾아보기](emr-studio-sql-explorer.md)
+ [Service Catalog를 사용하여 EMR 클러스터 프로비저닝](emr-studio-cluster-templates.md)

Amazon EMR Studio의 전체 기능 목록은 [EMR Studio의 주요 기능](emr-studio.md#emr-studio-key-features) 섹션을 참조하세요.

## EMR Notebooks 사용자를 위한 EMR Studio 기능 활성화
<a name="emr-notebooks-workspaces-enable"></a>

이번 병합의 일환으로 생성된 새 EMR Studio는 기존 `EMR_Notebooks_DefaultRole` IAM 역할을 EMR Studio 서비스 역할로 사용합니다.

EMR Notebooks에서 EMR Studio로 전환하고 EMR Studio의 추가 기능을 사용하려는 사용자는 몇 가지 새로운 역할 권한이 필요합니다. EMR Studio를 사용하려는 EMR Notebooks 사용자의 역할에 다음 권한을 추가합니다.

**참고**  
기존 EMR Notebooks를 EMR Studio Workspace로 보고 새 Workspace를 생성하려면 적어도 사용자의 역할에 대한 `elasticmapreduce:ListStudios` 및 `elasticmapreduce:CreateStudioPresignedUrl` 권한이 있어야 합니다. EMR Studio 기능을 모두 사용하려면 아래 나열된 모든 권한을 추가합니다. 관리자에게는 EMR Studio를 생성하고 관리할 수 있는 권한도 필요합니다. 자세한 내용은 [EMR Studio를 생성 및 관리하는 관리자 권한](emr-studio-admin-permissions.md) 단원을 참조하십시오.

```
"elasticmapreduce:DescribeStudio", 
"elasticmapreduce:ListStudios",
"elasticmapreduce:CreateStudioPresignedUrl",
"elasticmapreduce:UpdateEditor", 
"elasticmapreduce:PutWorkspaceAccess", 
"elasticmapreduce:DeleteWorkspaceAccess", 
"elasticmapreduce:ListWorkspaceAccessIdentities",
"emr-containers:ListVirtualClusters", 
"emr-containers:DescribeVirtualCluster", 
"emr-containers:ListManagedEndpoints", 
"emr-containers:DescribeManagedEndpoint", 
"emr-containers:CreateAccessTokenForManagedEndpoint",
"emr-containers:ListJobRuns", 
"emr-containers:DescribeJobRun",
"servicecatalog:SearchProducts", 
"servicecatalog:DescribeProduct", 
"servicecatalog:DescribeProductView", 
"servicecatalog:DescribeProvisioningParameters", 
"servicecatalog:ProvisionProduct", 
"servicecatalog:UpdateProvisionedProduct", 
"servicecatalog:ListProvisioningArtifacts", 
"servicecatalog:DescribeRecord", 
"servicecatalog:ListLaunchPaths", 
"cloudformation:DescribeStackResources"
```

다음 권한은 EMR Studio에서 협업 기능을 사용하는 데에도 필요하지만 EMR Notebooks에는 필요하지 않습니다.

```
"sso-directory:SearchUsers",
"iam:GetUser", 
"iam:GetRole", 
"iam:ListUsers", 
"iam:ListRoles", 
"sso:GetManagedApplicationInstance"
```

# EMR Notebooks에 대한 요구 사항, 릴리스 버전의 차이 및 보안
<a name="emr-managed-notebooks-considerations"></a>

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.

EMR Notebook을 사용하여 클러스터를 생성하고 솔루션을 개발하는 경우 다음 요구 사항, 릴리스 버전의 차이, 보안 정보 및 기타 고려 사항을 고려합니다.

## 클러스터 요구 사항
<a name="considerations-limitations"></a>
+ **Amazon EMR 퍼블릭 액세스 차단 활성화** - 클러스터에 대한 인바운드 액세스를 사용하면 클러스터 사용자가 노트북 커널을 실행할 수 있습니다. 인증된 사용자만 클러스터에 액세스할 수 있는지 확인합니다. 퍼블릭 공용 액세스 차단을 활성화된 상태로 두고 인바운드 SSH 트래픽을 신뢰할 수 있는 소스로만 제한하는 것이 좋습니다. 자세한 내용은 [Amazon EMR 퍼블릭 액세스 차단 사용](emr-block-public-access.md) 및 [Amazon EMR 클러스터의 보안 그룹으로 네트워크 트래픽 제어](emr-security-groups.md) 섹션을 참조하세요.
+ **호환 클러스터 사용** - 노트북에 연결된 클러스터는 다음 요구 사항을 충족해야 합니다.
  + Amazon EMR을 사용하여 생성한 클러스터만 지원됩니다. Amazon EMR 내에서 독립적으로 클러스터를 생성한 다음 EMR 노트북을 연결하거나, EMR 노트북을 생성할 때 호환되는 클러스터를 생성할 수 있습니다.
  + Amazon EMR 릴리스 버전 5.18.0 이상을 사용하여 생성한 클러스터만 지원됩니다. [클러스터 릴리스 버전별 기능 차이점](#considerations-cluster-version)을(를) 참조하세요.
  + AMD EPYC 프로세서를 사용하는 Amazon EC2 인스턴스를 통해 생성된 클러스터(예: m5a.\$1 and r5a.\$1 인스턴스 유형)는 지원되지 않습니다.
  + EMR Notebooks는 `VisibleToAllUsers`를 `true`로 설정된 상태로 생성된 클러스터에서만 작동합니다. `VisibleToAllUsers`는 기본적으로 `true`입니다.
  + EC2-VPC 안에서 클러스터를 시작해야 합니다. 퍼블릭 및 프라이빗 서브넷이 지원됩니다. EC2-Classic 플랫폼은 지원되지 않습니다.
  + Hadoop, Spark 및 Livy가 설치된 상태에서 클러스터를 시작해야 합니다. 다른 애플리케이션을 설치할 수도 있지만 EMR Notebooks는 현재 Spark 클러스터만 지원합니다.
**중요**  
Amazon EMR 릴리스 버전 5.32.0 이상 또는 6.2.0 이상의 경우 EMR Notebooks와 함께 작동하려면 클러스터에서 Jupyter Enterprise Gateway 애플리케이션도 실행 중이어야 합니다.
  + Kerberos 인증을 사용하는 클러스터는 지원되지 않습니다.
  + 와 통합된 클러스터는 노트북 범위 라이브러리 설치만 AWS Lake Formation 지원합니다. 클러스터에 커널과 라이브러리를 설치하는 작업은 지원되지 않습니다.
  + 프라이머리 노드가 여러 개 있는 클러스터는 지원되지 않습니다.
  +  AWS Graviton22 기반 Amazon EC2 인스턴스를 사용하는 클러스터는 지원되지 않습니다.

## 클러스터 릴리스 버전별 기능 차이점
<a name="considerations-cluster-version"></a>

Amazon EMR 릴리스 버전 5.30.0, 5.32.0 이상 또는 6.2.0 이상을 사용하여 생성한 클러스터와 함께 EMR Notebooks를 사용하는 것이 좋습니다. 이 버전에서는 EMR Notebooks가 연결된 Amazon EMR 클러스터에서 커널을 실행합니다. 클러스터 프라이머리 노드에 커널과 라이브러리를 직접 설치할 수 있습니다. 이러한 클러스터 버전에서 EMR Notebooks를 사용하면 다음과 같은 이점이 있습니다.
+ **성능 향상** - 노트북 커널은 선택한 EC2 인스턴스 유형의 클러스터에서 실행됩니다. 이전 버전은 크기를 조정하거나 액세스하거나 사용자 지정할 수 없는 특별 인스턴스에서 커널을 실행합니다.
+ **커널 추가 및 사용자 정의 가능** - `conda` 및 `pip`를 사용하여 커널 패키지를 설치하기 위해 클러스터에 연결할 수 있습니다. 또한 노트북 셀 내에서 터미널 명령을 사용하여 `pip` 설치가 지원됩니다. 이전 버전에서는 사전 설치된 커널만 사용할 수 있었습니다(Python, PySpark, Spark 및 SparkR). 자세한 내용은 [클러스터 프라이머리 노드에 커널 및 Python 라이브러리 설치](emr-managed-notebooks-installing-libraries-and-kernels.md#emr-managed-notebooks-cluster-kernel) 단원을 참조하십시오.
+ **Python 라이브러리 설치 기능** - `conda` 및 `pip`를 사용하여 [클러스터 프라이머리 노드에 Python 라이브러리를 설치](emr-managed-notebooks-installing-libraries-and-kernels.md#emr-managed-notebooks-cluster-kernel)할 수 있습니다. `conda`를 사용하는 것이 좋습니다. 이전 버전에서는 PySpark용 [노트북 범위의 라이브러리](emr-managed-notebooks-installing-libraries-and-kernels.md#emr-managed-notebooks-custom-libraries-limitations)만 지원됩니다.


**클러스터 릴리스별로 지원되는 EMR Notebooks 기능**  

| 클러스터 릴리스 버전 | PySpark용 노트북 범위의 라이브러리 | 클러스터에 커널 설치 | 프라이머리 노드에 Python 라이브러리 설치 | 
| --- | --- | --- | --- | 
|  5.18.0 이하  |  EMR Notebooks는 지원되지 않음  | 
|  5.18.0\$15.25.0  |  아니요  |  아니요  |  아니요  | 
|  5.26.0\$15.29.0  |  [예](emr-managed-notebooks-installing-libraries-and-kernels.md#emr-managed-notebooks-custom-libraries-limitations)  |  아니요  |  아니요  | 
|  5.30.0  |  [예](emr-managed-notebooks-installing-libraries-and-kernels.md#emr-managed-notebooks-custom-libraries-limitations)  |  [예](emr-managed-notebooks-installing-libraries-and-kernels.md#emr-managed-notebooks-cluster-kernel)  |  [예](emr-managed-notebooks-installing-libraries-and-kernels.md#emr-managed-notebooks-cluster-kernel)  | 
|  6.0.0  |  아니요  |  아니요  |  아니요  | 
| 5.32.0 이상, 6.2.0 이상 | [예](emr-managed-notebooks-installing-libraries-and-kernels.md#emr-managed-notebooks-custom-libraries-limitations) | [예](emr-managed-notebooks-installing-libraries-and-kernels.md#emr-managed-notebooks-cluster-kernel) | [예](emr-managed-notebooks-installing-libraries-and-kernels.md#emr-managed-notebooks-cluster-kernel) | 

## 동시에 연결된 EMR Notebooks에 대한 제한 사항
<a name="emr-managed-notebooks-cluster-limits"></a>

노트북을 지원하는 클러스터를 생성할 때는 클러스터 프라이머리 노드의 EC2 인스턴스 유형을 고려합니다. 이 EC2 인스턴스의 메모리 제약에 따라 클러스터에서 코드와 쿼리를 동시에 실행할 수 있는 노트북 수가 결정됩니다.


| 프라이머리 노드 EC2 인스턴스 유형 | EMR Notebooks 수 | 
| --- | --- | 
|  \$1.medium  |  2  | 
|  \$1.large  |  4  | 
|  \$1.xlarge  |  8  | 
|  \$1.2xlarge  |  16  | 
|  \$1.4xlarge  |  24  | 
|  \$1.8xlarge  |  24  | 
|  \$1.16xlarge  |  24  | 

## Jupyter Notebook 및 Python 버전
<a name="considerations-versions"></a>

EMR Notebooks는 연결된 클러스터의 Amazon EMR 릴리스 버전과 상관없이 [Jupyter Notebook 버전 6.0.2](https://jupyter-notebook.readthedocs.io/en/stable/changelog.html#release-6-0-2) 및 Python 3.6.5를 실행합니다.

## 보안 관련 고려 사항
<a name="considerations-notebooks-security"></a>

**암호화된 S3 위치 사용**  
Amazon S3에서 노트북 파일을 저장할 암호화된 위치를 지정하는 경우 [EMR Notebooks의 서비스 역할](emr-managed-notebooks-service-role.md)을 키 사용자로 설정해야 합니다. 기본 서비스 역할은 `EMR_Notebooks_DefaultRole`입니다. 암호화에 AWS KMS 키를 사용하는 경우 AWS Key Management Service 개발자 안내서의 [AWS KMS에서 키 정책 사용](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-users-crypto) 및 [키 사용자 추가 지원 문서를 참조하세요](https://aws.amazon.com/premiumsupport/knowledge-center/s3-bucket-access-default-encryption/).

**호스팅 도메인에서 쿠키 사용**  
Amazon EMR에서 사용할 수 있는 콘솔 외부 애플리케이션에 대한 보안을 강화하기 위해 애플리케이션 호스팅 도메인이 PSL(Public Suffix List)에 등록됩니다. 이러한 호스팅 도메인의 예에는 `emrstudio-prod.us-east-1.amazonaws.com`, `emrnotebooks-prod.us-east-1.amazonaws.com`, `emrappui-prod.us-east-1.amazonaws.com`이 포함됩니다. 보안 강화를 위해 기본 도메인 이름에 민감한 쿠키를 설정해야 하는 경우 `__Host-` 접두사가 있는 쿠키를 사용하는 것이 좋습니다. 이렇게 하면 교차 사이트 요청 위조 시도(CSRF) 로부터 도메인을 보호하는 데 도움이 됩니다. 자세한 내용은 *Mozilla 개발자 네트워크*의 [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes) 페이지를 참조하세요.

# EMR Studio에서 노트북 생성
<a name="emr-managed-notebooks-create"></a>

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.

이전 Amazon EMR 콘솔을 사용하여 EMR 노트북을 생성합니다. AWS CLI 또는 Amazon EMR API를 사용하여 노트북을 생성하는 것은 지원되지 않습니다.

**EMR 노트북을 생성하려면**

1. [https://console.aws.amazon.com/elasticmapreduce/](https://console.aws.amazon.com/elasticmapreduce/)에서 Amazon EMR 콘솔을 엽니다.

1. **노트북**, **노트북 생성**을 선택합니다.

1. **노트북 이름**과 선택적 **노트북 설명**을 입력합니다.

1. 노트북을 연결하려는 활성 클러스터가 있으면 기본값인 **기존 클러스터 선택**을 선택된 상태로 두고 **선택**을 클릭한 다음, 목록에서 클러스터를 선택하고 **클러스터 선택**을 클릭합니다. EMR Notebooks의 클러스터 요구 사항에 대한 자세한 내용은 [EMR Notebooks에 대한 요구 사항, 릴리스 버전의 차이 및 보안](emr-managed-notebooks-considerations.md) 섹션을 참조하세요.

   **—또는—**

   **클러스터 생성**을 선택하고 **클러스터 이름**을 입력한 후 다음 지침에 따라 옵션을 선택합니다. 클러스터는 온디맨드 인스턴스를 사용하는 계정의 기본 VPC에 생성됩니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/emr-managed-notebooks-create.html)

1. **보안 그룹**에 대해 **Use default security groups(기본 보안 그룹 사용)**를 선택합니다. 또는 **보안 그룹 선택**을 선택하고 클러스터의 VPC에서 사용할 수 있는 사용자 지정 보안 그룹을 선택합니다. 프라이머리 인스턴스에 대해 하나를 선택하고 노트북 클라이언트 인스턴스에 대해 다른 하나를 선택합니다. 자세한 내용은 [EMR Notebooks에 EC2 보안 그룹 지정](emr-managed-notebooks-security-groups.md) 단원을 참조하십시오.

1. **AWS 서비스 역할**에 대해 기본값을 그대로 두거나 목록에서 사용자 지정 역할을 선택합니다. 노트북의 클라이언트 인스턴스가 이 역할을 사용합니다. 자세한 내용은 [EMR Notebooks의 서비스 역할](emr-managed-notebooks-service-role.md) 단원을 참조하십시오.

1. **노트북 위치**에 대해 노트북 파일이 저장된 Amazon S3 내의 위치를 선택하거나 직접 위치를 지정합니다. 버킷과 폴더가 없으면 Amazon EMR에서 만듭니다.

   Amazon EMR에서 폴더 이름이 **노트북 ID**인 폴더를 생성하고 이름이 `NotebookName.ipynb`인 파일에 노트북을 저장합니다. 예를 들어, 이름이 `MyFirstEMRManagedNotebook`인 노트북에 Amazon S3 위치 `s3://amzn-s3-demo-bucket/MyNotebooks`를 지정하면 노트북 파일이 `s3://amzn-s3-demo-bucket/MyNotebooks/NotebookID/MyFirstEMRManagedNotebook.ipynb`에 저장됩니다.

   Amazon S3에서 암호화된 위치를 지정하는 경우 [EMR Notebooks의 서비스 역할](emr-managed-notebooks-service-role.md)을 키 사용자로 설정해야 합니다. 기본 서비스 역할은 `EMR_Notebooks_DefaultRole`입니다. 암호화에 AWS KMS 키를 사용하는 경우 AWS Key Management Service 개발자 안내서의 [AWS KMS에서 키 정책 사용](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-users-crypto) 및 [키 사용자 추가 지원 문서를 참조하세요](https://aws.amazon.com/premiumsupport/knowledge-center/s3-bucket-access-default-encryption/).

1. 선택적으로 이 노트북과 연결하려는 Amazon EMR에 Git 기반 리포지토리를 추가한 경우, **Git 리포지토리**를 선택하고 **리포지토리 선택**을 클릭한 다음 목록에서 리포지토리를 선택합니다. 자세한 내용은 [Git 기반 리포지토리를 EMR Notebooks에 연결](emr-git-repo.md) 단원을 참조하십시오.

1. 선택적으로 **태그**를 선택한 후 노트북의 추가 키-값 태그를 추가합니다.
**중요**  
**키** 문자열이 `creatorUserID`로 설정되고 값이 IAM 사용자 ID로 설정된 기본 태그가 액세스 목적으로 적용됩니다. 액세스를 제어하는 데 이 태그를 사용할 수 있으므로 변경하거나 제거하지 않는 것이 좋습니다. 자세한 내용은 [액세스 제어를 위한 IAM 정책에서 클러스터 및 노트북 태그 사용](security_iam_service-with-iam.md#emr-tag-based-access) 단원을 참조하십시오.

1. **노트북 생성**을 선택합니다.

# EMR Notebooks에서 작업
<a name="emr-managed-notebooks-working-with"></a>

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.

EMR 노트북을 생성한 후 잠시 후에 노트북이 시작됩니다. **노트북** 목록의 **상태**가 **시작 중**으로 표시됩니다. **준비 상태**가 되면 노트북을 열 수 있습니다. 노트북과 함께 클러스터를 생성한 경우 노트북이 **준비 상태**가 되려면 시간이 좀 더 걸릴 수 있습니다.

**작은 정보**  
브라우저를 새로 고치거나 노트북 목록 위쪽의 새로 고침 아이콘을 선택하여 노트북 상태를 새로 고치세요.

## 노트북 상태 이해
<a name="emr-managed-notebooks-status"></a>

EMR 노트북은 **노트북** 목록의 **상태**에 대해 다음을 포함할 수 있습니다.


| Status | 의미 | 
| --- | --- | 
|  준비됨  |  노트북 편집기를 사용하여 노트북을 열 수 있습니다. 노트북이 **준비 상태**이면 노트북을 중지하거나 삭제할 수 있습니다. 클러스터를 변경하려면 먼저 노트북을 중지해야 합니다. **준비 상태**의 노트북이 장기간 유휴 상태일 경우 자동으로 중지됩니다.  | 
|  시작됨  |  노트북이 생성되어 클러스터에 연결되는 중입니다. 노트북이 시작 중일 때는 노트북 편집기를 열거나 중지하거나 삭제하거나 클러스터를 변경할 수 없습니다.  | 
|  보류중  |  노트북이 생성되어 클러스터와의 상호 작용이 완료되기를 기다리고 있습니다. 클러스터가 리소스를 프로비저닝하거나 다른 요청에 응답하고 있을 수 있습니다. 노트북이 *로컬 모드*인 상태에서 노트북 편집기를 열 수 있습니다. 클러스터 프로세스를 사용하는 모든 코드가 실행되지 않으며 실패합니다.  | 
|  중지 중  |  노트북이 종료되고 있거나 노트북이 연결된 클러스터가 종료되고 있습니다. 노트북이 중지 중일 때는 노트북 편집기를 열거나 중지하거나 삭제하거나 클러스터를 변경할 수 없습니다.  | 
|  중지됨  |  노트북이 종료되었습니다. 클러스터가 여전히 실행 중일 때는 같은 클러스터에서 노트북을 시작할 수 없습니다. 클러스터를 변경하고 삭제할 수 있습니다.  | 
|  삭제 중  |  사용 가능한 클러스터 목록에서 클러스터가 제거되는 중입니다. 노트북 파일(`NotebookName.ipynb `)이 Amazon S3에 남아 있고 해당 스토리지 요금이 계속 발생합니다.  | 

## 노트북 편집기 작업
<a name="emr-managed-notebooks-editor"></a>

EMR 노트북을 사용하면 Jupyter 또는 JupyterLab 노트북을 콘솔에서 직접 시작할 수 있다는 이점이 있습니다.

EMR Notebooks를 사용할 경우 Amazon EMR 콘솔에서 액세스하는 노트북 편집기는 친숙한 오픈 소스 Jupyter Notebook 편집기 또는 JupyterLab입니다. Amazon EMR 콘솔 내부에서 노트북 편집기가 시작되므로 Amazon EMR 클러스터에서 호스팅되는 노트북을 사용할 때보다 효율적으로 액세스를 구성할 수 있습니다. SSH, 보안 그룹 규칙 및 프록시 구성을 통해 웹에 액세스할 수 있도록 사용자의 클라이언트를 구성할 필요가 없습니다. 사용자에게 충분한 권한이 있으면 Amazon EMR 콘솔에서 노트북 편집기를 열 수 있습니다.

Amazon EMR에서는 한 번에 한 사용자만 EMR 노트북을 열 수 있습니다. 이미 열려 있는 EMR 노트북을 다른 사용자가 열려고 하면 오류가 발생합니다.

**중요**  
Amazon EMR은 각 노트북 편집기 세션에 대해 사전 서명된 URL을 생성합니다. 이 URL은 단기간에만 유효합니다. 노트북 에디터 URL을 공유하지 않도록 하세요. 공유할 경우 URL 수신자가 해당 권한을 사용하여 URL 수명 동안 노트북을 편집하고 노트북 코드를 실행할 수 있기 때문에 보안 위험이 발생합니다. 다른 사용자가 노트북에 액세스해야 하는 경우, 권한 정책을 통해 사용자에게 권한을 제공하고 EMR Notebooks의 서비스 역할이 Amazon S3 위치에 액세스할 수 있는지 확인합니다. 자세한 내용은 [EMR Notebooks 보안 및 액세스 제어](emr-managed-notebooks-security.md) 및 [EMR Notebooks의 서비스 역할](emr-managed-notebooks-service-role.md) 섹션을 참조하세요.

**EMR 노트북의 노트북 편집기를 여는 방법**

1. 상태가 **준비** **상태**이거나 **대기 중**인 노트북을 **노트북** 목록에서 선택합니다.

1. **Open in JupyterLab(JupyterLab에서 열기)** 또는 **Open in Jupyter(Jupyter에서 열기)**를 선택합니다.

   JupyterLab 또는 Jupyter Notebook 편집기에 새 브라우저 탭이 열립니다.

1. **커널** 메뉴에서 **Change kernel(커널 변경)**을 선택한 후 프로그래밍 언어에 맞는 커널을 선택합니다.

   이제 노트북 편집기에서 코드를 작성하고 실행할 수 있습니다.

### 노트북 콘텐츠 저장
<a name="emr-managed-notebooks-saving"></a>

노트북 편집기에서 작업할 때 노트북 셀 및 출력의 내용이 주기적으로 Amazon S3의 노트북 파일에 자동 저장됩니다. 마지막으로 셀을 편집한 후 변경되지 않은 노트북은 편집기에서 노트북 이름 옆에 **(autosaved)(자동 저장)**가 표시됩니다. 변경 사항이 아직 저장되지 않았으면 **저장되지 않은 변경 사항**이 나타납니다.

노트북을 수동으로 저장할 수 있습니다. **파일** 메뉴에서 **저장 및 체크포인트**를 선택하거나 Ctrl\$1S를 누릅니다. 그러면 Amazon S3의 노트북 폴더 내 **체크포인트** 폴더에 `NotebookName.ipynb` 파일이 생성됩니다. 예를 들어 `s3://amzn-s3-demo-bucket/MyNotebookFolder/NotebookID/checkpoints/NotebookName.ipynb`입니다. 최신 체크포인트 파일만 이 위치에 저장됩니다.

## 클러스터 변경
<a name="emr-managed-notebooks-changing-clusters"></a>

노트북 자체의 내용을 변경하지 않고 EMR 노트북이 연결된 클러스터를 변경할 수 있습니다. **중지됨** 상태의 노트북만 클러스터를 변경할 수 있습니다.

**EMR 노트북의 클러스터를 변경하는 방법**

1. 변경할 노트북이 실행 중이면 **노트북** 목록에서 해당 노트북을 선택한 후 **중지**를 선택합니다.

1. 노트북 상태가 **중지됨**이면 **노트북** 목록에서 노트북을 선택한 후 **세부 정보 보기**를 선택합니다.

1. **Change cluster(클러스터 변경)**를 변경합니다.

1. 노트북을 연결할 활성 클러스터에서 Hadoop, Spark 및 Livy를 실행 중인 경우 기본값을 그대로 두고 목록에서 클러스터를 선택합니다. 요구 사항에 맞는 클러스터만 나열됩니다.

   —또는—

   **Create a cluster(클러스터 생성)**를 선택한 후 클러스터 옵션을 선택합니다. 자세한 내용은 [클러스터 요구 사항](emr-managed-notebooks-considerations.md#considerations-limitations) 단원을 참조하십시오.

1. **보안 그룹**의 옵션을 선택한 후 **Change cluster and start notebook(클러스터 변경 및 노트북 시작)**을 선택합니다.

## 노트북 및 노트북 파일 삭제
<a name="emr-managed-notebooks-deleting"></a>

Amazon EMR 콘솔을 사용하여 EMR 노트북을 삭제할 때 사용 가능한 노트북 목록에서 노트북을 삭제합니다. 하지만 노트북 파일은 Amazon S3에 남아 있고 스토리지 요금이 계속 발생합니다.

**노트북을 삭제하고 연결된 파일을 제거하려면**

1. [https://console.aws.amazon.com/elasticmapreduce/](https://console.aws.amazon.com/elasticmapreduce/)에서 Amazon EMR 콘솔을 엽니다.

1. **노트북**을 선택하고 목록에서 노트북을 선택한 후 **세부 정보 보기**를 선택합니다.

1. **Notebook location(노트북 위치)** 옆의 폴더 아이콘을 선택하고 **URL**을 복사합니다. URL 패턴은 `s3://MyNotebookLocationPath/NotebookID/`입니다.

1. **삭제**를 선택합니다.

   목록에서 노트북이 제거되고 노트북 세부 정보가 더 이상 보이지 않습니다.

1. Amazon Simple Storage Service 사용 설명서에서 [S3 버킷에서 폴더를 삭제하려면 어떻게 해야 하나요?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-folders.html)의 지침을 따릅니다. 3단계의 버킷과 폴더로 이동합니다.

   —또는—

   가 AWS CLI 설치된 경우 명령 프롬프트를 열고이 단락 끝에 명령을 입력합니다. Amazon S3 위치를 위에서 복사한 위치로 바꿉니다. AWS CLI 가 Amazon S3 위치를 삭제할 권한이 있는 사용자의 액세스 키로 구성되어 있는지 확인합니다. 자세한 내용은 *AWS Command Line Interface 사용 설명서*의 [AWS CLI구성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cli-chap-getting-started.html)을 참조하세요.

   ```
   aws s3 rm s3://MyNotebookLocationPath/NotebookID
   ```

## 노트북 파일 공유
<a name="emr-managed-notebooks-file-sharing"></a>

각 EMR 노트북은 `NotebookName.ipynb` 파일로 Amazon S3에 저장됩니다. 노트북 파일이 EMR Notebooks가 기반한 Jupyter Notebook의 동일한 버전과 호환되면 노트북을 EMR 노트북으로 열 수 있습니다.

다른 사용자의 노트북 파일을 여는 가장 쉬운 방법은 다른 사용자의\$1.ipynb 파일을 로컬 파일 시스템에 저장한 다음 Jupyter 및 JupyterLab 편집기의 업로드 기능을 사용하는 것입니다.

이 절차를 사용하여 다른 사람이 공유한 EMR 노트북(Jupyter 커뮤니티에 공유된 노트북)을 사용하거나, 아직 노트북 파일을 가지고 있을 때 콘솔에서 삭제한 노트북을 복원할 수 있습니다.

**다른 노트북 파일을 EMR 노트북의 기반으로 사용하는 방법**

1. 계속하기 전에 작업에 사용할 노트북의 노트북 편집기를 닫고, EMR 노트북일 경우 중지합니다.

1. EMR 노트북을 생성하고 이름을 입력합니다. 노트북에 대해 입력한 이름은 바꿀 파일의 이름이 됩니다. 새 파일 이름은 이 파일 이름과 정확히 일치해야 합니다.

1. 노트북에 대해 선택한 Amazon S3의 위치를 적어 둡니다. 바꾼 파일은 `s3://MyNotebookLocation/NotebookID/MyNotebookName.ipynb` 패턴과 같이 경로와 파일 이름을 가진 폴더에 있습니다.

1. 노트북을 중지합니다.

1. Amazon S3 위치에 있는 이전 노트북 파일을 새 노트북 파일로 바꿉니다. 이때 똑같은 이름을 사용해야 합니다.

   Amazon S3에 대한 다음 AWS CLI 명령은 EMR 노트북에 `SharedNotebook.ipynb` 대해 라는 로컬 시스템에 저장된 파일을 **MyNotebook**, ID로 바꾸`e-12A3BCDEFJHIJKLMNO45PQRST`고 Amazon S3에 `amzn-s3-demo-bucket/MyNotebooksFolder` 지정된 로 생성합니다. Amazon S3 콘솔을 사용하는 파일 복사 및 대치에 대한 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*에서[ 객체 업로드, 다운로드 및 관리](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-download-objects.html)를 참조하세요.

   ```
   aws s3 cp SharedNotebook.ipynb s3://amzn-s3-demo-bucket/MyNotebooksFolder/-12A3BCDEFJHIJKLMNO45PQRST/MyNotebook.ipynb
   ```

# EMR Notebooks에 대한 프로그래밍 명령 샘플
<a name="emr-managed-notebooks-headless"></a>

## 개요
<a name="emr-managed-notebooks-headless-overview"></a>

스크립트 또는 명령줄에서 실행 API를 사용하여 EMR Notebooks를 실행할 수 있습니다. AWS 콘솔 외부에서 EMR 노트북 실행을 시작, 중지, 나열 및 설명할 때 EMR 노트북을 프로그래밍 방식으로 제어할 수 있습니다. 파라미터화된 노트북 셀이 있는 노트북에 다양한 파라미터 값을 전달할 수 있습니다. 이렇게 하면 새 파라미터 값 세트마다 노트북 사본을 만들 필요가 없습니다. 자세한 내용은 [Amazon EMR API 작업](https://docs.aws.amazon.com/emr/latest/APIReference/API_Operations.html)을 참조하세요.

Amazon CloudWatch 이벤트 및 AWS Lambda를 사용하여 EMR 노트북 실행을 예약하거나 배치 처리할 수 있습니다. 자세한 내용은 [ Amazon CloudWatch Events AWS Lambda 에서 사용을](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudwatchevents.html) 참조하세요.

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.

## 프로그래밍 실행을 위한 역할 권한
<a name="emr-managed-notebooks-headless-permissions"></a>

EMR Notebooks에서 프로그래밍 방식 실행을 사용하려면 다음 정책으로 사용자 권한을 구성해야 합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowExecutionActions",
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:StartNotebookExecution",
        "elasticmapreduce:DescribeNotebookExecution",
        "elasticmapreduce:ListNotebookExecutions"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "AllowPassingServiceRole",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/EMR_Notebooks_DefaultRole"
      ]
    }
  ]
}
```

------

EMR Notebooks 클러스터에서 프로그래밍 방식으로 EMR Notebooks를 실행할 때는 다음과 같은 추가 권한을 추가해야 합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowRetrievingManagedEndpointCredentials",
      "Effect": "Allow",
      "Action": [
        "emr-containers:GetManagedEndpointSessionCredentials"
      ],
      "Resource": [
        "arn:aws:emr-containers:*:123456789012:/virtualclusters/virtual-cluster-id/endpoints/managed-endpoint-id"
      ],
      "Condition": {
        "StringEquals": {
          "emr-containers:ExecutionRoleArn": [
            "arn:aws:iam::123456789012:role/emr-on-eks-execution-role"
          ]
        }
      }
    },
    {
      "Sid": "AllowDescribingManagedEndpoint",
      "Effect": "Allow",
      "Action": [
        "emr-containers:DescribeManagedEndpoint"
      ],
      "Resource": [
        "arn:aws:emr-containers:*:123456789012:/virtualclusters/virtual-cluster-id/endpoints/managed-endpoint-id"
      ]
    }
  ]
}
```

------

## 프로그래밍 방식 실행의 제한 사항
<a name="emr-managed-notebooks-headless-limit"></a>
+ 계정 AWS 리전 당 최대 100개의 동시 실행이 지원됩니다.
+ 30일 넘게 실행되면 실행이 종료됩니다.
+ Amazon EMR Serverless 대화형 애플리케이션에서는 노트북의 프로그래밍 방식 실행을 지원하지 않습니다.

## 프로그래밍 방식의 EMR 노트북 실행 예제
<a name="emr-managed-notebooks-headless-examples"></a>

다음 섹션에서는 AWS CLI Boto3 SDK(Python) 및 Ruby를 사용한 프로그래밍 방식의 EMR 노트북 실행의 몇 가지 예를 제공합니다.
+ [EMR Studio의 노트북 CLI 명령 샘플](emr-managed-notebooks-headless-cli.md)
+ [EMR Notebook에 대한 Python 샘플](emr-managed-notebooks-headless-python.md)
+ [EMR Notebook에 대한 Ruby 샘플](emr-managed-notebooks-headless-ruby.md)

Apache Airflow 또는 Apache Airflow용 Amazon 관리형 워크플로(MWAA)와 같은 오케스트레이션 도구를 사용하여 예약된 워크플로의 일부로 파라미터화된 노트북을 실행할 수 있습니다. 자세한 내용은 *AWS 빅 데이터 블로그*에서 [Orchestrating analytics jobs on EMR Notebooks using MWAA](https://aws.amazon.com/blogs/big-data/orchestrating-analytics-jobs-on-amazon-emr-notebooks-using-amazon-mwaa/)를 참조하세요.

# EMR Studio의 노트북 CLI 명령 샘플
<a name="emr-managed-notebooks-headless-cli"></a>

이 주제에서는 EMR Notebook에 대한 CLI 명령 샘플을 보여줍니다. 이 예제에서는 EMR Notebooks 콘솔의 데모 노트북을 사용합니다. 노트북을 찾으려면 홈 디렉터리에 상대적인 파일 경로를 사용합니다. 이 예제에서는 두 개의 노트북 파일(`demo_pyspark.ipynb` 및 `my_folder/python3.ipynb`)을 실행할 수 있습니다.

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.

`demo_pyspark.ipynb` 파일의 상대 경로는 아래와 같이 `demo_pyspark.ipynb`입니다.

![\[Jupyter notebook interface showing a file explorer and code editor with PySpark content.\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/images/notebook_exe_folder_structure_1.png)


`python3.ipynb`의 상대 경로는 아래와 같이 `my_folder/python3.ipynb`입니다.

![\[File explorer showing python3.ipynb in my_folder, and Jupyter notebook interface with code.\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/images/notebook_exe_folder_structure_2.png)


Amazon EMR API `NotebookExecution` 작업에 대한 자세한 내용은 [Amazon EMR API 작업](https://docs.aws.amazon.com/emr/latest/APIReference/API_Operations.html)을 참조하세요.

## 노트북 실행
<a name="emr-managed-notebooks-api-actions"></a>

다음 예제에서 볼 수 있듯이 AWS CLI 를 사용하여 `start-notebook-execution` 작업과 함께 노트북을 실행할 수 있습니다.

**Example - Amazon EMR(Amazon EC2에서 실행) 클러스터를 사용하는 EMR Studio Workspace에서 EMR 노트북 실행**  

```
aws emr --region us-east-1 \
start-notebook-execution \
--editor-id e-ABCDEFG123456 \
--notebook-params '{"input_param":"my-value", "good_superhero":["superman", "batman"]}' \
--relative-path test.ipynb \
--notebook-execution-name my-execution \
--execution-engine '{"Id" : "j-1234ABCD123"}' \
--service-role EMR_Notebooks_DefaultRole 
 
{
    "NotebookExecutionId": "ex-ABCDEFGHIJ1234ABCD"
}
```

**Example - EMR Notebooks 클러스터를 사용하여 EMR Studio Workspace에서 EMR 노트북 실행**  

```
aws emr start-notebook-execution \
    --region us-east-1 \
    --service-role EMR_Notebooks_DefaultRole \
    --environment-variables '{"KERNEL_EXTRA_SPARK_OPTS": "--conf spark.executor.instances=1", "KERNEL_LAUNCH_TIMEOUT": "350"}' \
    --output-notebook-format HTML \
    --execution-engine Id=arn:aws:emr-containers:us-west-2:account-id:/virtualclusters/ABCDEFG/endpoints/ABCDEF,Type=EMR_ON_EKS,ExecutionRoleArn=arn:aws:iam::account-id:role/execution-role \
    --editor-id e-ABCDEFG \
    --relative-path EMRonEKS-spark_python.ipynb
```

**Example - Amazon S3 위치를 지정하는 EMR 노트북 실행**  

```
aws emr start-notebook-execution \
    --region us-east-1 \
    --notebook-execution-name my-execution-on-emr-on-eks-cluster \
    --service-role EMR_Notebooks_DefaultRole \
    --environment-variables '{"KERNEL_EXTRA_SPARK_OPTS": "--conf spark.executor.instances=1", "KERNEL_LAUNCH_TIMEOUT": "350"}' \
    --output-notebook-format HTML \
    --execution-engine Id=arn:aws:emr-containers:us-west-2:account-id:/virtualclusters/ABCDEF/endpoints/ABCDEF,Type=EMR_ON_EKS,ExecutionRoleArn=arn:aws:iam::account-id:role/execution-role \
    --notebook-s3-location '{"Bucket": "amzn-s3-demo-bucket","Key": "s3-prefix-to-notebook-location/EMRonEKS-spark_python.ipynb"}' \
    --output-notebook-s3-location '{"Bucket": "amzn-s3-demo-bucket","Key": "s3-prefix-for-storing-output-notebook"}'
```

## 노트북 출력
<a name="emr-managed-notebooks-headless-cli-output"></a>

 다음은 샘플 노트북의 출력입니다. 셀 3에는 새로 삽입된 파라미터 값이 표시됩니다.

![\[Jupyter notebook cells showing Python code and output for parameter injection and manipulation.\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/images/HelloWorld_notebook.png)


## 노트북 설명
<a name="emr-managed-notebooks-headless-cli-describe"></a>

`describe-notebook-execution` 작업을 사용하여 특정 노트북 실행에 대한 정보에 액세스할 수 있습니다.

```
aws emr --region us-east-1 \
describe-notebook-execution --notebook-execution-id ex-IZWZZVR9DKQ9WQ7VZWXJZR29UGHTE
 
{
    "NotebookExecution": {
        "NotebookExecutionId": "ex-IZWZZVR9DKQ9WQ7VZWXJZR29UGHTE",
        "EditorId": "e-BKTM2DIHXBEDRU44ANWRKIU8N",
        "ExecutionEngine": {
            "Id": "j-2QMOV6JAX1TS2",
            "Type": "EMR",
            "MasterInstanceSecurityGroupId": "sg-05ce12e58cd4f715e"
        },
        "NotebookExecutionName": "my-execution",
        "NotebookParams": "{\"input_param\":\"my-value\", \"good_superhero\":[\"superman\", \"batman\"]}",
        "Status": "FINISHED",
        "StartTime": 1593490857.009,
        "Arn": "arn:aws:elasticmapreduce:us-east-1:123456789012:notebook-execution/ex-IZWZZVR9DKQ9WQ7VZWXJZR29UGHTE",
        "LastStateChangeReason": "Execution is finished for cluster j-2QMOV6JAX1TS2.",
        "NotebookInstanceSecurityGroupId": "sg-0683b0a39966d4a6a",
        "Tags": []
    }
}
```

## 노트북 중지
<a name="emr-managed-notebooks-headless-cli-stop"></a>

노트북에서 중지하려는 실행이 실행 중인 경우 `stop-notebook-execution` 명령을 사용하여 중지할 수 있습니다.

```
# stop a running execution
aws emr --region us-east-1 \
stop-notebook-execution --notebook-execution-id ex-IZWZX78UVPAATC8LHJR129B1RBN4T
 
 
# describe it
aws emr --region us-east-1 \
describe-notebook-execution --notebook-execution-id ex-IZWZX78UVPAATC8LHJR129B1RBN4T
 
{
    "NotebookExecution": {
        "NotebookExecutionId": "ex-IZWZX78UVPAATC8LHJR129B1RBN4T",
        "EditorId": "e-BKTM2DIHXBEDRU44ANWRKIU8N",
        "ExecutionEngine": {
            "Id": "j-2QMOV6JAX1TS2",
            "Type": "EMR"
        },
        "NotebookExecutionName": "my-execution",
        "NotebookParams": "{\"input_param\":\"my-value\", \"good_superhero\":[\"superman\", \"batman\"]}",
        "Status": "STOPPED",
        "StartTime": 1593490876.241,
        "Arn": "arn:aws:elasticmapreduce:us-east-1:123456789012:editor-execution/ex-IZWZX78UVPAATC8LHJR129B1RBN4T",
        "LastStateChangeReason": "Execution is stopped for cluster j-2QMOV6JAX1TS2. Internal error",
        "Tags": []
    }
}
```

## 시작 시간을 기준으로 노트북의 실행 나열
<a name="emr-managed-notebooks-headless-cli-list"></a>

`--from` 파라미터를 `list-notebook-executions`로 전달하여 시작 시간별로 노트북의 실행을 나열할 수 있습니다.

```
# filter by start time 
aws emr --region us-east-1 \ 
list-notebook-executions --from 1593400000.000
 
{
    "NotebookExecutions": [
        {
            "NotebookExecutionId": "ex-IZWZX78UVPAATC8LHJR129B1RBN4T",
            "EditorId": "e-BKTM2DIHXBEDRU44ANWRKIU8N",
            "NotebookExecutionName": "my-execution",
            "Status": "STOPPED",
            "StartTime": 1593490876.241
        },
        {
            "NotebookExecutionId": "ex-IZWZZVR9DKQ9WQ7VZWXJZR29UGHTE",
            "EditorId": "e-BKTM2DIHXBEDRU44ANWRKIU8N",
            "NotebookExecutionName": "my-execution",
            "Status": "RUNNING",
            "StartTime": 1593490857.009
        },
        {
            "NotebookExecutionId": "ex-IZWZYRS0M14L5V95WZ9OQ399SKMNW",
            "EditorId": "e-BKTM2DIHXBEDRU44ANWRKIU8N",
            "NotebookExecutionName": "my-execution",
            "Status": "STOPPED",
            "StartTime": 1593490292.995
        },
        {
            "NotebookExecutionId": "ex-IZX009ZK83IVY5E33VH8MDMELVK8K",
            "EditorId": "e-BKTM2DIHXBEDRU44ANWRKIU8N",
            "NotebookExecutionName": "my-execution",
            "Status": "FINISHED",
            "StartTime": 1593489834.765
        },
        {
            "NotebookExecutionId": "ex-IZWZXOZF88JWDF9J09GJ91R57VI0N",
            "EditorId": "e-BKTM2DIHXBEDRU44ANWRKIU8N",
            "NotebookExecutionName": "my-execution",
            "Status": "FAILED",
            "StartTime": 1593488934.688
        }
    ]
}
```

## 시작 시간 및 상태를 기준으로 노트북의 실행 나열
<a name="emr-managed-notebooks-headless-cli-list"></a>

`list-notebook-executions` 명령은 `--status` 파라미터를 사용하여 결과를 필터링할 수도 있습니다.

```
# filter by start time and status 
aws emr --region us-east-1 \                 
list-notebook-executions --from 1593400000.000 --status FINISHED
{
    "NotebookExecutions": [
        {
            "NotebookExecutionId": "ex-IZWZZVR9DKQ9WQ7VZWXJZR29UGHTE",
            "EditorId": "e-BKTM2DIHXBEDRU44ANWRKIU8N",
            "NotebookExecutionName": "my-execution",
            "Status": "FINISHED",
            "StartTime": 1593490857.009
        },
        {
            "NotebookExecutionId": "ex-IZX009ZK83IVY5E33VH8MDMELVK8K",
            "EditorId": "e-BKTM2DIHXBEDRU44ANWRKIU8N",
            "NotebookExecutionName": "my-execution",
            "Status": "FINISHED",
            "StartTime": 1593489834.765
        }
    ]
}
```

# EMR Notebook에 대한 Python 샘플
<a name="emr-managed-notebooks-headless-python"></a>

이 주제에는 샘플 명령 파일이 포함되어 있습니다. 코드 예제는 `demo.py`라고 하는 SDK for Python(Boto3) 파일입니다. 노트북 실행 API를 보여줍니다.

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.

Amazon EMR API `NotebookExecution` 작업에 대한 자세한 내용은 [Amazon EMR API 작업](https://docs.aws.amazon.com/emr/latest/APIReference/API_Operations.html)을 참조하세요.

```
import boto3,time

emr = boto3.client(
    'emr',
    region_name='us-west-1'
)     
     
start_resp = emr.start_notebook_execution(
    EditorId='e-40AC8ZO6EGGCPJ4DLO48KGGGI',
    RelativePath='boto3_demo.ipynb',
    ExecutionEngine={'Id':'j-1HYZS6JQKV11Q'},
    ServiceRole='EMR_Notebooks_DefaultRole'
)

execution_id = start_resp["NotebookExecutionId"]
print(execution_id)
print("\n")
     
describe_response = emr.describe_notebook_execution(NotebookExecutionId=execution_id)
     
print(describe_response)
print("\n")
     
list_response = emr.list_notebook_executions()
print("Existing notebook executions:\n")
for execution in list_response['NotebookExecutions']:
    print(execution)
    print("\n")  
     
print("Sleeping for 5 sec...")
time.sleep(5)
     
print("Stop execution " + execution_id)
emr.stop_notebook_execution(NotebookExecutionId=execution_id)
describe_response = emr.describe_notebook_execution(NotebookExecutionId=execution_id)
print(describe_response)
print("\n")
```

다음은 `demo.py` 실행의 출력입니다.

```
ex-IZX56YJDW1D29Q1PHR32WABU2SAPK
     
{'NotebookExecution': {'NotebookExecutionId': 'ex-IZX56YJDW1D29Q1PHR32WABU2SAPK', 'EditorId': 'e-40AC8ZO6EGGCPJ4DLO48KGGGI', 'ExecutionEngine': {'Id': 'j-1HYZS6JQKV11Q', 'Type': 'EMR'}, 'NotebookExecutionName': '', 'Status': 'STARTING', 'StartTime': datetime.datetime(2020, 8, 19, 0, 49, 19, 418000, tzinfo=tzlocal()), 'Arn': 'arn:aws:elasticmapreduce:us-west-1:123456789012:notebook-execution/ex-IZX56YJDW1D29Q1PHR32WABU2SAPK', 'LastStateChangeReason': 'Execution is starting for cluster j-1HYZS6JQKV11Q.', 'Tags': []}, 'ResponseMetadata': {'RequestId': '70f12c5f-1dda-45b7-adf6-964987d373b7', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '70f12c5f-1dda-45b7-adf6-964987d373b7', 'content-type': 'application/x-amz-json-1.1', 'content-length': '448', 'date': 'Wed, 19 Aug 2020 00:49:22 GMT'}, 'RetryAttempts': 0}}
     
Existing notebook executions:
     
{'NotebookExecutionId': 'ex-IZX56YJDW1D29Q1PHR32WABU2SAPK', 'EditorId': 'e-40AC8ZO6EGGCPJ4DLO48KGGGI', 'NotebookExecutionName': '', 'Status': 'STARTING', 'StartTime': datetime.datetime(2020, 8, 19, 0, 49, 19, 418000, tzinfo=tzlocal())}
     
     
{'NotebookExecutionId': 'ex-IZX5ABS5PR1E5AHMFYEMX3JJIORRB', 'EditorId': 'e-40AC8ZO6EGGCPJ4DLO48KGGGI', 'NotebookExecutionName': '', 'Status': 'RUNNING', 'StartTime': datetime.datetime(2020, 8, 19, 0, 48, 36, 373000, tzinfo=tzlocal())}
     
     
{'NotebookExecutionId': 'ex-IZX5GLVXIU1HNI8BWVW057F6MF4VE', 'EditorId': 'e-40AC8ZO6EGGCPJ4DLO48KGGGI', 'NotebookExecutionName': '', 'Status': 'FINISHED', 'StartTime': datetime.datetime(2020, 8, 19, 0, 45, 14, 646000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 8, 19, 0, 46, 26, 543000, tzinfo=tzlocal())}
     
     
{'NotebookExecutionId': 'ex-IZX5CV8YDUO8JAIWMXN2VH32RUIT1', 'EditorId': 'e-40AC8ZO6EGGCPJ4DLO48KGGGI', 'NotebookExecutionName': '', 'Status': 'FINISHED', 'StartTime': datetime.datetime(2020, 8, 19, 0, 43, 5, 807000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 8, 19, 0, 44, 31, 632000, tzinfo=tzlocal())}
     
     
{'NotebookExecutionId': 'ex-IZX5AS0PPW55CEDEURZ9NSOWSUJZ6', 'EditorId': 'e-40AC8ZO6EGGCPJ4DLO48KGGGI', 'NotebookExecutionName': '', 'Status': 'FINISHED', 'StartTime': datetime.datetime(2020, 8, 19, 0, 42, 29, 265000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 8, 19, 0, 43, 48, 320000, tzinfo=tzlocal())}
     
     
{'NotebookExecutionId': 'ex-IZX57YF5Q53BKWLR4I5QZ14HJ7DRS', 'EditorId': 'e-40AC8ZO6EGGCPJ4DLO48KGGGI', 'NotebookExecutionName': '', 'Status': 'FINISHED', 'StartTime': datetime.datetime(2020, 8, 19, 0, 38, 37, 81000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 8, 19, 0, 40, 39, 646000, tzinfo=tzlocal())}
     
Sleeping for 5 sec...
Stop execution ex-IZX56YJDW1D29Q1PHR32WABU2SAPK
{'NotebookExecution': {'NotebookExecutionId': 'ex-IZX56YJDW1D29Q1PHR32WABU2SAPK', 'EditorId': 'e-40AC8ZO6EGGCPJ4DLO48KGGGI', 'ExecutionEngine': {'Id': 'j-1HYZS6JQKV11Q', 'Type': 'EMR'}, 'NotebookExecutionName': '', 'Status': 'STOPPING', 'StartTime': datetime.datetime(2020, 8, 19, 0, 49, 19, 418000, tzinfo=tzlocal()), 'Arn': 'arn:aws:elasticmapreduce:us-west-1:123456789012:notebook-execution/ex-IZX56YJDW1D29Q1PHR32WABU2SAPK', 'LastStateChangeReason': 'Execution is being stopped for cluster j-1HYZS6JQKV11Q.', 'Tags': []}, 'ResponseMetadata': {'RequestId': '2a77ef73-c1c6-467c-a1d1-7204ab2f6a53', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '2a77ef73-c1c6-467c-a1d1-7204ab2f6a53', 'content-type': 'application/x-amz-json-1.1', 'content-length': '453', 'date': 'Wed, 19 Aug 2020 00:49:30 GMT'}, 'RetryAttempts': 0}}
```

# EMR Notebook에 대한 Ruby 샘플
<a name="emr-managed-notebooks-headless-ruby"></a>

이 주제에는 노트북 기능을 보여주는 Ruby 샘플이 포함되어 있습니다.

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.

다음 Ruby 코드 샘플에서는 노트북 실행 API 사용을 보여줍니다.

```
# prepare an Amazon EMR client

emr = Aws::EMR::Client.new(
  region: 'us-east-1',
  access_key_id: 'AKIA...JKPKA',
  secret_access_key: 'rLMeu...vU0OLrAC1',
)
```

## 노트북 실행 시작 및 실행 ID 가져오기
<a name="emr-managed-notebooks-headless-ruby-startretrieve"></a>

이 예제에서 Amazon S3 편집기 및 EMR 노트북은 `s3://amzn-s3-demo-bucket/notebooks/e-EA8VGAA429FEQTC8HC9ZHWISK/test.ipynb`입니다.

Amazon EMR API `NotebookExecution` 작업에 대한 자세한 내용은 [Amazon EMR API 작업](https://docs.aws.amazon.com/emr/latest/APIReference/API_Operations.html)을 참조하세요.

```
start_response = emr.start_notebook_execution({
    editor_id: "e-EA8VGAA429FEQTC8HC9ZHWISK",
    relative_path: "test.ipynb",
    
    execution_engine: {id: "j-3U82I95AMALGE"},
    
    service_role: "EMR_Notebooks_DefaultRole",
})


notebook_execution_id = start_resp.notebook_execution_id
```

## 노트북 실행 설명 및 세부 정보 인쇄
<a name="emr-managed-notebooks-headless-ruby-describeprint"></a>

```
describe_resp = emr.describe_notebook_execution({
    notebook_execution_id: notebook_execution_id
})
puts describe_resp.notebook_execution
```

위 명령의 출력은 다음과 같습니다.

```
{
:notebook_execution_id=>"ex-IZX3VTVZWVWPP27KUB90BZ7V9IEDG", 
:editor_id=>"e-EA8VGAA429FEQTC8HC9ZHWISK",
:execution_engine=>{:id=>"j-3U82I95AMALGE", :type=>"EMR", :master_instance_security_group_id=>nil}, 
:notebook_execution_name=>"", 
:notebook_params=>nil, 
:status=>"STARTING", 
:start_time=>2020-07-23 15:07:07 -0700, 
:end_time=>nil, 
:arn=>"arn:aws:elasticmapreduce:us-east-1:123456789012:notebook-execution/ex-IZX3VTVZWVWPP27KUB90BZ7V9IEDG", 
:output_notebook_uri=>nil, 
:last_state_change_reason=>"Execution is starting for cluster j-3U82I95AMALGE.", :notebook_instance_security_group_id=>nil, 
:tags=>[]
}
```

## 노트북 필터
<a name="emr-managed-notebooks-headless-ruby-filters"></a>

```
"EditorId": "e-XXXX",           [Optional]
"From" : "1593400000.000",    [Optional]
"To" :
```

### 노트북 실행 중지
<a name="emr-managed-notebooks-headless-ruby-stop"></a>

```
stop_resp = emr.stop_notebook_execution({
    notebook_execution_id: notebook_execution_id
})
```

# 사용자 위장을 활성화하여 Spark 사용자 및 작업 활동 모니터링
<a name="emr-managed-notebooks-spark-monitor"></a>

EMR Notebooks에서는 Spark 클러스터에서 사용자 위장을 구성할 수 있습니다. 이 기능은 노트북 편집기 안에서 시작된 작업 활동을 추적하는 데 도움이 됩니다. 또한 EMR Notebooks에는 노트북 편집기에서 쿼리 출력과 함께 Spark 작업 세부 정보를 볼 수 있는 기본 제공 Jupyter Notebook 위젯이 있습니다. 위젯은 기본적으로 사용 가능하며 특별한 구성이 필요 없습니다. 하지만 기록 서버를 보려면 프라이머리 노드에서 호스팅되는 Amazon EMR 웹 인터페이스를 보도록 클라이언트를 구성해야 합니다.

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.

## Spark 사용자 위장 설정
<a name="emr-managed-notebooks-user-impersonation"></a>

기본적으로 노트북 편집기를 사용하여 사용자가 제출하는 Spark 작업은 불분명한 `livy` 사용자 자격 증명에서 시작되는 것처럼 보입니다. 코드를 대신 실행한 사용자 자격 증명과 이 작업이 연결되도록 클러스터의 사용자 위장을 구성할 수 있습니다. 노트북에서 코드를 실행하는 사용자 자격 증명마다 프라이머리 노드의 HDFS 사용자 디렉터리가 생성됩니다. 예를 들어, `NbUser1` 사용자가 노트북 편집기에서 코드를 실행하면 프라이머리 노드에 연결하여 `hadoop fs -ls /user`가 `/user/user_NbUser1` 디렉터리를 표시하는 것을 볼 수 있습니다.

`core-site` 및 `livy-conf` 구성 분류에서 속성을 설정하여 이 기능을 활성화합니다. Amazon EMR에서 노트북과 함께 클러스터를 생성하도록 할 때는 이 기능이 기본적으로 사용 가능하지 않습니다. 애플리케이션을 사용자 지정하기 위해 구성 분류를 사용하는 방법에 대한 자세한 내용은 *Amazon EMR 릴리스 안내서*에서 [애플리케이션 구성](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html)을 참조하세요.

다음 구성 분류와 값을 사용하여 EMR Notebooks의 사용자 위장을 활성화합니다.

```
[
    {
        "Classification": "core-site",
        "Properties": {
          "hadoop.proxyuser.livy.groups": "*",
          "hadoop.proxyuser.livy.hosts": "*"
        }
    },
    {
        "Classification": "livy-conf",
        "Properties": {
          "livy.impersonation.enabled": "true"
        }
    }
]
```

## Spark 작업 모니터링 위젯 사용
<a name="emr-managed-notebooks-monitoring-widget"></a>

EMR 클러스터에 대해 Spark 작업을 실행하는 코드를 노트북 편집기에서 실행할 때 Spark 작업 모니터링을 위한 Jupyter Notebook 위젯이 출력에 포함됩니다. 위젯은 작업 세부 정보 및 Spark 기록 서버 페이지와 Hadoop 작업 기록 페이지로 연결되는 유용한 링크와 실패한 작업에 대한 Amazon S3의 작업 로그로 연결되는 편리한 링크를 제공합니다.

클러스터 프라이머리 노드의 기록 서버 페이지를 보려면 SSH 클라이언트와 프록시를 적절하게 설정해야 합니다. 자세한 내용은 [Amazon EMR 클러스터에 호스팅된 웹 인터페이스 보기](emr-web-interfaces.md) 단원을 참조하십시오. Amazon S3에 있는 로그를 보려면 클러스터 로깅이 활성화되어 있어야 합니다. 이 설정은 새 클러스터의 기본값입니다. 자세한 내용은 [Amazon S3에 아카이브된 로그 파일 보기](emr-manage-view-web-log-files.md#emr-manage-view-web-log-files-s3) 단원을 참조하십시오.

다음은 Spark 작업 모니터링의 예제입니다.

![\[alt_text\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/images/spark_monitoring_job_progress.png)


# EMR Notebooks 보안 및 액세스 제어
<a name="emr-managed-notebooks-security"></a>

EMR Notebooks의 보안 태세를 사용자 지정할 수 있도록 몇 가지 기능이 제공됩니다. 권한이 있는 사용자만 EMR 노트북에 액세스할 수 있고 노트북으로 작업하며 노트북 편집기를 사용하여 클러스터에 대해 코드를 실행할 수 있습니다. 이 기능은 Amazon EMR 및 Amazon EMR 클러스터에 사용할 수 있는 보안 기능과 함께 작동합니다. 자세한 내용은 [Amazon EMR의 보안](emr-security.md) 단원을 참조하십시오.
+  AWS Identity and Access Management 정책 설명을 노트북 태그와 함께 사용하여 액세스를 제한할 수 있습니다. 자세한 내용은 [Amazon EMR과 IAM의 작동 방식](security_iam_service-with-iam.md) 및 [EMR Notebooks에 대한 자격 증명 기반 정책 명령문 예제](emr-fine-grained-cluster-access.md#emr-managed-notebooks-tags-examples) 섹션을 참조하세요.
+ Amazon EC2 보안 그룹은 클러스터의 프라이머리 인스턴스와 노트북 편집기 사이의 네트워크 트래픽을 제어하는 가상 방화벽 역할을 합니다. 기본값을 사용하거나 이 보안 그룹을 사용자 지정할 수 있습니다. 자세한 내용은 [EMR Notebooks에 EC2 보안 그룹 지정](emr-managed-notebooks-security-groups.md) 단원을 참조하십시오.
+ 다른 AWS 서비스와 상호 작용할 때 EMR 노트북이 갖는 권한을 결정하는 AWS 서비스 역할을 지정합니다. 자세한 내용은 [EMR Notebooks의 서비스 역할](emr-managed-notebooks-service-role.md) 단원을 참조하십시오.

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.

# EMR Studio에서 커널과 라이브러리 설치 및 사용
<a name="emr-managed-notebooks-installing-libraries-and-kernels"></a>

각 EMR 노트북에는 사전 설치된 라이브러리 및 커널 세트가 함께 제공됩니다. 커널과 라이브러리가 위치하고 있는 리포지토리에 클러스터가 액세스할 수 있는 경우 EMR 클러스터에 추가 라이브러리와 커널을 설치할 수 있습니다. 예를 들어, 프라이빗 서브넷에 있는 클러스터의 경우 NAT(네트워크 주소 변환)를 구성하고 클러스터가 퍼블릭 PyPI 리포지토리에 액세스하여 라이브러리를 설치할 수 있도록 경로를 제공해야 합니다. 다양한 네트워크 구성에서 외부 액세스를 구성하는 방법에 대한 자세한 내용은 *Amazon VPC 사용 설명서*에서 [시나리오 및 예제](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenarios.html)를 참조하세요.

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.<a name="emr-managed-notebooks-serverless"></a>

EMR Serverless 애플리케이션에는 다음과 같이 Python 및 PySpark용으로 사전 설치된 라이브러리가 함께 제공됩니다.
+ **Python 라이브러리** – ggplot, matplotlib, numpy, pandas, plotly, bokeh, scikit-learn, scipy, scipy 
+ **PySpark 라이브러리** – ggplot, matplotlib, numpy, pandas, plotly, bokeh, scikit-learn, scipy, scipy 

## 클러스터 프라이머리 노드에 커널 및 Python 라이브러리 설치
<a name="emr-managed-notebooks-cluster-kernel"></a>

6.0.0을 제외하고 Amazon EMR 릴리스 버전 5.30.0 이상을 사용하여 클러스터의 프라이머리 노드에 추가 Python 라이브러리와 커널을 설치할 수 있습니다. 설치 후 이러한 커널과 라이브러리는 클러스터에 연결된 EMR 노트북을 실행하는 모든 사용자가 사용할 수 있습니다. 이 방법으로 설치한 Python 라이브러리는 프라이머리 노드에서 실행되는 프로세스에서만 사용할 수 있습니다. 이 라이브러리는 코어 또는 작업 노드에 설치되지 않으며 해당 노드에서 실행되는 실행기에서 사용할 수 없습니다.

**참고**  
Amazon EMR 버전 5.30.1, 5.31.0 및 6.1.0의 경우 클러스터의 프라이머리 노드에 커널과 라이브러리를 설치하려면 추가 단계를 수행해야 합니다.  
이 기능을 활성화하려면 다음을 수행합니다.  
EMR Notebooks의 서비스 역할에 연결된 권한 정책이 다음 작업을 허용하는지 확인합니다.  
`elasticmapreduce:ListSteps`  
자세한 내용은 [EMR Notebooks 서비스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-service-role.html)을 참조하세요.
 AWS CLI 를 사용하여 다음 예제와 같이 EMR 노트북을 설정하는 클러스터에서 단계를 실행합니다. `EMRNotebooksSetup` 단계 이름을 사용해야 합니다. *us-east-1*을 클러스터가 상주하는 리전으로 바꿉니다. 자세한 내용은 [AWS CLI를 사용하여 클러스터에 단계 추가](https://docs.aws.amazon.com/emr/latest/ManagementGuide/add-step-cli.html)를 참조하세요.  

   ```
   aws emr add-steps --cluster-id MyClusterID --steps Type=CUSTOM_JAR,Name=EMRNotebooksSetup,ActionOnFailure=CONTINUE,Jar=s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://awssupportdatasvcs.com/bootstrap-actions/EMRNotebooksSetup/emr-notebooks-setup.sh"]
   ```

프라이머리 노드의 `/emr/notebook-env/bin` 디렉터리에 `pip` 또는 `conda`를 사용하여 커널과 라이브러리를 설치할 수 있습니다.

**Example - Python 라이브러리 설치**  
Python3 커널의 경우 노트북 셀 내에서 `%pip` 매직을 명령으로 실행하여 Python 라이브러리를 설치합니다.  

```
%pip install pmdarima
```
업데이트된 패키지를 사용하려면 커널을 다시 시작해야 할 수 있습니다. [https://ipython.readthedocs.io/en/stable/interactive/magics.html#cellmagic-sh](https://ipython.readthedocs.io/en/stable/interactive/magics.html#cellmagic-sh) Spark 매직을 사용하여 `pip`를 간접 호출할 수도 있습니다.  

```
%%sh
/emr/notebook-env/bin/pip install -U matplotlib
/emr/notebook-env/bin/pip install -U pmdarima
```
PySpark 커널을 사용하는 경우 `pip` 명령을 사용하여 클러스터에 라이브러리를 설치하거나 PySpark 노트북 내에서 노트북 범위 라이브러리를 사용할 수 있습니다.  
터미널에서 클러스터에 `pip` 명령을 실행하려면 먼저 다음 명령에서 볼 수 있듯이 SSH를 사용하여 프라이머리 노드에 연결합니다.  

```
sudo pip3 install -U matplotlib
sudo pip3 install -U pmdarima
```
또는 노트북 범위 라이브러리를 사용할 수 있습니다. 노트북 범위 라이브러리의 경우 라이브러리 설치는 세션 범위로 제한되며 모든 Spark 실행기에서 실행됩니다. 자세한 내용은 [노트북 범위 라이브러리 사용](#emr-managed-notebooks-custom-libraries-limitations)을 참조하세요.  
PySpark 커널 내에 여러 Python 라이브러리를 패키징하려는 경우 격리된 Python 가상 환경을 생성할 수도 있습니다. 예제는 [Using Virtualenv](https://spark.apache.org/docs/latest/api/python/tutorial/python_packaging.html#using-virtualenv)를 참조하세요.  
세션에서 Python 가상 환경을 생성하려면 다음 예제와 같이 노트북의 첫 번째 셀에 있는 `%%configure` 매직 명령의 Spark 속성 `spark.yarn.dist.archives`를 사용합니다.  

```
%%configure -f
{
   "conf": {
   "spark.yarn.appMasterEnv.PYSPARK_PYTHON":"./environment/bin/python",
   "spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON":"./environment/bin/python",
   "spark.yarn.dist.archives":"s3://amzn-s3-demo-bucket/prefix/my_pyspark_venv.tar.gz#environment",
   "spark.submit.deployMode":"cluster"
   }
}
```
마찬가지로 Spark 실행기 환경을 생성할 수 있습니다.  

```
%%configure -f
{
   "conf": {
   "spark.yarn.appMasterEnv.PYSPARK_PYTHON":"./environment/bin/python",
   "spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON":"./environment/bin/python",
   "spark.executorEnv.PYSPARK_PYTHON":"./environment/bin/python",
   "spark.yarn.dist.archives":"s3://amzn-s3-demo-bucket/prefix/my_pyspark_venv.tar.gz#environment",
   "spark.submit.deployMode":"cluster"
   }
}
```
`conda`를 사용하여 Python 라이브러리를 설치할 수도 있습니다. sudo 액세스 권한이 없어도 `conda`를 사용할 수 있습니다. SSH를 사용하여 프라이머리 노드에 연결한 다음, 터미널에서 `conda`를 실행해야 합니다. 자세한 내용은 [SSH를 사용하여 Amazon EMR 클러스터 프라이머리 노드에 연결](emr-connect-master-node-ssh.md) 단원을 참조하십시오.

**Example - 커널 설치**  
다음 예제에서는 클러스터의 프라이머리 노드에 연결된 상태에서 터미널 명령을 사용하여 Kotlin 커널을 설치하는 방법을 보여줍니다.  

```
sudo /emr/notebook-env/bin/conda install kotlin-jupyter-kernel -c jetbrains
```
이 지침에서는 커널 종속 항목을 설치하지 않습니다. 커널에 타사 종속 항목이 있는 경우 노트북에서 커널을 사용하려면 먼저 추가 설정 단계를 수행해야 할 수 있습니다.

## 노트북 범위 라이브러리의 고려 사항 및 제한 사항
<a name="emr-managed-notebooks-custom-libraries-limitations"></a>

노트북 범위의 라이브러리를 사용할 때는 다음을 고려합니다.
+ 노트북 범위 라이브러리는 Amazon EMR 릴리스 5.26.0 이상으로 생성한 클러스터에서 사용할 수 있습니다.
+ 노트북 범위의 라이브러리는 PySpark 커널에서만 사용할 수 있습니다.
+ 모든 사용자는 노트북 셀 내에서 노트북 범위의 라이브러리를 추가로 설치할 수 있습니다. 이러한 라이브러리는 단일 노트북 세션 중에 해당 노트북 사용자만 사용할 수 있습니다. 다른 사용자가 동일한 라이브러리를 필요로 하거나 동일한 사용자가 다른 세션에서 동일한 라이브러리를 필요로 하는 경우 라이브러리를 다시 설치해야 합니다.
+ `install_pypi_package` API를 사용하여 설치된 라이브러리만 제거할 수 있습니다. 클러스터에 사전 설치된 라이브러리는 제거할 수 없습니다.
+ 다른 버전의 동일한 라이브러리가 클러스터 및 노트북 범위의 라이브러리로 설치된 경우 노트북 범위 라이브러리 버전이 클러스터 라이브러리 버전을 재정의합니다.

## 노트북 범위의 라이브러리 작업
<a name="emr-managed-notebooks-work-with-libraries"></a>

라이브러리를 설치하려면 Amazon EMR 클러스터에서 라이브러리가 있는 PyPI 리포지토리에 액세스할 수 있어야 합니다.

다음 예제는 PySpark 커널과 API를 사용하여 노트북 셀에서 라이브러리를 나열, 설치 및 제거하는 간단한 명령을 보여줍니다. 추가 예제는 AWS 빅 데이터 블로그[의 EMR Notebooks 게시물을 사용하여 실행 중인 클러스터에 Python 라이브러리 설치를](https://aws.amazon.com/blogs/big-data/install-python-libraries-on-a-running-cluster-with-emr-notebooks/) 참조하세요.

**Example - 현재 라이브러리 나열**  
다음 명령은 현재 Spark 노트북 세션에 사용 가능한 Python 패키지를 나열합니다. 클러스터 및 노트북 범위의 라이브러리에 설치된 라이브러리가 나열됩니다.  

```
sc.list_packages()
```

**Example - Celery 라이브러리 설치**  
다음 명령은 [Celery](https://pypi.org/project/celery/) 라이브러리를 노트북 범위의 라이브러리로 설치합니다.  

```
sc.install_pypi_package("celery")
```
라이브러리를 설치한 후, 다음 명령은 라이브러리가 Spark 드라이버 및 실행기에서 사용 가능한지 확인합니다.  

```
import celery
sc.range(1,10000,1,100).map(lambda x: celery.__version__).collect()
```

**Example - Arrow 라이브러리 설치, 버전 및 리포지토리 지정**  
다음 명령은 [Arrow](https://pypi.org/project/arrow/) 라이브러리를 노트북 범위의 라이브러리로 설치하고 라이브러리 버전 및 리포지토리 URL을 지정합니다.  

```
sc.install_pypi_package("arrow==0.14.0", "https://pypi.org/simple")
```

**Example - 라이브러리 제거**  
다음 명령은 Arrow 라이브러리를 제거하여 현재 세션에서 노트북 범위의 라이브러리를 제거합니다.  

```
sc.uninstall_package("arrow")
```

# Git 기반 리포지토리를 EMR Notebooks에 연결
<a name="emr-git-repo"></a>

Git 기반 리포지토리를 Amazon EMR Notebooks와 연결하여 버전 제어 환경에서 노트북을 저장할 수 있습니다. 노트북 1개에 연결할 수 있는 리포지토리는 최대 3개입니다. 지원되는 GIT 기반 서비스는 다음과 같습니다.
+ [AWS CodeCommit](https://aws.amazon.com/codecommit)
+ [GitHub](https://www.github.com)
+ [Bitbucket](https://bitbucket.org/)
+ [GitLab](https://about.gitlab.com/)

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.

GIT 기반 리포지토리를 노트북과 연결하면 다음과 같은 이점이 있습니다.
+ **버전 제어** - 코드 변경 사항을 버전 제어 시스템에 기록할 수 있으므로 변경 기록을 살펴보거나 일부 변경 사항을 선택적으로 되돌릴 수 있습니다.
+ **협업** - 다른 노트북에서 작업하는 동료가 원격 GIT 기반 리포지토리를 통해 코드를 공유할 수 있습니다. 이를 통해 원격 리포지토리에서 코드를 복제 또는 병합한 후 변경 사항을 원격 리포지토리로 다시 푸시할 수 있습니다.
+ **코드 재사용** - 데이터 분석 또는 기계 학습 기법을 보여주는 여러 Jupyter Notebook을 공개적으로 호스팅되는 리포지토리(예: GitHub)에서 사용할 수 있습니다. 노트북을 리포지토리와 연결하면 리포지토리에 저장된 Jupyter Notebook을 재사용할 수 있습니다.

EMR Notebooks에서 Git 기반 리포지토리를 사용하려면 Amazon EMR 콘솔에서 리포지토리를 리소스로 추가하고 인증에 필요한 리포지토리 보안 인증을 연결한 다음 리포지토리를 노트북과 연결합니다. Amazon EMR 콘솔에서 계정에 저장된 리포지토리 목록과 각 리포지토리에 대한 세부 정보를 확인할 수 있습니다. 노트북을 생성할 때 기존 GIT 기반 리포지토리를 노트북과 연결할 수 있습니다.

**Topics**
+ [EMR Notebook을 리포지토리와 통합하는 경우 사전 조건 및 고려 사항](emr-managed-notebooks-git-considerations.md)
+ [Amazon EMR에 Git 기반 리포지토리 추가](emr-git-repo-add.md)
+ [EMR Studio Workspace에서 Git 기반 리포지토리 업데이트 또는 삭제](emr-git-repo-delete.md)
+ [EMR Studio에서 Git 기반 리포지토리 연결 또는 연결 해제](emr-git-repo-link.md)
+ [EMR Studio에서 연결된 Git 리포지토리를 사용하여 새 노트북 생성](emr-git-repo-create-notebook.md)
+ [EMR Studio 노트북에서 Git 리포지토리 사용](emr-git-repo-open.md)

# EMR Notebook을 리포지토리와 통합하는 경우 사전 조건 및 고려 사항
<a name="emr-managed-notebooks-git-considerations"></a>

GIT 기반 리포지토리를 EMR Notebooks와 통합하려는 경우 커밋, 권한 및 호스팅에 관한 다음 모범 사례를 고려합니다.

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.

## AWS CodeCommit
<a name="code-commit-considerations"></a>

CodeCommit 리포지토리를 사용하는 경우 Git 보안 인증 및 HTTPS를 CodeCommit과 함께 사용해야 합니다. SSH 키 및 AWS CLI 자격 증명 헬퍼가 있는 HTTPS는 지원되지 않습니다. CodeCommit은 개인용 액세스 토큰(PAT)을 지원하지 않습니다. 자세한 내용은 [IAM 사용 설명서의 CodeCommit에서 IAM 사용: Git 자격 증명, SSH 키 및 AWS 액세스 키](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_ssh-keys.html)와 사용 설명서의 [Git 자격 증명을 사용한 HTTPS 사용자 설정을](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html) 참조하세요*AWS CodeCommit *. ** 

## 액세스 및 권한 고려 사항
<a name="access-considerations"></a>

리포지토리를 노트북과 연결하려면 먼저 클러스터, EMR Notebooks에 대한 IAM 역할 및 보안 그룹의 설정과 권한이 올바르게 지정되어 있는지 확인해야 합니다. [EMR Notebooks에 대해 비공개로 호스팅된 Git 리포지토리 구성](#emr-managed-notebooks-private-git-repo)의 지침에 따라 프라이빗 네트워크에서 호스팅하는 Git 기반 리포지토리를 구성할 수도 있습니다.
+ **클러스터 인터넷 액세스** - 시작된 네트워크 인터페이스에는 프라이빗 IP 주소만 있습니다. 따라서 노트북이 연결되는 클러스터는 NAT(네트워크 주소 변환) 게이트웨이를 사용하는 프라이빗 서브넷에 있거나, 가상 프라이빗 게이트웨이를 통해 인터넷에 액세스할 수 있어야 합니다. 자세한 내용은 [Amazon VPC 옵션](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-clusters-in-a-vpc.html)을 참조하세요.

  노트북 보안 그룹에는 노트북이 트래픽을 클러스터에서 인터넷으로 전송할 수 있는 아웃바운드 규칙이 포함되어야 합니다. 따라서 자체적으로 보안 그룹을 생성하는 것이 좋습니다. 자세한 내용은 [EMR Notebooks에 대한 EC2 보안 그룹 지정](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-security-groups.html) 섹션을 참조하세요.
**중요**  
네트워크 인터페이스가 퍼블릭 서브넷에서 시작되는 경우 인터넷 게이트웨이(IGW)를 통해 인터넷과 통신할 수 없습니다.
+ **권한 AWS Secrets Manager**- Secrets Manager를 사용하여 리포지토리에 액세스하는 데 사용하는 보안 암호를 저장하는 경우에 `secretsmanager:GetSecretValue` 작업을 허용하는 권한 정책이 연결되어 [EMR Notebooks의 서비스 역할](emr-managed-notebooks-service-role.md) 있어야 합니다.

## EMR Notebooks에 대해 비공개로 호스팅된 Git 리포지토리 구성
<a name="emr-managed-notebooks-private-git-repo"></a>

다음 지침을 사용하여 EMR Notebooks에 대해 비공개로 호스팅된 리포지토리를 구성합니다. DNS 및 Git 서버에 대한 정보가 포함된 구성 파일을 제공해야 합니다. Amazon EMR은 이 정보를 사용하여 비공개로 호스팅된 리포지토리로 트래픽을 라우팅할 수 있는 EMR Notebooks를 구성합니다.

**사전 조건**

EMR Notebooks에 대해 비공개로 호스팅되는 Git 리포지토리를 구성하려면 다음이 있어야 합니다.
+ EMR 노트북의 파일이 저장되는 Amazon S3 Control 위치입니다.

**EMR Notebooks에 대해 비공개로 호스팅되는 Git 리포지토리를 하나 이상 구성하는 방법**

1. 제공된 템플릿을 사용하여 구성 파일을 생성합니다. 구성에서 지정하려는 각 Git 서버에 대해 다음 값을 포함합니다.
   + **`DnsServerIpV4`** - DNS 서버의 IPv4 주소. `DnsServerIpV4` 및 `GitServerIpV4List`에 대한 값을 모두 제공하는 경우 `DnsServerIpV4`의 값이 우선하며 `GitServerDnsName`을 해석하는 데 사용됩니다.
**참고**  
비공개로 호스팅되는 Git 리포지토리를 사용하려면 DNS 서버에서 EMR Notebooks의 인바운드 액세스를 허용해야 합니다. DNS 서버를 다른 무단 액세스로부터 보호해야 합니다.
   + **`GitServerDnsName`** - Git 서버의 DNS 이름입니다. 예: `"git.example.com"`.
   + **`GitServerIpV4List`** - Git 서버에 속하는 IPv4 주소 목록.

   ```
   [
       {
           "Type": "PrivatelyHostedGitConfig",
           "Value": [
               {
                   "DnsServerIpV4": "<10.24.34.xxx>",
                   "GitServerDnsName": "<enterprise.git.com>",
                   "GitServerIpV4List": [
                       "<xxx.xxx.xxx.xxx>",
                       "<xxx.xxx.xxx.xxx>"
                   ]
               },
               {
                   "DnsServerIpV4": "<10.24.34.xxx>",
                   "GitServerDnsName": "<git.example.com>",
                   "GitServerIpV4List": [
                       "<xxx.xxx.xxx.xxx>",
                       "<xxx.xxx.xxx.xxx>"
                   ]
               }
           ]
       }
   ]
   ```

1. 구성 파일을 `configuration.json`으로 저장합니다.

1. 구성 파일을 지정된 Amazon S3 스토리지 위치, `life-cycle-configuration` 폴더에 업로드합니다. 예를 들어, 기본 S3 위치가 `s3://amzn-s3-demo-bucket/notebooks`인 경우 구성 파일은 `s3://amzn-s3-demo-bucket/notebooks/life-cycle-configuration/configuration.json`에 있습니다.
**중요**  
`life-cycle-configuration` 폴더에 대한 액세스는 EMR Notebooks 관리자만, EMR Notebooks의 경우 서비스 역할로만 제한하는 것이 좋습니다. 또한 무단 액세스로부터 `configuration.json`을 보안해야 합니다. 관련 지침은 [사용자 정책을 사용하여 버킷에 대한 액세스 제어](https://docs.aws.amazon.com/AmazonS3/latest/userguide/walkthrough1.html) 또는 [Amazon S3의 보안 모범 사례](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html)를 참조하세요.

   업로드 지침은 *Amazon Simple Storage Service 사용 설명서*에서 [폴더 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-folders.html#create-folder) 및 [객체 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)를 참조하세요.

# Amazon EMR에 Git 기반 리포지토리 추가
<a name="emr-git-repo-add"></a>

이전 콘솔의 EMR Notebook이나 콘솔의 EMR Studio Workspace에 Git 기반 리포지토리를 추가하는 방법에 대한 자세한 내용은 다음 섹션을 참조하세요.

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.

------
#### [ Console ]

EMR Notebooks는 새 콘솔의 EMR Studio Workspace이므로 [Git 기반 리포지토리를 EMR Studio Workspace에 연결](emr-studio-git-repo.md)의 지침에 따라 최대 3개의 Git 리포지토리를 Workspace에 연결할 수 있습니다.

또는 JupyterLab Git 확장을 사용할 수 있습니다. 확장 프로그램에 액세스하려면 Jupyterlab 노트북의 왼쪽 사이드바에서 **Git** 아이콘을 선택합니다. 확장 프로그램에 대한 자세한 내용은 [jupyterlab-git](https://github.com/jupyterlab/jupyterlab-git) GitHub 리포지토리를 참조하세요.

Git 리포지토리를 Workspace에 연결하려면 Studio 관리자가 Git 리포지토리 연결을 허용하도록 Studio를 구성하는 단계를 수행해야 합니다. 자세한 내용은 [Git 기반 리포지토리에 대한 액세스 및 권한 설정](emr-studio-enable-git.md) 단원을 참조하십시오.

------

# EMR Studio Workspace에서 Git 기반 리포지토리 업데이트 또는 삭제
<a name="emr-git-repo-delete"></a>

이전 콘솔의 EMR Notebook이나 콘솔의 EMR Studio Workspace에서 Git 기반 리포지토리를 삭제하는 방법에 대한 자세한 내용은 다음 섹션을 참조하세요.

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.

------
#### [ Console ]

EMR Notebooks는 새 콘솔의 EMR Studio Workspace이므로 Workspace에서 Git 리포지토리를 사용하는 방법에 대한 자세한 내용은 [Git 기반 리포지토리를 EMR Studio Workspace에 연결](emr-studio-git-repo.md) 섹션을 참조하세요. 하지만 지금은 Workspace에서 Git 리포지토리를 삭제할 수 없습니다.

------

# EMR Studio에서 Git 기반 리포지토리 연결 또는 연결 해제
<a name="emr-git-repo-link"></a>

다음 단계를 사용하여 Git 기반 리포지토리를 이전 콘솔의 EMR Notebook이나 콘솔의 EMR Studio Workspace에 연결하거나 연결을 해제합니다.

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.

------
#### [ Console ]

EMR Notebooks는 새 콘솔의 EMR Studio Workspace이므로 Workspace에서 Git 리포지토리를 사용하는 방법에 대한 자세한 내용은 [Git 기반 리포지토리를 EMR Studio Workspace에 연결](emr-studio-git-repo.md) 섹션을 참조하세요. 하지만 지금은 Workspace에서 Git 리포지토리를 삭제할 수 없습니다.

------

## 리포지토리 상태 이해
<a name="emr-managed-notebooks-repository-status"></a>

Git 리포지토리는 리포지토리 목록에서 다음과 같은 상태 중 하나를 가질 수 있습니다. EMR 노트북을 Git 리포지토리와 연결하는 방법에 대한 자세한 내용은 [EMR Studio에서 Git 기반 리포지토리 연결 또는 연결 해제](#emr-git-repo-link) 섹션을 참조하세요.


| Status | 의미 | 
| --- | --- | 
|  Linking(연결 중)  |  Git 리포지토리를 노트북에 연결하는 중입니다. 리포지토리 상태가 **Linking(연결 중)**일 때는 노트북을 중지할 수 없습니다.  | 
|  연결됨  |  Git 리포지토리가 노트북에 연결되어 있습니다. 리포지토리 상태가 **연결됨**일 때는 원격 리포지토리에 연결된 것을 의미합니다.  | 
|  Link Failed(링크 실패)  |  Git 리포지토리를 노트북에 연결하지 못했습니다. 리포지토리 연결을 다시 시도할 수 있습니다.  | 
|  Unlinking(연결 해제 중)  |  Git 리포지토리를 노트북에서 연결 해제하는 중입니다. 리포지토리 상태가 **Unlinking(연결 해제 중)**일 때는 노트북을 중지할 수 없습니다. Git 리포지토리를 노트북에서 연결 해제하면 원격 리포지토리에서만 연결이 끊어질 뿐 노트북에서 코드가 삭제되지는 않습니다.  | 
|  Unlink Failed(연결 해제 실패)  |  Git 리포지토리를 노트북에서 연결 해제하지 못했습니다. 리포지토리 연결 해제를 다시 시도할 수 있습니다.  | 

# EMR Studio에서 연결된 Git 리포지토리를 사용하여 새 노트북 생성
<a name="emr-git-repo-create-notebook"></a>

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.

**Amazon EMR 콘솔에서 노트북을 생성하고 Git 리포지토리와 연결하는 방법**

1. [EMR Studio에서 노트북 생성](emr-managed-notebooks-create.md)의 지침을 따릅니다.

1. **보안 그룹**에서 **Use your own security group(사용자 고유 보안 그룹 사용)**을 선택합니다.
**참고**  
노트북 보안 그룹에는 노트북이 트래픽을 클러스터를 통해 인터넷으로 전송할 수 있는 아웃바운드 규칙이 포함되어야 합니다. 따라서 자체적으로 보안 그룹을 생성하는 것이 좋습니다. 자세한 내용은 [EMR Notebooks에 대한 EC2 보안 그룹 지정](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-security-groups.html) 섹션을 참조하세요.

1. **Git repositories(Git 리포지토리)**에서 노트북과 연결할 **리포지토리를 선택**합니다.

   1. 계정 리소스로 저장할 리포지토리와 **저장**을 차례대로 선택합니다.

   1. 새로운 리포지토리를 계정 리소스로 추가하려면 **add a new repository(새 리포지토리 추가)**를 선택합니다. 새로운 창에서 **Add repository(리포지토리 추가)** 워크플로우를 완료합니다.

# EMR Studio 노트북에서 Git 리포지토리 사용
<a name="emr-git-repo-open"></a>

**참고**  
EMR Notebooks는 콘솔에서 EMR Studio Workspace로 사용 가능합니다. 콘솔의 **워크스페이스 생성** 버튼을 사용하면 새 노트북을 생성할 수 있습니다. EMR Notebooks 사용자는 Workspace에 액세스하거나 Workspace를 생성하려면 추가 IAM 역할 권한이 필요합니다. 자세한 내용은 [Amazon EMR Notebooks가 콘솔에서 Amazon EMR Studio 워크스페이스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-managed-notebooks-migration.html) 및 [Amazon EMR 콘솔](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html)을 참조하세요.

노트북을 열 때 **Open in JupyterLab(JupyterLab에서 열기)** 또는 **Open in Jupyter(Jupyter에서 열기)**를 선택할 수 있습니다.

노트북을 Jupyter에서 열기로 선택하면 노트북의 파일 및 폴더가 확장 가능한 목록으로 표시됩니다. 노트북 셀에서 다음과 같은 Git 명령을 수동으로 실행할 수 있습니다.

```
!git pull origin primary
```

추가 리포지토리를 열려면 다른 폴더로 이동합니다.

JupyterLab 인터페이스를 사용하여 노트북을 열려는 경우 사전 설치된 JupyterLab Git 확장 프로그램을 사용할 수 있습니다. 확장 프로그램에 대한 자세한 내용은 [jupyterlab-git](https://github.com/jupyterlab/jupyterlab-git)을 참조하세요.