

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

# Amazon EMR을 사용한 데이터 준비
<a name="studio-notebooks-emr-cluster"></a>

**중요**  
Amazon SageMaker Studio 및 Amazon SageMaker Studio Classic은 SageMaker AI와 상호작용하는 데 사용할 수 있는 두 가지 기계 학습 환경입니다.  
도메인이 2023년 11월 30일 후에 만들어진 경우 Studio가 기본 환경입니다.  
도메인이 2023년 11월 30일 전에 만들어진 경우 Amazon SageMaker Studio Classic이 기본 환경입니다. Amazon SageMaker Studio Classic이 기본 환경인 경우 Studio를 사용하려면 [Amazon SageMaker Studio Classic에서 마이그레이션](studio-updated-migrate.md) 섹션을 참조하세요.  
Amazon SageMaker Studio Classic에서 Amazon SageMaker Studio로 마이그레이션할 때 사용 가능한 기능이 손실되지 않습니다. Studio Classic은 레거시 기계 학습 워크플로를 실행하는 데 도움이 되도록 Amazon SageMaker Studio 내의 애플리케이션으로도 존재합니다.

Amazon SageMaker Studio 및 Studio Classic에는 [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html)과의 통합 기능이 기본 제공되어 있습니다. JupyterLab 및 Studio Classic 노트북 내에서 데이터 과학자와 데이터 엔지니어는 기존 Amazon EMR 클러스터를 검색하고 연결한 다음 [Apache Spark](https://aws.amazon.com/emr/features/spark), [Apache Hive](https://aws.amazon.com/emr/features/hive) 또는 [Presto](https://aws.amazon.com/emr/features/presto)를 사용하여 기계 학습을 위한 대규모 데이터를 대화식으로 탐색하고 시각화하며 준비할 수 있습니다. 클릭 한 번으로 Spark UI에 액세스하여 노트북을 떠나지 않고도 Spark 작업의 상태와 지표를 모니터링할 수 있습니다.

관리자는 Amazon EMR 클러스터를 정의하는 [CloudFormation 템플릿](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)을 만들 수 있습니다. 그런 다음 Studio 및 Studio Classic 사용자가 시작할 수 있도록 [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/userguide/end-user-console.html)에서 이러한 클러스터 템플릿이 사용 가능하게 할 수 있습니다. 그러면 데이터 과학자는 미리 정의된 템플릿을 선택하여 Studio 환경에서 직접 Amazon EMR 클러스터를 자체 프로비저닝할 수 있습니다. 관리자는 템플릿을 추가로 파라미터화하여 사용자가 사전 정의된 값 내에서 클러스터 측면을 선택할 수 있도록 할 수 있습니다. 예를 들어 사용자는 코어 노드 수를 지정하거나 드롭다운 메뉴에서 노드의 인스턴스 유형을 선택할 수 있습니다.

 CloudFormation관리자는를 사용하여 Amazon EMR 클러스터의 조직, 보안 및 네트워킹 설정을 제어할 수 있습니다. 그런 다음 데이터 과학자와 데이터 엔지니어는 복잡한 구성을 설정하지 않고도 Studio 및 Studio Classic에서 직접 온디맨드 Amazon EMR 클러스터를 만들기 위해 워크로드에 맞게 이러한 템플릿을 사용자 지정할 수 있습니다. 사용자는 사용 후 Amazon EMR 클러스터를 종료할 수 있습니다.
+ **관리자인 경우**:

  Studio 또는 Studio Classic과 Amazon EMR 클러스터 간의 통신을 활성화했는지 확인합니다. 지침은 [Amazon EMR 클러스터에 대한 네트워크 액세스 구성](studio-notebooks-emr-networking.md) 섹션을 참조하세요. 이 통신이 활성화되면 다음을 수행할 수 있습니다.
  + [Service Catalog에서 Amazon EMR CloudFormation 템플릿 구성](studio-notebooks-set-up-emr-templates.md)
  + [Amazon EMR 클러스터 나열 구성](studio-notebooks-configure-discoverability-emr-cluster.md)
+ **데이터 과학자 또는 데이터 엔지니어인 경우** 다음을 수행할 수 있습니다.
  + [Studio 또는 Studio Classic에서 Amazon EMR 클러스터 시작하기](studio-notebooks-launch-emr-cluster-from-template.md)
  + [Studio 또는 Studio Classic에서 Amazon EMR 클러스터 나열](discover-emr-clusters.md)
  + [SageMaker Studio 또는 Studio Classic에서 Amazon EMR 클러스터에 연결](connect-emr-clusters.md)
  + [Studio에서 Amazon EMR 클러스터 종료](terminate-emr-clusters.md)
  + [Studio 또는 Studio Classic에서 Spark UI 액세스](studio-notebooks-access-spark-ui.md)

**Topics**
+ [빠른 시작: SageMaker AI 샌드박스 도메인을 만들어 Studio에서 Amazon EMR 클러스터 시작](studio-notebooks-emr-cluster-quickstart.md)
+ [관리자 안내서](studio-emr-admin-guide.md)
+ [사용 설명서](studio-emr-user-guide.md)
+ [블로그 및 백서](studio-notebooks-emr-resources.md)
+ [문제 해결](studio-notebooks-emr-troubleshooting.md)

# 빠른 시작: SageMaker AI 샌드박스 도메인을 만들어 Studio에서 Amazon EMR 클러스터 시작
<a name="studio-notebooks-emr-cluster-quickstart"></a>

이 섹션에서는 Amazon SageMaker Studio에서 전체 테스트 환경을 빠르게 설정하는 방법을 안내합니다. 사용자가 Studio에서 직접 새 Amazon EMR 클러스터를 시작할 수 있는 새 Studio 도메인을 만듭니다. 이 단계에서는 Amazon EMR 클러스터에 연결하여 Spark 워크로드 실행을 시작할 수 있는 예시 노트북을 제공합니다. 이 노트북을 사용하여 Amazon EMR Spark 분산 처리 및 OpenSearch 벡터 데이터베이스를 사용하여 검색 증강 생성(RAG)을 구축합니다.

**참고**  
시작하려면 관리자 권한이 있는 AWS Identity and Access Management (IAM) 사용자 계정을 사용하여 AWS Management Console에 로그인합니다. AWS 계정에 가입하고 관리 액세스 권한이 있는 사용자를 만드는 방법에 대한 자세한 내용은 [Amazon SageMaker AI 사전 조건 충족](gs-set-up.md) 섹션을 참조하세요.

**Studio 테스트 환경을 설정하고 Spark 작업 실행을 시작하는 방법:**
+ [1단계: Studio에서 Amazon EMR 클러스터를 시작하기 위한 SageMaker AI 도메인 만들기](#studio-notebooks-emr-cluster-quickstart-setup)
+ [2단계: Studio UI에서 새 Amazon EMR 클러스터 시작](#studio-notebooks-emr-cluster-quickstart-launch)
+ [3단계: JupyterLab 노트북을 Amazon EMR 클러스터에 연결](#studio-notebooks-emr-cluster-quickstart-connect)
+ [4단계: CloudFormation 스택 정리](#studio-notebooks-emr-cluster-quickstart-clean-stack)

## 1단계: Studio에서 Amazon EMR 클러스터를 시작하기 위한 SageMaker AI 도메인 만들기
<a name="studio-notebooks-emr-cluster-quickstart-setup"></a>

다음 단계에서는 CloudFormation 스택을 적용하여 새 SageMaker AI 도메인을 자동으로 생성합니다. 또한 스택은 사용자 프로필을 만들고 필요한 환경 및 권한을 구성합니다. SageMaker AI 도메인은 Studio에서 Amazon EMR 클러스터를 직접 시작할 수 있도록 구성됩니다. 이 예에서 Amazon EMR 클러스터는 인증 없이 SageMaker AI와 동일한 AWS 계정에 만들어집니다. [get\$1started](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/getting_started) GitHub 리포지토리에서 Kerberos와 같은 다양한 인증 방법을 지원하는 추가 CloudFormation 스택을 찾을 수 있습니다.

**참고**  
SageMaker AI는 AWS 리전 기본적으로 AWS 계정당 5개의 Studio 도메인을 허용합니다. 스택을 만들기 전에 계정에 리전에 도메인이 4개 이하인지 확인하세요.

**Studio에서 Amazon EMR 클러스터를 시작하기 위한 SageMaker AI 도메인을 설정하려면 다음 단계를 따르세요.**

1. `sagemaker-studio-emr` GitHub 리포지토리에서 이 [CloudFormation 템플릿](https://github.com/aws-samples/sagemaker-studio-foundation-models/blob/main/workshop-artifacts/cfn/workshop-cfn.yaml)의 원시 파일을 다운로드합니다.

1.  CloudFormation 콘솔로 이동: [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)

1. **스택 만들기**를 선택한 다음 드롭다운 메뉴에서 **새 리소스 사용(표준)**을 선택합니다.

1. **1단계**에서:

   1. **템플릿 준비** 섹션에서 **기존 템플릿 선택**을 선택합니다.

   1. **템플릿 지정** 섹션에서 **템플릿 파일 업로드**를 선택합니다.

   1. 다운로드한 CloudFormation 템플릿을 업로드하고 **다음을** 선택합니다.

1. **2단계**에서 **스택 이름**과 **SageMakerDomainName**을 입력한 후, **다음**을 선택합니다.

1. **3단계**에서 모든 기본값을 유지하고 **다음**을 선택합니다.

1. **4단계**에서 확인란을 선택하여 리소스 만들기를 확인하고 **스택 만들기**를 선택합니다. 이렇게 하면 계정 및 리전에 Studio 도메인이 만들어집니다.

## 2단계: Studio UI에서 새 Amazon EMR 클러스터 시작
<a name="studio-notebooks-emr-cluster-quickstart-launch"></a>

아래 단계에서는 Studio UI에서 새 Amazon EMR 클러스터를 만듭니다.

1. SageMaker AI 콘솔([https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/))로 이동한 후 왼쪽 메뉴에서 **도메인**을 선택합니다.

1. 도메인 이름(**GenerativeAIDomain**)을 클릭하여 **도메인 세부 정보** 페이지를 엽니다.

1. 사용자 프로필 `genai-user`에서 Studio를 시작합니다.

1. 왼쪽 탐색 창에서 **데이터**로 이동한 다음 **Amazon EMR 클러스터**로 이동합니다.

1. Amazon EMR 클러스터 페이지에서 **만들기**를 선택합니다. CloudFormation 스택에서 만든 **SageMaker Studio 도메인 인증 없음 EMR** 템플릿을 선택한 후, **다음**을 선택합니다.

1. 새 Amazon EMR 클러스터의 이름을 입력합니다. 선택적으로 코어 및 마스터 노드의 인스턴스 유형, 유휴 제한 시간 또는 코어 노드 수와 같은 다른 파라미터를 업데이트합니다.

1. **리소스 만들기**를 선택하여 새 Amazon EMR 클러스터를 시작합니다.

   Amazon EMR 클러스터를 만든 후 **EMR 클러스터** 페이지의 상태를 따릅니다. 상태가 `Running/Waiting`으로 변경되면 Amazon EMR 클러스터를 Studio에서 사용할 준비가 된 것입니다.

## 3단계: JupyterLab 노트북을 Amazon EMR 클러스터에 연결
<a name="studio-notebooks-emr-cluster-quickstart-connect"></a>

아래 단계에서는 JupyterLab의 노트북을 실행 중인 Amazon EMR 클러스터에 연결합니다. 이 예에서는 노트북을 가져와 Amazon EMR Spark 분산 처리 및 OpenSearch 벡터 데이터베이스를 사용하여 검색 증강 생성(RAG) 시스템을 구축합니다.

1. 

**JupyterLab 시작**

   Studio에서 JupyterLab 애플리케이션을 시작합니다.

1. 

**프라이빗 공간 만들기**

   JupyterLab 애플리케이션을 위한 공간을 만들지 않은 경우 **JupyterLab 공간 만들기**를 선택합니다. 공간의 이름을 입력하고 공간을 **프라이빗**으로 유지합니다. 다른 모든 설정은 기본값으로 두고 **공간 만들기**를 선택합니다.

   아니면 JupyterLab 공간을 실행하여 JupyterLab 애플리케이션을 시작합니다.

1. 

**추론을 위한 LLM 및 임베딩 모델 배포**
   + 상단 메뉴에서 **파일**을 선택한 다음 **새로 만들기**와 **터미널**을 차례로 선택합니다.
   + 터미널에서 다음 명령을 실행합니다.

     ```
     wget --no-check-certificate https://raw.githubusercontent.com/aws-samples/sagemaker-studio-foundation-models/main/lab-00-setup/Lab_0_Warm_Up_Deploy_EmbeddingModel_Llama2_on_Nvidia.ipynb
     mkdir AWSGuides
     cd AWSGuides
     wget --no-check-certificate https://raw.githubusercontent.com/aws-samples/sagemaker-studio-foundation-models/main/lab-03-rag/AWSGuides/AmazonSageMakerDeveloperGuide.pdf
     wget --no-check-certificate https://raw.githubusercontent.com/aws-samples/sagemaker-studio-foundation-models/main/lab-03-rag/AWSGuides/EC2DeveloperGuide.pdf
     wget --no-check-certificate https://raw.githubusercontent.com/aws-samples/sagemaker-studio-foundation-models/main/lab-03-rag/AWSGuides/S3DeveloperGuide.pdf
     ```

     그러면 `Lab_0_Warm_Up_Deploy_EmbeddingModel_Llama2_on_Nvidia.ipynb` 노트북이 로컬 디렉터리로 검색되고 3개의 PDF 파일이 로컬 `AWSGuides` 폴더에 다운로드됩니다.
   + `lab-00-setup/Lab_0_Warm_Up_Deploy_EmbeddingModel_Llama2_on_Nvidia.ipynb`를 열고 `Python 3 (ipykernel)` 커널을 유지한 다음 각 셀을 실행합니다.
**주의**  
계속하기 전에 **Llama 2 라이선스 계약** 섹션에서 Llama2 EULA를 수락해야 합니다.  
노트북은 추론을 위해 `Llama 2` 및 `all-MiniLM-L6-v2 Models`이라는 두 모델을 `ml.g5.2xlarge`에 배포합니다.

     모델을 배포하고 엔드포인트를 만드는 데 시간이 걸릴 수 있습니다.

1. 

**기본 노트북 열기**

   JupyterLab에서 터미널을 열고 다음 명령을 실행합니다.

   ```
   cd ..
   wget --no-check-certificate https://raw.githubusercontent.com/aws-samples/sagemaker-studio-foundation-models/main/lab-03-rag/Lab_3_RAG_on_SageMaker_Studio_using_EMR.ipynb
   ```

   JupyterLab 의 왼쪽 패널에 추가 `Lab_3_RAG_on_SageMaker_Studio_using_EMR.ipynb` 노트북이 표시됩니다.

1. 

**`PySpark` 커널 선택**

   `Lab_3_RAG_on_SageMaker_Studio_using_EMR.ipynb` 노트북을 열고 `SparkMagic PySpark` 커널을 사용하고 있는지 확인합니다. 노트북의 오른쪽 상단에서 커널을 전환할 수 있습니다. 현재 커널 이름을 선택하여 커널 선택 모달을 연 다음 `SparkMagic PySpark`를 선택합니다.

1. 

**클러스터에 노트북 연결**

   1. 노트북 오른쪽 상단에서 **클러스터**를 선택합니다. 이 작업을 수행하면 액세스 권한이 있는 실행 중인 모든 클러스터가 나열된 모달 창이 열립니다.

   1. 클러스터를 선택하고 **연결**을 선택합니다. 새 자격 증명 유형 선택 모달 창이 열립니다.

   1. **자격 증명 없음**을 선택한 다음 **연결**을 선택합니다.  
![\[JupyterLab 노트북에 대한 Amazon EMR 자격 증명 선택을 보여주는 모달입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-credential-selection.png)

   1. 노트북 셀이 자동으로 채워지고 실행됩니다. 노트북 셀은 Amazon EMR 클러스터에 연결하는 기능을 제공하는 `sagemaker_studio_analytics_extension.magics` 확장을 로드합니다. 그런 다음 `%sm_analytics` 매직 명령을 사용하여 Amazon EMR 클러스터 및 Spark 애플리케이션에 대한 연결을 시작합니다.
**참고**  
Amazon EMR 클러스터에 대한 연결 문자열에 인증 유형이 `None`으로 설정되어 있는지 확인합니다. 이는 다음 예에서 `--auth-type None` 값으로 표시됩니다. 필요한 경우 필드를 수정할 수 있습니다.  

      ```
      %load_ext sagemaker_studio_analytics_extension.magics
      %sm_analytics emr connect --verify-certificate False --cluster-id your-cluster-id --auth-type None --language python
      ```

   1. 연결을 성공적으로 설정하면 연결 셀 출력 메시지에 클러스터 ID, `YARN` 애플리케이션 ID, Spark 작업을 모니터링하기 위한 Spark UI 링크를 포함한 `SparkSession` 세부 정보가 표시됩니다.

`Lab_3_RAG_on_SageMaker_Studio_using_EMR.ipynb` 노트북을 사용할 준비가 되었습니다. 이 예시 노트북은 LangChain 및 OpenSearch를 사용하여 RAG 시스템을 구축하기 위해 분산 PySpark 워크로드를 실행합니다.

## 4단계: CloudFormation 스택 정리
<a name="studio-notebooks-emr-cluster-quickstart-clean-stack"></a>

완료 후에는 두 엔드포인트를 종료하고 CloudFormation 스택을 삭제하여 요금이 지속적으로 발생하는 것을 방지해야 합니다. 스택을 삭제하면 스택에서 프로비저닝한 모든 리소스가 정리됩니다.

**스택 작업을 마쳤을 때 CloudFormation 스택을 삭제하려면**

1.  CloudFormation 콘솔로 이동: [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)

1. 삭제할 스택을 선택합니다. 이름으로 검색하거나 스택 목록에서 찾을 수 있습니다.

1. **삭제** 버튼을 클릭하여 스택 삭제를 완료한 다음 **삭제**를 다시 클릭하여 스택에서 만든 모든 리소스가 삭제됨을 확인합니다.

   스택 삭제가 완료될 때까지 기다립니다. 몇 분 정도 걸릴 수 있습니다. CloudFormation 은 스택 템플릿에 정의된 모든 리소스를 자동으로 정리합니다.

1. 스택에서 만든 모든 리소스가 삭제되었는지 확인합니다. 예를 들어 남은 Amazon EMR 클러스터가 있는지 확인합니다.

**모델의 API 엔드포인트를 제거하는 방법**

1. SageMaker AI 콘솔([https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/))로 이동합니다.

1. 탐색 창에서 **추론**을 선택하고 **엔드포인트**를 선택합니다.

1. `hf-allminil6v2-embedding-ep` 엔드포인트를 선택한 다음 **작업** 드롭다운 목록에서 **삭제**를 선택합니다. `meta-llama2-7b-chat-tg-ep` 엔드포인트에 대해 단계를 반복합니다.

# 관리자 안내서
<a name="studio-emr-admin-guide"></a>

이 섹션에서는 Studio 또는 Studio Classic과 Amazon EMR 클러스터 간의 통신을 허용하는 사전 조건, 네트워킹 지침을 제공합니다. Studio 및 Amazon EMR이 퍼블릭 인터넷 액세스 없이 프라이빗 Amazon VPC 내에서 프로비저닝되는 경우와 인터넷을 통해 통신해야 하는 경우 등 각기 다른 배포 시나리오를 다룹니다.

관리자가를 사용하여 Studio에서 CloudFormation 템플릿을 사용할 수 있도록 AWS Service Catalog 하여 데이터 과학자가 Studio 내에서 직접 Amazon EMR 클러스터를 검색하고 자체 프로비저닝할 수 있도록 하는 방법을 안내합니다. 여기에는 Service Catalog 포트폴리오 만들기, 필수 권한 부여, Amazon EMR 템플릿 참조, 클러스터를 만드는 중에 사용자 지정을 활성화하기 위한 파라미터화가 포함됩니다.

마지막으로 Studio 및 Studio Classic에서 실행 중인 기존 Amazon EMR 클러스터의 검색 가능성을 구성하는 방법에 대한 지침을 제공하며, 필요한 IAM 권한과 함께 단일 계정 및 교차 계정 액세스 시나리오를 다룹니다.

**Topics**
+ [Service Catalog에서 Amazon EMR CloudFormation 템플릿 구성](studio-notebooks-set-up-emr-templates.md)
+ [Amazon EMR 클러스터 나열 구성](studio-notebooks-configure-discoverability-emr-cluster.md)
+ [Studio에서 Amazon EMR 클러스터 액세스를 위한 IAM 런타임 역할 구성](studio-notebooks-emr-cluster-rbac.md)
+ [참조 정책](studio-set-up-emr-permissions-reference.md)

# Service Catalog에서 Amazon EMR CloudFormation 템플릿 구성
<a name="studio-notebooks-set-up-emr-templates"></a>

이 주제에서는 관리자가 [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html), [의 포트폴리오 및 제품 AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-portfolio.html), [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html)에 대해 잘 알고 있다고 가정합니다.

Studio에서 Amazon EMR 클러스터 만들기를 단순화하기 위해 관리자는 [Amazon EMR CloudFormation 템플릿](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html)을 [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) 포트폴리오의 제품으로 등록할 수 있습니다. 데이터 과학자가 템플릿을 사용할 수 있도록 하려면 포트폴리오를 Studio 또는 Studio Classic에서 사용되는 SageMaker AI 실행 역할과 연결해야 합니다. 마지막으로 사용자가 템플릿을 검색하고 클러스터를 프로비저닝하고 Studio 또는 Studio Classic에서 Amazon EMR 클러스터에 연결할 수 있도록 하려면 관리자가 적절한 액세스 권한을 설정해야 합니다.

Amazon EMR CloudFormation 템플릿을 사용하면 최종 사용자가 다양한 클러스터 측면을 사용자 지정할 수 있습니다. 예를 들어 관리자는 사용자가 클러스터를 만들 때 선택할 수 있는 승인된 인스턴스 유형 목록을 정의할 수 있습니다.

다음 지침에서는 엔드투엔드 [CloudFormation 스택](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/getting_started)을 사용하여 Studio 또는 Studio Classic 도메인, 사용자 프로필, Service Catalog 포트폴리오를 설정하고 Amazon EMR 시작 템플릿을 채웁니다. 아래 단계에서는 Studio 또는 Studio Classic이 Service Catalog 제품에 액세스하고 Amazon EMR 클러스터를 프로비저닝할 수 있도록 관리자가 엔드투엔드 스택에 적용해야 하는 특정 설정을 강조합니다.

**참고**  
GitHub 리포지토리 [aws-samples/sagemaker-studio-emr](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/getting_started)에는 필요한 IAM 역할, 네트워킹, SageMaker 도메인, 사용자 프로필, Service Catalog 포트폴리오를 배포하고 Amazon EMR 시작 CloudFormation 템플릿을 추가하는 예시 엔드투엔드 CloudFormation 스택이 포함되어 있습니다. 템플릿은 Studio 또는 Studio Classic과 Amazon EMR 클러스터 간에 다양한 인증 옵션을 제공합니다. 이 예시 템플릿에서 상위 CloudFormation 스택은 SageMaker AI VPC, 보안 그룹 및 서브넷 파라미터를 Amazon EMR 클러스터 템플릿에 전달합니다.  
[sagemaker-studio-emr/cloudformation/emr\$1servicecatalog\$1templates](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/emr_servicecatalog_templates) 리포지토리에는 단일 계정 및 교차 계정 배포 옵션을 포함하여 다양한 샘플 Amazon EMR CloudFormation 시작 템플릿이 포함되어 있습니다.  
Amazon EMR 클러스터에 연결하는 데 사용할 수 있는 인증 방법에 대한 자세한 내용은 [SageMaker Studio 또는 Studio Classic에서 Amazon EMR 클러스터에 연결](connect-emr-clusters.md) 섹션을 참조하세요.

데이터 과학자가 Studio 또는 Studio Classic에서 Amazon EMR CloudFormation 템플릿을 검색하고 클러스터를 프로비저닝하도록 하려면 다음 단계를 따르세요.

## 0단계: 네트워킹 확인 및 CloudFormation 스택 준비
<a name="studio-set-up-emr-prereq"></a>

시작하기 전에:
+ [Amazon EMR 클러스터에 대한 네트워크 액세스 구성](studio-notebooks-emr-networking.md)의 네트워킹 및 보안 요구 사항을 검토했는지 확인합니다.
+ 선택한 인증 방법을 지원하는 기존 엔드투엔드 CloudFormation 스택이 있어야 합니다. [aws-samples/sagemaker-studio-emr](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/getting_started) GitHub 리포지토리에서 CloudFormation 템플릿의 예를 확인할 수 있습니다. 다음 단계에서는 Studio 또는 Studio Classic 내에서 Amazon EMR 템플릿을 사용할 수 있도록 하는 엔드투엔드 스택의 특정 구성을 강조합니다.

## 1단계: Service Catalog 포트폴리오를 SageMaker AI와 연결
<a name="studio-set-up-emr-service-catalog-portfolio"></a>

**Service Catalog 포트폴리오에서** 포트폴리오 ID를 클러스터에 액세스하는 SageMaker AI 실행 역할과 연결합니다.

이렇게 하려면 스택에 다음 섹션(여기서는 YAML 형식)을 추가합니다. 이렇게 하면 SageMaker AI 실행 역할이 Amazon EMR 템플릿과 같은 제품이 포함된 지정된 Service Catalog 포트폴리오에 액세스할 수 있습니다. 이를 통해 SageMaker AI가 수임하는 역할이 해당 제품을 시작할 수 있습니다.

 *SageMakerExecutionRole.Arn* 및 *SageMakerStudioEMRProductPortfolio.ID*를 실제 값으로 바꿉니다.

```
SageMakerStudioEMRProductPortfolioPrincipalAssociation:
    Type: AWS::ServiceCatalog::PortfolioPrincipalAssociation
    Properties:
      PrincipalARN: SageMakerExecutionRole.Arn
      PortfolioId: SageMakerStudioEMRProductPortfolio.ID
      PrincipalType: IAM
```

필요한 IAM 권한 세트에 대한 자세한 내용은 [권한](#studio-emr-permissions) 섹션을 참조하세요.

## 2단계: Service Catalog 제품의 Amazon EMR 템플릿 참조
<a name="studio-set-up-emr-service-catalog-product"></a>

**포트폴리오의 Service Catalog 제품에서** Amazon EMR 템플릿 리소스를 참조하고 Studio 또는 Studio Classic에서 가시성을 확보합니다.

그러려면 Service Catalog 제품 정의에서 Amazon EMR 템플릿 리소스를 참조한 후, 다음 태그 키 `"sagemaker:studio-visibility:emr"` 세트를 `"true"` 값(YAML 형식 예시 참조)에 추가합니다.

Service Catalog 제품 정의에서 클러스터의 CloudFormation 템플릿은 URL을 통해 참조됩니다. True로 설정된 추가 태그는 Studio 또는 Studio Classic에서 Amazon EMR 템플릿의 가시성을 보장합니다.

**참고**  
예에 제공된 URL에서 참조하는 Amazon EMR 템플릿은 시작할 때 인증 요구 사항을 적용하지 않습니다. 이 옵션은 데모 및 학습을 위한 것입니다. 프로덕션 환경에서는 권장되지 않습니다.

```
SMStudioEMRNoAuthProduct:
    Type: AWS::ServiceCatalog::CloudFormationProduct
    Properties:
      Owner: AWS
      Name: SageMaker Studio Domain No Auth EMR
      ProvisioningArtifactParameters:
        - Name: SageMaker Studio Domain No Auth EMR
          Description: Provisions a SageMaker domain and No Auth EMR Cluster
          Info:
            LoadTemplateFromURL: Link to your CloudFormation template. For example, https://aws-blogs-artifacts-public.s3.amazonaws.com/artifacts/astra-m4-sagemaker/end-to-end/CFN-EMR-NoStudioNoAuthTemplate-v3.yaml
      Tags:
        - Key: "sagemaker:studio-visibility:emr"
          Value: "true"
```

## 3단계: Amazon EMR CloudFormation 템플릿 파라미터화
<a name="studio-set-up-emr-cfn-template"></a>

**Service Catalog 제품 내에서 Amazon EMR 클러스터를 정의하는 데 사용되는 CloudFormation 템플릿**을 사용하면 관리자가 구성 가능한 파라미터를 지정할 수 있습니다. 관리자는 템플릿의 `Parameters` 섹션 내에서 이러한 파라미터의 `Default` 값과 `AllowedValues` 범위를 정의할 수 있습니다. 클러스터 시작 프로세스 중에 데이터 과학자는 사용자 지정 입력을 제공하거나 사전 정의된 옵션 중에서 선택하여 Amazon EMR 클러스터의 특정 측면을 사용자 지정할 수 있습니다.

다음 예는 Amazon EMR 템플릿을 생성할 때 관리자가 설정할 수 있는 추가 입력 파라미터를 보여줍니다.

```
"Parameters": {
    "EmrClusterName": {
      "Type": "String",
      "Description": "EMR cluster Name."
    },
    "MasterInstanceType": {
      "Type": "String",
      "Description": "Instance type of the EMR master node.",
      "Default": "m5.xlarge",
      "AllowedValues": [
        "m5.xlarge",
        "m5.2xlarge",
        "m5.4xlarge"
      ]
    },
    "CoreInstanceType": {
      "Type": "String",
      "Description": "Instance type of the EMR core nodes.",
      "Default": "m5.xlarge",
      "AllowedValues": [
        "m5.xlarge",
        "m5.2xlarge",
        "m5.4xlarge",
        "m3.medium",
        "m3.large",
        "m3.xlarge",
        "m3.2xlarge"
      ]
    },
    "CoreInstanceCount": {
      "Type": "String",
      "Description": "Number of core instances in the EMR cluster.",
      "Default": "2",
      "AllowedValues": [
        "2",
        "5",
        "10"
      ]
    },
    "EmrReleaseVersion": {
      "Type": "String",
      "Description": "The release version of EMR to launch.",
      "Default": "emr-5.33.1",
      "AllowedValues": [
        "emr-5.33.1",
        "emr-6.4.0"
      ]
    }
  }
```

관리자가 Studio 내에서 Amazon EMR CloudFormation 템플릿을 사용할 수 있게 한 후 데이터 과학자는 이를 사용하여 Amazon EMR 클러스터를 자체 프로비저닝할 수 있습니다. 템플릿에 정의된 `Parameters` 섹션은 Studio 또는 Studio Classic 내에서 클러스터를 만드는 양식의 입력 필드로 변환됩니다. 각 파라미터에 대해 데이터 과학자는 입력 상자에 사용자 지정 값을 입력하거나 드롭다운 메뉴에 나열된 사전 정의된 옵션(템플릿에 지정된 `AllowedValues`에 해당함) 중에서 선택할 수 있습니다.

다음 그림은 Studio 또는 Studio Classic에서 Amazon EMR 클러스터를 만들기 위해 CloudFormation Amazon EMR 템플릿에서 조합된 동적 양식을 보여줍니다.

![\[Studio 또는 Studio Classic에서 Amazon EMR 클러스터를 만들기 위해 CloudFormation Amazon EMR 템플릿에서 조합된 동적 양식을 보여주는 그림.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-cluster-creation.png)


Amazon EMR 템플릿을 사용하여 Studio 또는 Studio Classic에서 클러스터를 시작하는 방법을 알아보려면 [Studio 또는 Studio Classic에서 Amazon EMR 클러스터 시작하기](studio-notebooks-launch-emr-cluster-from-template.md) 섹션을 방문하세요.

## 4단계: Studio에서 Amazon EMR 클러스터 나열 및 시작을 활성화하는 권한 설정
<a name="studio-emr-permissions"></a>

마지막으로, Studio 또는 Studio Classic에서 실행 중인 기존 Amazon EMR 클러스터를 나열하고 새 클러스터를 자체 프로비저닝할 수 있도록 필요한 IAM 권한을 연결합니다.

이러한 권한을 추가해야 하는 역할은 Studio 또는 Studio Classic과 Amazon EMR이 동일한 계정(*단일 계정* 선택)에 배포되었는지 아니면 다른 계정(*교차 계정* 선택)에 배포되었는지에 따라 다릅니다.

**중요**  
프라이빗 공간에서 시작된 JupyterLab 및 Studio Classic 애플리케이션용 Amazon EMR 클러스터만 검색하고 연결할 수 있습니다. Amazon EMR 클러스터가 Studio 환경과 동일한 AWS 리전에 있는지 확인합니다.

### 단일 계정
<a name="studio-set-up-emr-permissions-singleaccount"></a>

Amazon EMR 클러스터와 Studio 또는 Studio Classic이 동일한 AWS 계정에 배포된 경우 클러스터에 액세스하는 SageMaker AI 실행 역할에 다음 권한을 연결합니다.

1. **1단계**: 프라이빗 스페이스에서 사용하는 SageMaker AI 실행 역할의 ARN을 가져옵니다.

   SageMaker AI의 스페이스 및 실행 역할에 대한 자세한 내용은 [도메인 공간 권한 및 실행 역할 이해](execution-roles-and-spaces.md) 섹션을 참조하세요.

   SageMaker AI의 실행 역할 ARN을 검색하는 방법에 대한 자세한 내용은 [실행 역할을 가져옵니다.](sagemaker-roles.md#sagemaker-roles-get-execution-role) 섹션을 참조하세요.

1. **2단계**: Amazon EMR 클러스터에 액세스하는 SageMaker AI 실행 역할에 다음 권한을 부여합니다.

   1. [IAM 콘솔](https://console.aws.amazon.com/iam)로 이동합니다.

   1. **역할**을 선택한 다음 **검색** 필드에서 이름으로 실행 역할을 검색합니다. 역할 이름은 마지막 슬래시(/) 뒤에 있는 ARN의 마지막 부분입니다.

   1. 역할의 링크를 따라갑니다.

   1. **권한 추가**를 선택한 후 **인라인 정책 만들기**를 선택합니다.

   1. **JSON** 탭에서 Amazon EMR 액세스 및 작업을 허용하는 Amazon EMR 권한을 추가합니다. 정책 문서에 대한 자세한 내용은 [참조 정책](studio-set-up-emr-permissions-reference.md)의 *Amazon EMR 정책 나열*을 참조하세요. 문 목록을 역할의 인라인 정책에 복사하기 전에 `region`, `accountID`를 실제 값으로 바꿉니다.

   1. **다음**을 선택한 다음 **정책 이름**을 입력합니다.

   1. **정책 생성**을 선택합니다.

   1. **인라인 정책 만들기** 단계를 반복하여 CloudFormation 템플릿을 사용하여 새 Amazon EMR 클러스터를 프로비저닝할 수 있는 권한을 실행 역할에 부여하는 다른 정책을 추가합니다. 정책 문서에 대한 자세한 내용은 [참조 정책](studio-set-up-emr-permissions-reference.md)의 *Amazon EMR 클러스터 정책 만들기*를 참조하세요. 문 목록을 역할의 인라인 정책에 복사하기 전에 `region`, `accountID`를 실제 값으로 바꿉니다.

**참고**  
Amazon EMR 클러스터에 대한 역할 기반 액세스 제어(RBAC) 연결 사용자도 [Amazon EMR 클러스터와 Studio가 동일한 계정에 있을 때 런타임 역할 인증을 구성합니다.](studio-notebooks-emr-cluster-rbac.md#studio-notebooks-emr-cluster-iam-same) 섹션을 참조해야 합니다.

### 교차 계정
<a name="studio-set-up-emr-permissions-crossaccount"></a>

시작하기 전에 프라이빗 스페이스에서 사용하는 SageMaker AI 실행 역할의 ARN을 검색합니다.

SageMaker AI의 스페이스 및 실행 역할에 대한 자세한 내용은 [도메인 공간 권한 및 실행 역할 이해](execution-roles-and-spaces.md) 섹션을 참조하세요.

SageMaker AI의 실행 역할 ARN을 검색하는 방법에 대한 자세한 내용은 [실행 역할을 가져옵니다.](sagemaker-roles.md#sagemaker-roles-get-execution-role) 섹션을 참조하세요.

Amazon EMR 클러스터와 Studio 또는 Studio Classic이 별도의 AWS 계정에 배포된 경우 두 계정에 대한 권한을 구성합니다.

**참고**  
Amazon EMR 클러스터에 대한 역할 기반 액세스 제어(RBAC) 연결 사용자도 [클러스터와 Studio가 서로 다른 계정에 있는 경우 런타임 역할 인증 구성](studio-notebooks-emr-cluster-rbac.md#studio-notebooks-emr-cluster-iam-diff) 섹션을 참조해야 합니다.

#### Amazon EMR 클러스터 계정에서
<a name="studio-set-up-emr-permissions-crossaccount-emraccount"></a>

다음 단계에 따라 Amazon EMR이 배포된 계정(*신뢰하는 계정*이라고도 함)에서 필요한 역할 및 정책을 만듭니다.

1. **1단계**: [Amazon EMR 클러스터 서비스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role.html)의 ARN을 검색합니다.

   클러스터 서비스 역할의 ARN을 찾는 방법에 대한 자세한 내용은 [AWS 서비스 및 리소스의 Amazon EMR 권한에 대한 AWS 서비스 역할 구성](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles.html#emr-iam-role-landing)을 참조하세요.

1. **2단계**: 다음 구성으로 `AssumableRole`이라는 사용자 지정 IAM 역할을 만듭니다.
   + 권한: Amazon EMR 리소스에 대한 액세스를 허용하는 데 필요한 권한을 `AssumableRole`에 부여합니다. 이 역할은 교차 계정 액세스와 관련된 시나리오에서 *액세스 역할*이라고도 합니다.
   + 신뢰 관계: 액세스가 필요한 Studio 계정에서 실행 역할(교차 계정 다이어그램의 `SageMakerExecutionRole`)을 수임할 수 있도록 `AssumableRole`에 대한 신뢰 정책을 구성합니다.

   Studio 또는 Studio Classic은 역할을 수임하여 Amazon EMR에서 필요한 권한에 임시로 액세스할 수 있습니다.

   Amazon EMR AWS 계정`AssumableRole`에서 새를 생성하는 방법에 대한 자세한 지침은 다음 단계를 따르세요.

   1. [IAM 콘솔](https://console.aws.amazon.com/iam)로 이동합니다.

   1. 왼쪽 탐색 창에서 **정책**을 선택한 다음 **정책 만들기**를 선택합니다.

   1. **JSON** 탭에서 Amazon EMR 액세스 및 작업을 허용하는 Amazon EMR 권한을 추가합니다. 정책 문서에 대한 자세한 내용은 [참조 정책](studio-set-up-emr-permissions-reference.md)의 *Amazon EMR 정책 나열*을 참조하세요. 문 목록을 역할의 인라인 정책에 복사하기 전에 `region`, `accountID`를 실제 값으로 바꿉니다.

   1. **다음**을 선택한 다음 **정책 이름**을 입력합니다.

   1. **정책 생성**을 선택합니다.

   1. 왼쪽 탐색 창에서 **역할**을 선택한 후 **역할 만들기**를 선택합니다.

   1. **역할 만들기** 페이지에서 **사용자 지정 신뢰 정책**을 신뢰할 수 있는 엔터티로 선택합니다.

   1. **사용자 지정 신뢰 정책** 섹션의 다음 JSON 문서에 붙여 넣은 다음 **다음**을 선택합니다.

------
#### [ For users of Studio and JupyterLab ]

      `studio-account`를 Studio 계정 ID로, `AmazonSageMaker-ExecutionRole`을 JupyterLab 공간에서 사용하는 실행 역할로 바꿉니다.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

------
#### [ For users of Studio Classic ]

      `studio-account`를 Studio Classic 계정 ID로 바꿉니다.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:root"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

------

   1. **권한 추가** 페이지에서 방금 만든 권한을 추가하고 **다음**을 선택합니다.

   1. **검토** 페이지에서 역할 이름(예: `AssumableRole`)을 입력하고 선택적으로 설명을 입력합니다.

   1. 역할 세부 정보를 검토하고 **역할 생성**을 선택합니다.

    AWS 계정에서 역할 만들기에 대한 자세한 내용은 [IAM 역할 만들기(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)를 참조하세요.

#### Studio 계정에서
<a name="studio-set-up-emr-permissions-crossaccount-studioaccount"></a>

Studio가 배포된 계정(*신뢰받는 계정*이라고도 함)에서 클러스터에 액세스하는 SageMaker AI 실행 역할을 신뢰하는 계정의 리소스에 액세스하는 데 필요한 권한으로 업데이트합니다.

1. **1단계**: 프라이빗 스페이스에서 사용하는 SageMaker AI 실행 역할의 ARN을 가져옵니다.

   SageMaker AI의 스페이스 및 실행 역할에 대한 자세한 내용은 [도메인 공간 권한 및 실행 역할 이해](execution-roles-and-spaces.md) 섹션을 참조하세요.

   SageMaker AI의 실행 역할 ARN을 검색하는 방법에 대한 자세한 내용은 [실행 역할을 가져옵니다.](sagemaker-roles.md#sagemaker-roles-get-execution-role) 섹션을 참조하세요.

1. **2단계**: Amazon EMR 클러스터에 액세스하는 SageMaker AI 실행 역할에 다음 권한을 부여합니다.

   1. [IAM 콘솔](https://console.aws.amazon.com/iam)로 이동합니다.

   1. **역할**을 선택한 다음 **검색** 필드에서 이름으로 실행 역할을 검색합니다. 역할 이름은 마지막 슬래시(/) 뒤에 있는 ARN의 마지막 부분입니다.

   1. 역할의 링크를 따라갑니다.

   1. **권한 추가**를 선택한 후 **인라인 정책 만들기**를 선택합니다.

   1. **JSON** 탭에서 도메인, 사용자 프로필 및 공간을 업데이트할 수 있는 역할 권한을 부여하는 인라인 정책을 추가합니다. 정책 문서에 대한 자세한 내용은 [참조 정책](studio-set-up-emr-permissions-reference.md)의 *도메인, 사용자 프로필 및 공간 업데이트 작업 정책*을 참조하세요. 문 목록을 역할의 인라인 정책에 복사하기 전에 `region`, `accountID`를 실제 값으로 바꿉니다.

   1. **다음**을 선택한 다음 **정책 이름**을 입력합니다.

   1. **정책 생성**을 선택합니다.

   1. **인라인 정책 만들기** 단계를 반복하여 `AssumableRole`을 수임한 다음 역할의 액세스 정책에서 허용하는 작업을 수행할 수 있는 권한을 실행 역할에 부여하는 다른 정책을 추가합니다. `emr-account`를 Amazon EMR 계정 ID로 바꾸고, `AssumableRole`을 Amazon EMR 계정에서 만든 수임 가능한 역할의 이름으로 바꿉니다.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "AllowRoleAssumptionForCrossAccountDiscovery",
                  "Effect": "Allow",
                  "Action": "sts:AssumeRole",
                  "Resource": [
                      "arn:aws:iam::111122223333:role/AssumableRole"
                  ]
              }
          ]
      }
      ```

------

   1. **인라인 정책 만들기** 단계를 반복하여 CloudFormation 템플릿을 사용하여 새 Amazon EMR 클러스터를 프로비저닝할 수 있는 권한을 실행 역할에 부여하는 다른 정책을 추가합니다. 정책 문서에 대한 자세한 내용은 [참조 정책](studio-set-up-emr-permissions-reference.md)의 *Amazon EMR 클러스터 정책 만들기*를 참조하세요. 문 목록을 역할의 인라인 정책에 복사하기 전에 `region`, `accountID`를 실제 값으로 바꿉니다.

   1. (선택 사항) Studio와 동일한 계정에 배포된 Amazon EMR 클러스터를 나열하도록 허용하려면 [참조 정책](studio-set-up-emr-permissions-reference.md)의 *Amazon EMR 정책 나열*에 정의된 대로 Studio 실행 역할에 인라인 정책을 추가합니다.

1. **3단계**: 수임 가능한 역할(액세스 역할)을 도메인 또는 사용자 프로필과 연결합니다. Studio의 JupyterLab 사용자는 SageMaker AI 콘솔 또는 제공된 스크립트를 사용할 수 있습니다.

    사용 사례에 해당하는 탭을 선택합니다.

------
#### [ Associate your assumable roles in JupyterLab using the SageMaker AI console ]

   SageMaker AI 콘솔을 사용하여 수임 가능한 역할을 사용자 프로필 또는 도메인과 연결하는 방법:

   1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 SageMaker AI 콘솔로 이동합니다.

   1. 왼쪽 탐색 창에서 **도메인**을 선택한 다음 업데이트된 권한이 있는 SageMaker AI 실행 역할을 사용하는 도메인을 선택합니다.

   1. 
      + 도메인에 수임 가능한 역할(액세스 역할)을 추가하는 방법: **도메인 세부 정보** 페이지의 **앱 구성** 탭에서 **JupyterLab** 섹션으로 이동합니다.
      + 사용자 프로필에 수임 가능한 역할(액세스 역할)을 추가하는 방법: **도메인 세부 정보** 페이지에서 **사용자 프로필** 탭을 선택하고 업데이트된 권한이 있는 SageMaker AI 실행 역할을 사용하는 사용자 프로필을 선택합니다. **앱 구성** 탭에서 **JupyterLab** 섹션으로 이동합니다.

   1. **편집**을 선택하고 수임 가능한 역할(액세스 역할)의 ARN을 추가합니다.

   1. **제출**을 선택합니다.

------
#### [ Associate your assumable roles in JupyterLab using a Python script ]

    권한을 업데이트한 SageMaker AI 실행 역할을 사용하여 스페이스에서 시작한 JupyterLab 애플리케이션의 터미널에서 다음 명령을 실행합니다. `domainID`, `user-profile-name`, `emr-accountID` 및 `AssumableRole`([RBAC 런타임 역할]()의 경우 `EMRServiceRole`)을 적절한 값으로 바꿉니다. 이 코드 조각은 SageMaker AI 도메인 내의 특정 사용자 프로필(`client.update_userprofile` 사용) 또는 도메인 설정(`client.update_domain` 사용)에 대한 사용자 프로필 설정을 업데이트합니다. 특히 JupyterLab 애플리케이션이 Amazon EMR 계정 내에서 Amazon EMR 클러스터를 실행하기 위해 특정 IAM 역할(`AssumableRole`)을 수임할 수 있도록 합니다.

   ```
   import botocore.session
   import json
   sess = botocore.session.get_session()
   client = sess.create_client('sagemaker')
   
   client.update_userprofile(
   DomainId="domainID", 
   UserProfileName="user-profile-name",
   DefaultUserSettings={
       'JupyterLabAppSettings': {
           'EmrSettings': {
               'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"],
               'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServiceRole", 
                                "arn:aws:iam::emr-accountID:role/AnotherServiceRole"]
           }
           
       }
   })
   resp = client.describe_user_profile(DomainId="domainID", UserProfileName=user-profile-name")
   
   resp['CreationTime'] = str(resp['CreationTime'])
   resp['LastModifiedTime'] = str(resp['LastModifiedTime'])
   print(json.dumps(resp, indent=2))
   ```

------
#### [ For users of Studio Classic ]

   Studio Classic 실행 역할에 `AssumableRole`의 ARN을 제공합니다. ARN은 시작 시 Jupyter 서버에서 로드됩니다. Studio에서 사용하는 실행 역할은 *신뢰하는 계정*에서 Amazon EMR 클러스터를 검색하고 연결하는 교차 계정 역할을 수임합니다.

   수명 주기 구성(LCC) 스크립트를 사용하여 이 정보를 지정할 수 있습니다. LCC를 도메인 또는 특정 사용자 프로필에 연결할 수 있습니다. 사용하는 LCC 스크립트는 JupyterServer 구성이어야 합니다. LCC 스크립트를 만드는 방법에 대한 자세한 내용은 [Use Lifecycle Configurations with Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-lcc.html)을 참조하세요.

   다음은 예제 LCC 스크립트입니다. 스크립트를 수정하려면 `AssumableRole` 및 `emr-account`를 각각 실제 값으로 바꿉니다. 교차 계정의 수는 5개로 제한됩니다.

   ```
   # This script creates the file that informs Studio Classic that the role "arn:aws:iam::emr-account:role/AssumableRole" in remote account "emr-account" must be assumed to list and describe Amazon EMR clusters in the remote account.
   
   #!/bin/bash
   
   set -eux
   
   FILE_DIRECTORY="/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE"
   FILE_NAME="emr-discovery-iam-role-arns-DO_NOT_DELETE.json"
   FILE="$FILE_DIRECTORY/$FILE_NAME"
   
   mkdir -p $FILE_DIRECTORY
   
   cat > "$FILE" <<- "EOF"
   {
     emr-cross-account1: "arn:aws:iam::emr-cross-account1:role/AssumableRole",
     emr-cross-account2: "arn:aws:iam::emr-cross-account2:role/AssumableRole"
   }
   EOF
   ```

    LCC가 실행되고 파일이 기록되면 서버는 파일 `/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE/emr-discovery-iam-role-arns-DO_NOT_DELETE.json`을 읽고 교차 계정 ARN을 저장합니다.

------

# Amazon EMR 클러스터 나열 구성
<a name="studio-notebooks-configure-discoverability-emr-cluster"></a>

관리자는 SageMaker Studio 실행 역할에 대한 권한을 구성하여 사용자에게 액세스할 수 있는 Amazon EMR 클러스터 목록을 볼 수 있는 권한을 부여하여 이러한 클러스터에 연결하도록 허용할 수 있습니다. 액세스하려는 클러스터는 Studio와 동일한 AWS 계정(*단일 계정 선택*) 또는 별도의 계정(*교차 계정 선택)에 배포할 수 있습니다*. 이어지는 페이지에서는 Studio 또는 Studio Classic에서 Amazon EMR 클러스터를 볼 수 있는 권한을 부여하는 방법을 설명합니다.

**중요**  
프라이빗 공간에서 시작된 JupyterLab 및 Studio Classic 애플리케이션용 Amazon EMR 클러스터만 검색하고 연결할 수 있습니다. Amazon EMR 클러스터가 Studio 환경과 동일한 AWS 리전에 있는지 확인합니다.

데이터 과학자가 Studio 또는 Studio Classic에서 Amazon EMR 클러스터를 검색한 다음 연결할 수 있도록 하려면 다음 단계를 따르세요.

## 단일 계정
<a name="studio-set-up-emr-permissions-singleaccount-list-clusters"></a>

Amazon EMR 클러스터와 Studio 또는 Studio Classic이 동일한 AWS 계정에 배포된 경우 클러스터에 액세스하는 SageMaker AI 실행 역할에 다음 권한을 연결합니다.

1. **1단계**: 프라이빗 스페이스에서 사용하는 SageMaker AI 실행 역할의 ARN을 가져옵니다.

   SageMaker AI의 스페이스 및 실행 역할에 대한 자세한 내용은 [도메인 공간 권한 및 실행 역할 이해](execution-roles-and-spaces.md) 섹션을 참조하세요.

   SageMaker AI의 실행 역할 ARN을 검색하는 방법에 대한 자세한 내용은 [실행 역할을 가져옵니다.](sagemaker-roles.md#sagemaker-roles-get-execution-role) 섹션을 참조하세요.

1. **2단계**: Amazon EMR 클러스터에 액세스하는 SageMaker AI 실행 역할에 다음 권한을 부여합니다.

   1. [IAM 콘솔](https://console.aws.amazon.com/iam)로 이동합니다.

   1. **역할**을 선택한 다음 **검색** 필드에서 이름으로 실행 역할을 검색합니다. 역할 이름은 마지막 슬래시(/) 뒤에 있는 ARN의 마지막 부분입니다.

   1. 역할의 링크를 따라갑니다.

   1. **권한 추가**를 선택한 후 **인라인 정책 만들기**를 선택합니다.

   1. **JSON** 탭에서 Amazon EMR 액세스 및 작업을 허용하는 Amazon EMR 권한을 추가합니다. 정책 문서에 대한 자세한 내용은 [참조 정책](studio-set-up-emr-permissions-reference.md)의 *Amazon EMR 정책 나열*을 참조하세요. 문 목록을 역할의 인라인 정책에 복사하기 전에 `region`, `accountID`를 실제 값으로 바꿉니다.

   1. **다음**을 선택한 다음 **정책 이름**을 입력합니다.

   1. **정책 생성**을 선택합니다.

**참고**  
Amazon EMR 클러스터에 대한 역할 기반 액세스 제어(RBAC) 연결 사용자도 [Amazon EMR 클러스터와 Studio가 동일한 계정에 있을 때 런타임 역할 인증을 구성합니다.](studio-notebooks-emr-cluster-rbac.md#studio-notebooks-emr-cluster-iam-same) 섹션을 참조해야 합니다.

## 교차 계정
<a name="studio-set-up-emr-permissions-crossaccount-list-clusters"></a>

시작하기 전에 프라이빗 스페이스에서 사용하는 SageMaker AI 실행 역할의 ARN을 검색합니다.

SageMaker AI의 스페이스 및 실행 역할에 대한 자세한 내용은 [도메인 공간 권한 및 실행 역할 이해](execution-roles-and-spaces.md) 섹션을 참조하세요.

SageMaker AI의 실행 역할 ARN을 검색하는 방법에 대한 자세한 내용은 [실행 역할을 가져옵니다.](sagemaker-roles.md#sagemaker-roles-get-execution-role) 섹션을 참조하세요.

Amazon EMR 클러스터와 Studio 또는 Studio Classic을 서로 다른 AWS 계정에 배포하는 경우 두 계정 모두에서 권한을 구성합니다.

**참고**  
Amazon EMR 클러스터에 대한 역할 기반 액세스 제어(RBAC) 연결 사용자도 [클러스터와 Studio가 서로 다른 계정에 있는 경우 런타임 역할 인증 구성](studio-notebooks-emr-cluster-rbac.md#studio-notebooks-emr-cluster-iam-diff) 섹션을 참조해야 합니다.

**Amazon EMR 클러스터 계정에서**

다음 단계에 따라 Amazon EMR이 배포된 계정(*신뢰하는 계정*이라고도 함)에서 필요한 역할 및 정책을 만듭니다.

1. **1단계**: [Amazon EMR 클러스터 서비스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role.html)의 ARN을 검색합니다.

   클러스터 서비스 역할의 ARN을 찾는 방법에 대한 자세한 내용은 [AWS 서비스 및 리소스의 Amazon EMR 권한에 대한 AWS 서비스 역할 구성](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles.html#emr-iam-role-landing)을 참조하세요.

1. **2단계**: 다음 구성으로 `AssumableRole`이라는 사용자 지정 IAM 역할을 만듭니다.
   + 권한: Amazon EMR 리소스에 대한 액세스를 허용하는 데 필요한 권한을 `AssumableRole`에 부여합니다. 이 역할은 교차 계정 액세스와 관련된 시나리오에서 *액세스 역할*이라고도 합니다.
   + 신뢰 관계: 액세스가 필요한 Studio 계정에서 실행 역할(교차 계정 다이어그램의 `SageMakerExecutionRole`)을 수임할 수 있도록 `AssumableRole`에 대한 신뢰 정책을 구성합니다.

   Studio 또는 Studio Classic은 역할을 수임하여 Amazon EMR에서 필요한 권한에 임시로 액세스할 수 있습니다.

   Amazon EMR AWS 계정`AssumableRole`에서 새를 생성하는 방법에 대한 자세한 지침은 다음 단계를 따르세요.

   1. [IAM 콘솔](https://console.aws.amazon.com/iam)로 이동합니다.

   1. 왼쪽 탐색 창에서 **정책**을 선택한 다음 **정책 만들기**를 선택합니다.

   1. **JSON** 탭에서 Amazon EMR 액세스 및 작업을 허용하는 Amazon EMR 권한을 추가합니다. 정책 문서에 대한 자세한 내용은 [참조 정책](studio-set-up-emr-permissions-reference.md)의 *Amazon EMR 정책 나열*을 참조하세요. 문 목록을 역할의 인라인 정책에 복사하기 전에 `region`, `accountID`를 실제 값으로 바꿉니다.

   1. **다음**을 선택한 다음 **정책 이름**을 입력합니다.

   1. **정책 생성**을 선택합니다.

   1. 왼쪽 탐색 창에서 **역할**을 선택한 후 **역할 만들기**를 선택합니다.

   1. **역할 만들기** 페이지에서 **사용자 지정 신뢰 정책**을 신뢰할 수 있는 엔터티로 선택합니다.

   1. **사용자 지정 신뢰 정책** 섹션의 다음 JSON 문서에 붙여 넣은 다음 **다음**을 선택합니다.

------
#### [ For users of Studio and JupyterLab ]

      `studio-account`를 Studio 계정 ID로, `AmazonSageMaker-ExecutionRole`을 JupyterLab 공간에서 사용하는 실행 역할로 바꿉니다.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

------
#### [ For users of Studio Classic ]

      `studio-account`를 Studio Classic 계정 ID로 바꿉니다.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:root"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

------

   1. **권한 추가** 페이지에서 방금 만든 권한을 추가하고 **다음**을 선택합니다.

   1. **검토** 페이지에서 역할 이름(예: `AssumableRole`)을 입력하고 선택적으로 설명을 입력합니다.

   1. 역할 세부 정보를 검토하고 **역할 생성**을 선택합니다.

    AWS 계정에서 역할을 생성하는 방법에 대한 자세한 내용은 [IAM 역할 생성(콘솔)을 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html).

**Studio 계정에서**

Studio가 배포된 계정(*신뢰받는 계정*이라고도 함)에서 클러스터에 액세스하는 SageMaker AI 실행 역할을 신뢰하는 계정의 리소스에 액세스하는 데 필요한 권한으로 업데이트합니다.

1. **1단계**: 프라이빗 스페이스에서 사용하는 SageMaker AI 실행 역할의 ARN을 가져옵니다.

   SageMaker AI의 스페이스 및 실행 역할에 대한 자세한 내용은 [도메인 공간 권한 및 실행 역할 이해](execution-roles-and-spaces.md) 섹션을 참조하세요.

   SageMaker AI의 실행 역할 ARN을 검색하는 방법에 대한 자세한 내용은 [실행 역할을 가져옵니다.](sagemaker-roles.md#sagemaker-roles-get-execution-role) 섹션을 참조하세요.

1. **2단계**: Amazon EMR 클러스터에 액세스하는 SageMaker AI 실행 역할에 다음 권한을 부여합니다.

   1. [IAM 콘솔](https://console.aws.amazon.com/iam)로 이동합니다.

   1. **역할**을 선택한 다음 **검색** 필드에서 이름으로 실행 역할을 검색합니다. 역할 이름은 마지막 슬래시(/) 뒤에 있는 ARN의 마지막 부분입니다.

   1. 역할의 링크를 따라갑니다.

   1. **권한 추가**를 선택한 후 **인라인 정책 만들기**를 선택합니다.

   1. **JSON** 탭에서 도메인, 사용자 프로필 및 공간을 업데이트할 수 있는 역할 권한을 부여하는 인라인 정책을 추가합니다. 정책 문서에 대한 자세한 내용은 [참조 정책](studio-set-up-emr-permissions-reference.md)의 *도메인, 사용자 프로필 및 공간 업데이트 작업 정책*을 참조하세요. 문 목록을 역할의 인라인 정책에 복사하기 전에 `region`, `accountID`를 실제 값으로 바꿉니다.

   1. **다음**을 선택한 다음 **정책 이름**을 입력합니다.

   1. **정책 생성**을 선택합니다.

   1. **인라인 정책 만들기** 단계를 반복하여 `AssumableRole`을 수임한 다음 역할의 액세스 정책에서 허용하는 작업을 수행할 수 있는 권한을 실행 역할에 부여하는 다른 정책을 추가합니다. `emr-account`를 Amazon EMR 계정 ID로 바꾸고, `AssumableRole`을 Amazon EMR 계정에서 만든 수임 가능한 역할의 이름으로 바꿉니다.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "AllowRoleAssumptionForCrossAccountDiscovery",
                  "Effect": "Allow",
                  "Action": "sts:AssumeRole",
                  "Resource": [
                      "arn:aws:iam::111122223333:role/AssumableRole"
                  ]
              }
          ]
      }
      ```

------

   1. (선택 사항) Studio와 동일한 계정에 배포된 Amazon EMR 클러스터를 나열하도록 허용하려면 [참조 정책](studio-set-up-emr-permissions-reference.md)의 *Amazon EMR 정책 나열*에 정의된 대로 Studio 실행 역할에 인라인 정책을 추가합니다.

1. **3단계**: 수임 가능한 역할(액세스 역할)을 도메인 또는 사용자 프로필과 연결합니다. Studio의 JupyterLab 사용자는 SageMaker AI 콘솔 또는 제공된 스크립트를 사용할 수 있습니다.

    사용 사례에 해당하는 탭을 선택합니다.

------
#### [ Associate your assumable roles in JupyterLab using the SageMaker AI console ]

   SageMaker AI 콘솔을 사용하여 수임 가능한 역할을 사용자 프로필 또는 도메인과 연결하는 방법:

   1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 SageMaker AI 콘솔로 이동합니다.

   1. 왼쪽 탐색 창에서 **도메인**을 선택한 다음 업데이트된 권한이 있는 SageMaker AI 실행 역할을 사용하는 도메인을 선택합니다.

   1. 
      + 도메인에 수임 가능한 역할(액세스 역할)을 추가하는 방법: **도메인 세부 정보** 페이지의 **앱 구성** 탭에서 **JupyterLab** 섹션으로 이동합니다.
      + 사용자 프로필에 수임 가능한 역할(액세스 역할)을 추가하는 방법: **도메인 세부 정보** 페이지에서 **사용자 프로필** 탭을 선택하고 업데이트된 권한이 있는 SageMaker AI 실행 역할을 사용하는 사용자 프로필을 선택합니다. **앱 구성** 탭에서 **JupyterLab** 섹션으로 이동합니다.

   1. **편집**을 선택하고 수임 가능한 역할(액세스 역할)의 ARN을 추가합니다.

   1. **제출**을 선택합니다.

------
#### [ Associate your assumable roles in JupyterLab using a Python script ]

    권한을 업데이트한 SageMaker AI 실행 역할을 사용하여 스페이스에서 시작한 JupyterLab 애플리케이션의 터미널에서 다음 명령을 실행합니다. `domainID`, `user-profile-name`, `emr-accountID` 및 `AssumableRole`([RBAC 런타임 역할]()의 경우 `EMRServiceRole`)을 적절한 값으로 바꿉니다. 이 코드 조각은 SageMaker AI 도메인 내의 특정 사용자 프로필(`client.update_userprofile` 사용) 또는 도메인 설정(`client.update_domain` 사용)에 대한 사용자 프로필 설정을 업데이트합니다. 특히 JupyterLab 애플리케이션이 Amazon EMR 계정 내에서 Amazon EMR 클러스터를 실행하기 위해 특정 IAM 역할(`AssumableRole`)을 수임할 수 있도록 합니다.

   ```
   import botocore.session
   import json
   sess = botocore.session.get_session()
   client = sess.create_client('sagemaker')
   
   client.update_userprofile(
   DomainId="domainID", 
   UserProfileName="user-profile-name",
   DefaultUserSettings={
       'JupyterLabAppSettings': {
           'EmrSettings': {
               'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"],
               'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServiceRole", 
                                "arn:aws:iam::emr-accountID:role/AnotherServiceRole"]
           }
           
       }
   })
   resp = client.describe_user_profile(DomainId="domainID", UserProfileName=user-profile-name")
   
   resp['CreationTime'] = str(resp['CreationTime'])
   resp['LastModifiedTime'] = str(resp['LastModifiedTime'])
   print(json.dumps(resp, indent=2))
   ```

------
#### [ For users of Studio Classic ]

   Studio Classic 실행 역할에 `AssumableRole`의 ARN을 제공합니다. ARN은 시작 시 Jupyter 서버에서 로드됩니다. Studio에서 사용하는 실행 역할은 *신뢰하는 계정*에서 Amazon EMR 클러스터를 검색하고 연결하는 교차 계정 역할을 수임합니다.

   수명 주기 구성(LCC) 스크립트를 사용하여 이 정보를 지정할 수 있습니다. LCC를 도메인 또는 특정 사용자 프로필에 연결할 수 있습니다. 사용하는 LCC 스크립트는 JupyterServer 구성이어야 합니다. LCC 스크립트를 만드는 방법에 대한 자세한 내용은 [Use Lifecycle Configurations with Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-lcc.html)을 참조하세요.

   다음은 예제 LCC 스크립트입니다. 스크립트를 수정하려면 `AssumableRole` 및 `emr-account`를 각각 실제 값으로 바꿉니다. 교차 계정의 수는 5개로 제한됩니다.

   ```
   # This script creates the file that informs Studio Classic that the role "arn:aws:iam::emr-account:role/AssumableRole" in remote account "emr-account" must be assumed to list and describe Amazon EMR clusters in the remote account.
   
   #!/bin/bash
   
   set -eux
   
   FILE_DIRECTORY="/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE"
   FILE_NAME="emr-discovery-iam-role-arns-DO_NOT_DELETE.json"
   FILE="$FILE_DIRECTORY/$FILE_NAME"
   
   mkdir -p $FILE_DIRECTORY
   
   cat > "$FILE" <<- "EOF"
   {
     emr-cross-account1: "arn:aws:iam::emr-cross-account1:role/AssumableRole",
     emr-cross-account2: "arn:aws:iam::emr-cross-account2:role/AssumableRole"
   }
   EOF
   ```

    LCC가 실행되고 파일이 기록되면 서버는 파일 `/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE/emr-discovery-iam-role-arns-DO_NOT_DELETE.json`을 읽고 교차 계정 ARN을 저장합니다.

------

Studio 또는 Studio Classic 노트북에서 Amazon EMR 클러스터를 검색하고 연결하는 방법을 알아보려면 [Studio 또는 Studio Classic에서 Amazon EMR 클러스터 나열](discover-emr-clusters.md) 섹션을 참조하세요.

# Studio에서 Amazon EMR 클러스터 액세스를 위한 IAM 런타임 역할 구성
<a name="studio-notebooks-emr-cluster-rbac"></a>

Studio 또는 Studio Classic 노트북에서 Amazon EMR 클러스터에 연결하면 런타임 역할이라고 하는 IAM 역할 목록을 시각적으로 탐색하고 즉시 하나를 선택할 수 있습니다. 이후 노트북에서 만든 모든 Apache Spark, Apache Hive 또는 Presto 작업은 런타임 역할에 첨부된 정책에서 허용하는 데이터 및 리소스에만 액세스합니다. 또한 로 관리되는 데이터 레이크에서 데이터에 액세스할 때 런타임 역할에 연결된 정책을 사용하여 테이블 수준 및 열 수준 액세스를 적용할 AWS Lake Formation수 있습니다.

이 기능을 사용하면 팀원과 함께 동일한 클러스터에 연결할 수 있습니다. 각각은 데이터에 대한 개별 액세스 수준에 맞는 권한 범위가 지정된 런타임 역할을 사용합니다. 또한 클러스터 공유에서는 세션이 서로 격리됩니다.

Studio Classic을 사용하여이 기능을 시도하려면 [AWS Lake Formation 및 Amazon SageMaker Studio Classic의 Amazon EMR을 사용하여 세분화된 데이터 액세스 제어 적용을 ](https://aws.amazon.com/blogs/machine-learning/apply-fine-grained-data-access-controls-with-aws-lake-formation-and-amazon-emr-from-amazon-sagemaker-studio/)참조하세요. 이 블로그 게시물은 사전 구성된 런타임 역할을 사용하여 Amazon EMR 클러스터에 연결해 볼 수 있는 데모 환경을 설정하는 데 도움이 됩니다.

## 사전 조건
<a name="studio-notebooks-emr-cluster-rbac-prereq"></a>

시작하기 전에 다음 사전 조건을 충족하는지 확인합니다.
+ Amazon EMR 버전 6.9 이상을 사용하세요.
+ **Studio Classic 사용자의 경우**: Studio Classic Jupyter 서버 애플리케이션 구성에서 JupyterLab 버전 3을 사용합니다. 이 버전은 런타임 역할을 사용하여 Amazon EMR 클러스터에 대한 Studio Classic 연결을 지원합니다.

  **Studio 사용자의 경우:** [SageMaker 배포 이미지](sagemaker-distribution.md) 버전 `1.10` 이상을 사용합니다.
+ 클러스터의 보안 구성에서 런타임 역할을 사용할 수 있도록 허용하세요. 자세한 내용은 [Amazon EMR 단계에 대한 런타임 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-steps-runtime-roles.html)을 참조하세요.
+ [Studio 또는 Studio Classic에서 Amazon EMR 클러스터에 연결할 수 있도록 지원되는 이미지 및 커널](studio-emr-user-guide.md#studio-notebooks-emr-cluster-connect-kernels)에 나열된 커널 중 하나를 사용하여 노트북을 생성하세요.
+ 런타임 역할을 구성하려면 [런타임 IAM 역할을 사용하도록 Studio 설정](#studio-notebooks-emr-cluster-iam)의 지침을 검토하세요.

## 교차 계정 연결 시나리오
<a name="studio-notebooks-emr-cluster-rbac-scen"></a>

런타임 역할 인증은 데이터가 Studio 계정 외부에 있는 경우 다양한 교차 계정 연결 시나리오를 지원합니다. 다음 이미지는 Studio와 데이터 계정 간에 Amazon EMR 클러스터, 데이터 및 Amazon EMR 런타임 실행 역할을 할당할 수 있는 세 가지 방법을 보여줍니다.

![\[런타임 IAM 역할 인증으로 지원되는 교차 계정 시나리오.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio-emr-rbac-scenarios.png)


옵션 1에서 Amazon EMR 클러스터 및 Amazon EMR 런타임 실행 역할은 Studio 계정과 별개의 데이터 계정에 있습니다. Studio 또는 Studio Classic 실행 역할에 Amazon EMR 액세스 역할(`Assumable role`이라고도 함)을 수임할 권한을 부여하는 별도의 Amazon EMR 액세스 역할 권한 정책을 정의합니다. 그러면 Amazon EMR 액세스 역할이 Studio 또는 Studio Classic 실행 역할을 대신하여 Amazon EMR API `GetClusterSessionCredentials`을 직접 호출하여 클러스터에 대한 액세스를 제공합니다.

옵션 2에서는 Amazon EMR 클러스터와 Amazon EMR 런타임 실행 역할이 Studio 계정에 있습니다. Studio 실행 역할에는 Amazon EMR API `GetClusterSessionCredentials`를 사용하여 클러스터에 액세스할 수 있는 권한이 있습니다. Amazon S3 버킷에 액세스하려면 Amazon EMR 런타임 실행 역할에 교차 계정 Amazon S3 버킷 액세스 권한을 부여하세요. Amazon S3 버킷 정책 내에서 이러한 권한을 부여하면 됩니다.

옵션 3에서 Amazon EMR 클러스터는 Studio 계정에 있고 Amazon EMR 런타임 실행 역할은 데이터 계정에 있습니다. Studio 또는 Studio Classic 실행 역할에는 Amazon EMR API `GetClusterSessionCredentials`을 사용하여 클러스터에 액세스할 수 있는 권한이 있습니다. Amazon EMR 런타임 실행 역할을 실행 역할 구성 JSON에 추가합니다. 그러면 클러스터를 선택할 때 UI에서 역할을 선택할 수 있습니다. 실행 역할 구성 JSON 파일을 설정하는 방법에 대한 자세한 내용은 [실행 역할을 Studio 또는 Studio Classic에 미리 로드](#studio-notebooks-emr-cluster-iam-preload) 섹션을 참조하세요.

## 런타임 IAM 역할을 사용하도록 Studio 설정
<a name="studio-notebooks-emr-cluster-iam"></a>

Amazon EMR 클러스터의 런타임 역할 인증을 설정하려면 필수 IAM 정책, 네트워크 및 사용성 개선을 구성하세요. 설정은 Amazon EMR 클러스터, Amazon EMR 런타임 실행 역할 또는 둘 다 Studio 계정 외부에 있는 경우 교차 계정 방식을 처리하는지 여부에 따라 달라집니다. 다음 섹션에서는 설치 정책, 교차 계정 간 트래픽을 허용하도록 네트워크를 구성하는 방법, Amazon EMR 연결을 자동화하도록 설정하는 로컬 구성 파일을 안내합니다.

### Amazon EMR 클러스터와 Studio가 동일한 계정에 있을 때 런타임 역할 인증을 구성합니다.
<a name="studio-notebooks-emr-cluster-iam-same"></a>

Amazon EMR 클러스터가 Studio 계정에 있는 경우 다음 단계를 완료하여 Studio 실행 정책에 필요한 권한을 추가합니다.

1. Amazon EMR 클러스터에 연결하는 데 필요한 IAM 정책을 추가합니다. 자세한 내용은 [Amazon EMR 클러스터 나열 구성](studio-notebooks-configure-discoverability-emr-cluster.md)을 참조하세요.

1. 정책에 지정된 하나 이상의 허용된 Amazon EMR 런타임 실행 역할을 전달할 때 Amazon EMR API `GetClusterSessionCredentials`을 직접 호출할 권한을 부여합니다.

1. (선택 사항) 사용자 지정 명명 규칙을 따르는 IAM 역할을 전달할 권한을 부여합니다.

1. (선택 사항) 특정 사용자 지정 문자열로 태그가 지정된 Amazon EMR 클러스터에 액세스할 수 있는 권한을 부여합니다.

1. Amazon EMR 클러스터에 연결할 때 사용할 역할을 선택할 수 있도록 IAM 역할을 미리 로드합니다. IAM 역할을 미리 로드하는 방법에 대한 자세한 내용은 [실행 역할을 Studio 또는 Studio Classic에 미리 로드](#studio-notebooks-emr-cluster-iam-preload) 섹션을 참조하세요.

다음 예시 정책은 모델링 및 훈련 그룹에 속하는 Amazon EMR 런타임 실행 역할이 `GetClusterSessionCredentials`을 직접 호출하도록 허용합니다. 또한 정책 소유자는 문자열 `modeling` 또는 `training` 태그가 지정된 Amazon EMR 클러스터에 액세스할 수 있습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "elasticmapreduce:GetClusterSessionCredentials",
            "Resource": "*",
            "Condition": {
                "ArnLike": {
                    "elasticmapreduce:ExecutionRoleArn": [
                        "arn:aws:iam::111122223333:role/emr-execution-role-ml-modeling*",
                        "arn:aws:iam::111122223333:role/emr-execution-role-ml-training*"
			]},
		"StringLike":{
                    "elasticmapreduce:ResourceTag/group": [
                        "*modeling*",
                        "*training*"
                    ]
                }
            }
        }
    ]
}
```

------

### 클러스터와 Studio가 서로 다른 계정에 있는 경우 런타임 역할 인증 구성
<a name="studio-notebooks-emr-cluster-iam-diff"></a>

Amazon EMR 클러스터가 Studio 계정에 없는 경우, SageMaker AI 실행 역할이 교차 계정 Amazon EMR 액세스 역할을 수임하도록 허용하면 클러스터에 연결할 수 있습니다. 교차 계정 구성을 설정하려면 다음 단계를 완료하세요.

1. 실행 역할이 Amazon EMR 액세스 역할을 수임할 수 있도록 SageMaker AI 실행 역할 권한 정책을 만듭니다. 다음은 정책의 예입니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowAssumeCrossAccountEMRAccessRole",
               "Effect": "Allow",
               "Action": "sts:AssumeRole",
               "Resource": "arn:aws:iam::111122223333:role/emr-access-role-name"
           }
       ]
   }
   ```

------

1. 신뢰 정책을 생성하여 Amazon EMR 액세스 역할을 수임하도록 신뢰할 수 있는 Studio 계정 ID를 지정합니다. 다음은 정책의 예입니다.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
           "Sid": "AllowCrossAccountSageMakerExecutionRoleToAssumeThisRole",
           "Effect": "Allow",
           "Principal": {
             "AWS": "arn:aws:iam::111122223333:role/studio_execution_role"
           },
           "Action": "sts:AssumeRole"
         }
       ]
   }
   ```

------

1. Amazon EMR 액세스 역할 권한 정책을 만들어 Amazon EMR 런타임 실행 역할에 클러스터에서 의도한 작업을 수행하는 데 필요한 권한을 부여합니다. 액세스 역할 권한 정책에 지정된 Amazon EMR 런타임 실행 역할을 사용하여 API `GetClusterSessionCredentials`을 직접 호출하도록 Amazon EMR 액세스 역할을 구성합니다. 다음은 정책의 예입니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowCallingEmrGetClusterSessionCredentialsAPI",
               "Effect": "Allow",
               "Action": "elasticmapreduce:GetClusterSessionCredentials",
               "Resource": "arn:aws:elasticmapreduce:us-east-1:111122223333:cluster/cluster-id",
               "Condition": {
                   "StringLike": {
                       "elasticmapreduce:ExecutionRoleArn": [
                           "arn:aws:iam::111122223333:role/emr-execution-role-name"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. 트래픽이 계정 간에 앞뒤로 이동할 수 있도록 교차 계정 네트워크를 설정하세요. 관련 지침은 *[Amazon EMR 클러스터에 대한 네트워크 액세스 구성](studio-notebooks-emr-networking.md)*를 참조하세요. 이 섹션에서 다루는 단계는 다음 작업을 완료하는 데 도움이 됩니다.

   1. Studio 계정과 Amazon EMR 계정을 VPC 피어링하여 연결을 설정합니다.

   1. 두 계정의 프라이빗 서브넷 라우팅 테이블에 경로를 수동으로 추가합니다. 이를 통해 Studio 계정에서 원격 계정의 프라이빗 서브넷으로 Amazon EMR 클러스터를 생성하고 연결할 수 있습니다.

   1. 아웃바운드 트래픽을 허용하도록 Studio 도메인에 연결된 보안 그룹과 Studio 인스턴스 보안 그룹의 인바운드 TCP 트래픽을 허용하도록 Amazon EMR 기본 노드의 보안 그룹을 설정합니다.

1. Amazon EMR 클러스터에 연결할 때 사용할 역할을 선택할 수 있도록 IAM 런타임 역할을 미리 로드합니다. IAM 역할을 미리 로드하는 방법에 대한 자세한 내용은 [실행 역할을 Studio 또는 Studio Classic에 미리 로드](#studio-notebooks-emr-cluster-iam-preload) 섹션을 참조하세요.

### Lake Formation 액세스 구성
<a name="studio-notebooks-emr-cluster-iam-lf"></a>

에서 관리하는 데이터 레이크에서 데이터에 액세스할 때 런타임 역할에 연결된 정책을 사용하여 테이블 수준 및 열 수준 액세스를 적용할 AWS Lake Formation수 있습니다. Lake Formation 액세스 권한을 구성하려면 [AWS Lake Formation과 Amazon EMR 통합](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-lake-formation.html)을 참조하세요.

### 실행 역할을 Studio 또는 Studio Classic에 미리 로드
<a name="studio-notebooks-emr-cluster-iam-preload"></a>

Amazon EMR 클러스터에 연결할 때 사용할 역할을 선택할 수 있도록 IAM 런타임 역할을 미리 로드할 수 있습니다. Studio의 JupyterLab 사용자는 SageMaker AI 콘솔 또는 제공된 스크립트를 사용할 수 있습니다.

------
#### [ Preload runtime roles in JupyterLab using the SageMaker AI console ]

SageMaker AI 콘솔을 사용하여 런타임 역할을 사용자 프로필 또는 도메인과 연결하는 방법:

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 SageMaker AI 콘솔로 이동합니다.

1. 왼쪽 탐색 창에서 **도메인**을 선택한 다음 업데이트된 권한이 있는 SageMaker AI 실행 역할을 사용하는 도메인을 선택합니다.

1. 
   + 도메인에 런타임 역할(및 교차 계정 사용 사례의 액세스 역할)을 추가하는 방법: **도메인 세부 정보** 페이지의 **앱 구성** 탭에서 **JupyterLab** 섹션으로 이동합니다.
   + 사용자 프로필에 런타임 역할(및 교차 계정 사용 사례의 액세스 역할)을 추가하는 방법: **도메인 세부 정보** 페이지에서 **사용자 프로필** 탭을 선택하고 업데이트된 권한이 있는 SageMaker AI 실행 역할을 사용하는 사용자 프로필을 선택합니다. **앱 구성** 탭에서 **JupyterLab** 섹션으로 이동합니다.

1. **편집**을 선택하고 액세스 역할(수임 가능한 역할) 및 EMR Serverless 런타임 실행 역할의 ARN을 추가합니다.

1. **제출**을 선택합니다.

다음에 Amazon EMR 서버에 연결할 때 드롭다운 메뉴에 런타임 역할이 표시되어 선택할 수 있습니다.

------
#### [ Preload runtime roles in JupyterLab using a Python script ]

권한을 업데이트한 SageMaker AI 실행 역할을 사용하여 스페이스에서 시작한 JupyterLab 애플리케이션의 터미널에서 다음 명령을 실행합니다. `domainID`, `user-profile-name`, `emr-accountID` 및 `EMRServiceRole`을 적절한 값으로 바꿉니다. 이 코드 조각은 교차 계정 사용 사례에서 SageMaker AI 도메인 내의 사용자 프로필 설정(`client.update_user_profile`)을 업데이트합니다. 구체적으로, Amazon EMR에 대한 서비스 역할을 설정합니다. 또한 JupyterLab 애플리케이션이 Amazon EMR 계정 내에서 Amazon EMR을 실행하기 위해 특정 IAM 역할(`AssumableRole` 또는 `AccessRole`)을 수임할 수 있도록 합니다.

또는 공간이 도메인 수준에서 실행 역할 세트를 사용하는 경우 `client.update_domain`을 사용하여 도메인 설정을 업데이트합니다.

```
import botocore.session
import json
sess = botocore.session.get_session()
client = sess.create_client('sagemaker')

client.update_user_profile(
DomainId="domainID", 
UserProfileName="user-profile-name",
UserSettings={
    'JupyterLabAppSettings': {
        'EmrSettings': {
            'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"],
            'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServiceRole", 
                             "arn:aws:iam::emr-accountID:role/AnotherServiceRole"]
        }
        
    }
})
resp = client.describe_user_profile(DomainId="domainID", UserProfileName=user-profile-name")

resp['CreationTime'] = str(resp['CreationTime'])
resp['LastModifiedTime'] = str(resp['LastModifiedTime'])
print(json.dumps(resp, indent=2))
```

------
#### [ Preload runtime roles in Studio Classic ]

`AccessRole`(`AssumableRole`)의 ARN을 SageMaker AI 실행 역할에 제공합니다. ARN은 시작 시 Jupyter 서버에서 로드됩니다. Studio에서 사용하는 실행 역할은 *신뢰하는 계정*에서 Amazon EMR 클러스터를 검색하고 연결하는 교차 계정 역할을 수임합니다.

수명 주기 구성(LCC) 스크립트를 사용하여 이 정보를 지정할 수 있습니다. LCC를 도메인 또는 특정 사용자 프로필에 연결할 수 있습니다. 사용하는 LCC 스크립트는 JupyterServer 구성이어야 합니다. LCC 스크립트를 만드는 방법에 대한 자세한 내용은 [Use Lifecycle Configurations with Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-lcc.html)을 참조하세요.

다음은 예제 LCC 스크립트입니다. 스크립트를 수정하려면 `AssumableRole` 및 `emr-account`를 각각 실제 값으로 바꿉니다. 교차 계정의 수는 5개로 제한됩니다.

다음 코드 조각은 Studio Classic 애플리케이션과 클러스터가 동일한 계정에 있는 경우 적용할 수 있는 예시 LCC bash 스크립트입니다.

```
#!/bin/bash

set -eux

FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE"
FILE_NAME="emr-configurations-DO_NOT_DELETE.json"
FILE="$FILE_DIRECTORY/$FILE_NAME"

mkdir -p $FILE_DIRECTORY

cat << 'EOF' > "$FILE"
{
    "emr-execution-role-arns":
    {
      "123456789012": [
          "arn:aws:iam::123456789012:role/emr-execution-role-1",
          "arn:aws:iam::123456789012:role/emr-execution-role-2"
      ]
    }
}
EOF
```

Studio Classic 애플리케이션과 클러스터가 서로 다른 계정에 있는 경우 클러스터를 사용할 수 있는 Amazon EMR 액세스 역할을 지정합니다. 다음 예시 정책에서 *123456789012*는 Amazon EMR 클러스터 계정 ID이고, *212121212121*과 *434343434343*은 허용된 Amazon EMR 액세스 역할에 대한 ARN입니다.

```
#!/bin/bash

set -eux

FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE"
FILE_NAME="emr-configurations-DO_NOT_DELETE.json"
FILE="$FILE_DIRECTORY/$FILE_NAME"

mkdir -p $FILE_DIRECTORY

cat << 'EOF' > "$FILE"
{
    "emr-execution-role-arns":
    {
      "123456789012": [
          "arn:aws:iam::212121212121:role/emr-execution-role-1",
          "arn:aws:iam::434343434343:role/emr-execution-role-2"
      ]
    }
}
EOF

# add your cross-account EMR access role
FILE_DIRECTORY="/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE"
FILE_NAME="emr-discovery-iam-role-arns-DO_NOT_DELETE.json"
FILE="$FILE_DIRECTORY/$FILE_NAME"

mkdir -p $FILE_DIRECTORY

cat << 'EOF' > "$FILE"
{
    "123456789012": "arn:aws:iam::123456789012:role/cross-account-emr-access-role"
}
EOF
```

------

# 참조 정책
<a name="studio-set-up-emr-permissions-reference"></a>
+ **Amazon EMR 정책 나열**: 이 정책은 다음 작업을 수행하도록 허용합니다.
  + `AllowPresignedUrl`은 Studio 내에서 Spark UI에 액세스하기 위해 미리 서명된 URL을 생성하도록 허용합니다.
  + `AllowClusterDiscovery` 및 `AllowClusterDetailsDiscovery`는 제공된 리전 및 계정에서 Amazon EMR 클러스터를 나열하고 설명하도록 허용합니다.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AllowPresignedUrl",
              "Effect": "Allow",
              "Action": [
                  "elasticmapreduce:CreatePersistentAppUI",
                  "elasticmapreduce:DescribePersistentAppUI",
                  "elasticmapreduce:GetPersistentAppUIPresignedURL",
                  "elasticmapreduce:GetOnClusterAppUIPresignedURL"
              ],
              "Resource": [
                  "arn:aws:elasticmapreduce:us-east-1:111122223333:cluster/*"
              ]
          },
          {
              "Sid": "AllowClusterDetailsDiscovery",
              "Effect": "Allow",
              "Action": [
                  "elasticmapreduce:DescribeCluster",
                  "elasticmapreduce:ListInstances",
                  "elasticmapreduce:ListInstanceGroups",
                  "elasticmapreduce:DescribeSecurityConfiguration"
              ],
              "Resource": [
                  "arn:aws:elasticmapreduce:us-east-1:111122223333:cluster/*"
              ]
          },
          {
              "Sid": "AllowClusterDiscovery",
              "Effect": "Allow",
              "Action": [
                  "elasticmapreduce:ListClusters"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------
+ **Amazon EMR 클러스터 정책 만들기**: 이 정책은 다음 작업을 수행하도록 허용합니다.
  + `AllowEMRTemplateDiscovery`는 Service Catalog에서 Amazon EMR 템플릿을 검색하도록 허용합니다. Studio 및 Studio Classic은 이를 사용하여 사용 가능한 템플릿을 표시합니다.
  + `AllowSagemakerProjectManagement`는 [SageMaker AI 프로젝트는 무엇인가요?](sagemaker-projects-whatis.md) 만들기를 허용합니다. Studio 또는 Studio Classic에서에 대한 액세스 AWS Service Catalog 는를 통해 관리됩니다[SageMaker AI 프로젝트는 무엇인가요?](sagemaker-projects-whatis.md).

  제공된 JSON에 정의된 IAM 정책은 이러한 권한을 부여합니다. 문 목록을 역할의 인라인 정책에 복사하기 전에 *region*, *accountID*를 실제 리전과 AWS 계정의 ID 값으로 바꿉니다.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AllowEMRTemplateDiscovery",
              "Effect": "Allow",
              "Action": [
                  "servicecatalog:SearchProducts"
              ],
              "Resource": "*"
          },
          {
              "Sid": "AllowSagemakerProjectManagement",
              "Effect": "Allow",
              "Action": [
                  "sagemaker:CreateProject",
                  "sagemaker:DeleteProject"
              ],
              "Resource": "arn:aws:sagemaker:us-east-1:111122223333:project/*"
          }
      ]
  }
  ```

------
+ **도메인, 사용자 프로필 및 스페이스 업데이트 작업 정책**: 다음 정책은 지정된 리전 및 AWS 계정 내의 SageMaker AI 도메인, 사용자 프로필 및 스페이스를 업데이트할 수 있는 권한을 부여합니다.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "SageMakerUpdateResourcesPolicy",
              "Effect": "Allow",
              "Action": [
                  "sagemaker:UpdateDomain",
                  "sagemaker:UpdateUserprofile",
                  "sagemaker:UpdateSpace"
              ],
              "Resource": [
                  "arn:aws:sagemaker:us-east-1:111122223333:domain/*",
                  "arn:aws:sagemaker:us-east-1:111122223333:user-profile/*"
              ]
          }
      ]
  }
  ```

------

# 사용 설명서
<a name="studio-emr-user-guide"></a>

이 섹션에서는 데이터 과학자와 데이터 엔지니어가 Studio 또는 Studio Classic에서 Amazon EMR 클러스터를 시작, 검색, 연결 또는 종료하는 방법을 다룹니다.

사용자가 클러스터를 나열하거나 시작하려면 먼저 관리자가 Studio 환경에서 필요한 설정을 구성해야 합니다. 관리자가 Amazon EMR 클러스터의 자체 프로비저닝 및 나열을 허용하도록 Studio 환경을 구성하는 방법에 대한 자세한 내용은 [관리자 안내서](studio-emr-admin-guide.md) 섹션을 참조하세요.

**Topics**
+ [Studio 또는 Studio Classic에서 Amazon EMR 클러스터에 연결할 수 있도록 지원되는 이미지 및 커널](#studio-notebooks-emr-cluster-connect-kernels)
+ [사용자 고유 이미지 가져오기](#studio-notebooks-emr-byoi)
+ [Studio 또는 Studio Classic에서 Amazon EMR 클러스터 시작하기](studio-notebooks-launch-emr-cluster-from-template.md)
+ [Studio 또는 Studio Classic에서 Amazon EMR 클러스터 나열](discover-emr-clusters.md)
+ [SageMaker Studio 또는 Studio Classic에서 Amazon EMR 클러스터에 연결](connect-emr-clusters.md)
+ [Studio에서 Amazon EMR 클러스터 종료](terminate-emr-clusters.md)
+ [Studio 또는 Studio Classic에서 Spark UI 액세스](studio-notebooks-access-spark-ui.md)

## Studio 또는 Studio Classic에서 Amazon EMR 클러스터에 연결할 수 있도록 지원되는 이미지 및 커널
<a name="studio-notebooks-emr-cluster-connect-kernels"></a>

다음 이미지와 커널에는 [sagemaker-studio-analytics-extension](https://pypi.org/project/sagemaker-studio-analytics-extension/)이 함께 제공되는데 이는 [SparkMagic](https://github.com/jupyter-incubator/sparkmagic) 라이브러리를 통해 [Apache Livy](https://livy.apache.org/)를 사용하여 원격 Spark(Amazon EMR) 클러스터에 연결하는 JupyterLab 확장입니다.
+ **Studio 사용자의 경우:** SageMaker Distribution은 JupyterLab 노트북 인스턴스의 기본 이미지로 사용되는 데이터 과학용 Docker 환경입니다. [SageMaker AI Distribution](https://github.com/aws/sagemaker-distribution)의 모든 버전에는 `sagemaker-studio-analytics-extension`이 사전 설치된 상태로 제공됩니다.
+ **Studio Classic 사용자의 경우:** 다음 이미지가 `sagemaker-studio-analytics-extension`과 함께 사전 설치됩니다.
  + DataScience – Python 3 커널
  + DataScience 2.0 – Python 3 커널
  + DataScience 3.0 – Python 3 커널
  + SparkAnalytics 1.0 – SparkMagic 및 PySpark 커널
  + SparkAnalytics 2.0 – SparkMagic 및 PySpark 커널
  + SparkMagic – SparkMagic 및 PySpark 커널
  + PyTorch 1.8 – Python 3 커널
  + TensorFlow 2.6 – Python 3 커널
  + TensorFlow 2.11 – Python 3 커널

다른 내장 이미지 또는 자체 이미지를 사용하여 Amazon EMR 클러스터에 연결하려면 [사용자 고유 이미지 가져오기](#studio-notebooks-emr-byoi)의 지침을 따릅니다.

## 사용자 고유 이미지 가져오기
<a name="studio-notebooks-emr-byoi"></a>

Studio 또는 Studio Classic에서 사용자 자체 이미지를 가져와 Amazon EMR 클러스터에 노트북을 연결하려면 커널에 다음 [sagemaker-studio-analytics-extension](https://pypi.org/project/sagemaker-studio-analytics-extension/) 확장을 설치합니다. 이는 [SparkMagic](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-magics.html) 라이브러리를 통해 Spark(Amazon EMR) 클러스터에 SageMaker Studio 또는 Studio Classic 노트북을 연결할 수 있도록 지원합니다.

```
pip install sparkmagic
pip install sagemaker-studio-sparkmagic-lib
pip install sagemaker-studio-analytics-extension
```

또한 [Kerberos](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html) 인증을 사용하여 Amazon EMR에 연결하려면 kinit 클라이언트를 설치해야 합니다. OS에 따라 kinit 클라이언트를 설치하는 명령이 다를 수 있습니다. Ubuntu(Debian 기반) 이미지를 가져오려면 `apt-get install -y -qq krb5-user` 명령을 사용합니다.

SageMaker Studio 또는 Studio Classic에서 사용자 자체 이미지를 가져오는 방법에 대한 자세한 정보는 [Bring your own SageMaker image](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html)를 참조하세요.

# Studio 또는 Studio Classic에서 Amazon EMR 클러스터 시작하기
<a name="studio-notebooks-launch-emr-cluster-from-template"></a>

데이터 과학자와 데이터 엔지니어는 관리자가 설정한 CloudFormation 템플릿을 사용하여 Studio 또는 Studio Classic에서 Amazon EMR 클러스터를 자체 프로비저닝할 수 있습니다. 사용자가 클러스터를 시작하려면 먼저 관리자가 Studio 환경에서 필요한 설정을 구성해야 합니다. 관리자가 Amazon EMR 클러스터의 자체 프로비저닝을 허용하도록 Studio 환경을 구성하는 방법에 대한 자세한 내용은 [Service Catalog에서 Amazon EMR CloudFormation 템플릿 구성](studio-notebooks-set-up-emr-templates.md) 섹션을 참조하세요.

Studio 또는 Studio Classic에서 새 Amazon EMR 클러스터를 프로비저닝하는 방법:

1. Studio 또는 Studio Classic UI의 왼쪽 패널에 있는 왼쪽 탐색 메뉴에서 **데이터** 노드를 선택합니다. **Amazon EMR 클러스터**로 이동합니다. 그러면 Studio 또는 Studio Classic에서 액세스할 수 있는 Amazon EMR 클러스터가 나열된 페이지가 열립니다.

1. 오른쪽 상단 모서리에서 **만들기** 버튼을 선택합니다. 그러면 사용 가능한 클러스터 템플릿이 나열된 새 모달이 열립니다.

1. 템플릿 이름을 선택하여 클러스터 템플릿을 선택한 후, **다음**을 선택합니다.

1. 클러스터 이름, 관리자가 설정한 구성 가능한 특정 파라미터 등 클러스터의 세부 정보를 입력한 다음 **클러스터 만들기**를 선택합니다. 클러스터를 생성하는 데 몇 분 정도 걸릴 수 있습니다.  
![\[Studio 또는 Studio Classic에서 Amazon EMR 클러스터를 만드는 양식\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-cluster-creation.png)

클러스터가 프로비저닝되면 Studio 또는 Studio Classic UI에 *클러스터가 성공적으로 만들어졌습니다*라는 메시지가 표시됩니다.

클러스터에 연결하려면 [SageMaker Studio 또는 Studio Classic에서 Amazon EMR 클러스터에 연결](connect-emr-clusters.md) 섹션을 참조하세요.

# Studio 또는 Studio Classic에서 Amazon EMR 클러스터 나열
<a name="discover-emr-clusters"></a>

데이터 과학자와 데이터 엔지니어는 Studio에서 Amazon EMR 클러스터를 검색, 연결 및 관리할 수 있습니다. Amazon EMR 클러스터는 Studio와 동일한 AWS 계정 또는 다른 AWS 계정에 있을 수 있습니다.

사용자가 클러스터를 나열하거나 클러스터에 연결하려면 먼저 관리자가 Studio 환경에서 필요한 설정을 구성해야 합니다. 관리자가 실행 중인 Amazon EMR 클러스터의 검색을 허용하도록 Studio 환경을 구성하는 방법에 대한 자세한 내용은 [관리자 안내서](studio-emr-admin-guide.md) 섹션을 참조하세요. 관리자가 [Amazon EMR 클러스터의 교차 계정 검색을 구성](studio-notebooks-configure-discoverability-emr-cluster.md)한 경우 통합된 클러스터 목록을 볼 수 있습니다. 목록에는 Studio에서 사용하는 AWS 계정의 클러스터와 액세스 권한이 부여된 원격 계정의 클러스터가 포함됩니다.

Studio 내에서 사용 가능한 Amazon EMR 클러스터 목록을 확인하는 방법:

1. Studio UI의 왼쪽 탐색 메뉴에서 아래로 스크롤하여 **EMR 클러스터**로 이동합니다. 그러면 액세스할 수 있는 Amazon EMR 클러스터가 나열된 페이지가 열립니다.

   목록에는 **부트스트래핑**, **시작 중**, **실행 중**, **대기 중** 상태의 클러스터가 표시됩니다. 필터 아이콘을 사용하여 현재 상태별로 표시된 클러스터의 범위를 좁힐 수 있습니다.

1. 연결하려는 특정 **실행 중** 클러스터를 선택한 다음 [SageMaker Studio 또는 Studio Classic에서 Amazon EMR 클러스터에 연결](connect-emr-clusters.md) 섹션을 참조하세요.

# SageMaker Studio 또는 Studio Classic에서 Amazon EMR 클러스터에 연결
<a name="connect-emr-clusters"></a>

데이터 과학자와 데이터 엔지니어는 Studio 사용자 인터페이스에서 직접 Amazon EMR 클러스터를 검색한 다음 연결할 수 있습니다. 시작하기 전에 [4단계: Studio에서 Amazon EMR 클러스터 나열 및 시작을 활성화하는 권한 설정](studio-notebooks-set-up-emr-templates.md#studio-emr-permissions) 섹션에 설명된 대로 필요한 권한을 구성했는지 확인합니다. 이러한 권한은 Studio에 클러스터에 대한 만들기, 시작, 보기, 액세스 및 종료 권한을 부여합니다.

Amazon EMR 클러스터를 Studio UI에서 직접 새 JupyterLab 노트북에 연결하거나 실행 중인 JupyterLab 애플리케이션의 노트북에서 연결을 시작하도록 선택할 수 있습니다.

**중요**  
프라이빗 공간에서 시작된 JupyterLab 및 Studio Classic 애플리케이션용 Amazon EMR 클러스터만 검색하고 연결할 수 있습니다. Amazon EMR 클러스터가 Studio 환경과 동일한 AWS 리전에 있는지 확인합니다. JupyterLab 공간은 SageMaker 배포 이미지 버전 `1.10` 이상을 사용해야 합니다.

## Studio UI를 사용하여 Amazon EMR 클러스터에 연결
<a name="connect-emr-clusters-ui-options"></a>

Studio 또는 Studio Classic UI를 사용하여 클러스터에 연결하려면 [Studio 또는 Studio Classic에서 Amazon EMR 클러스터 나열](discover-emr-clusters.md)에서 액세스한 클러스터 목록이나 SageMaker Studio 또는 Studio Classic의 노트북에서 연결을 시작할 수 있습니다.

**Studio UI에서 Amazon EMR 클러스터를 새 JupyterLab 노트북에 연결하는 방법:**

1. Studio UI의 왼쪽 패널에 있는 왼쪽 탐색 메뉴에서 **데이터** 노드를 선택합니다. **Amazon EMR 애플리케이션 및 클러스터**로 이동합니다. 그러면 Studio의 **Amazon EMR 클러스터** 탭에서 액세스할 수 있는 Amazon EMR 클러스터가 나열된 페이지가 열립니다.
**참고**  
사용자 또는 관리자가 Amazon EMR 클러스터에 대한 교차 계정 액세스를 허용하도록 권한을 구성한 경우 Studio에 대한 액세스 권한을 부여한 모든 계정의 통합 클러스터 목록을 볼 수 있습니다.

1. 새 노트북에 연결할 Amazon EMR 클러스터를 선택한 다음 **노트북에 연결**을 선택합니다. 그러면 JupyterLab 공간 목록이 표시된 모달 창이 열립니다.

1. 
   + JupyterLab 애플리케이션을 시작할 공간을 선택한 다음 **노트북 열기**를 선택합니다. 이렇게 하면 선택한 공간에서 JupyterLab 애플리케이션이 시작되고 새 노트북이 열립니다.
**참고**  
Studio Classic 사용자는 이미지와 커널을 선택해야 합니다. 지원되는 이미지 목록은 [Studio 또는 Studio Classic에서 Amazon EMR 클러스터에 연결할 수 있도록 지원되는 이미지 및 커널](studio-emr-user-guide.md#studio-notebooks-emr-cluster-connect-kernels) 또는 [사용자 고유 이미지 가져오기](studio-emr-user-guide.md#studio-notebooks-emr-byoi)를 참조하세요.
   + 또는 모달 창 상단의 **새 공간 만들기** 버튼을 선택하여 새 프라이빗 공간을 만들 수 있습니다. 공간 이름을 입력한 다음 **공간 만들기 및 노트북 열기**를 선택합니다. 이렇게 하면 기본 인스턴스 유형과 사용 가능한 최신 SageMaker 배포 이미지가 있는 프라이빗 공간이 만들어지고 JupyterLab 애플리케이션이 시작되며 새 노트북이 열립니다.

1. 선택한 클러스터가 Kerberos, LDAP 또는 [런타임 역할]() 인증을 사용하지 않는 경우 Studio는 자격 증명 유형을 선택하라는 메시지를 표시합니다. **Http 기본 인증** 또는 **자격 증명 없음** 중에서 선택한 다음 해당하는 경우 자격 증명을 입력합니다.

   선택한 클러스터가 런타임 역할을 지원하는 경우 Amazon EMR 클러스터가 작업 실행을 위해 수임할 수 있는 IAM 역할의 이름을 선택합니다.
**중요**  
JupyterLab 노트북을 런타임 역할을 지원하는 Amazon EMR 클러스터에 성공적으로 연결하려면 먼저 [Studio에서 Amazon EMR 클러스터 액세스를 위한 IAM 런타임 역할 구성](studio-notebooks-emr-cluster-rbac.md)에 설명된 대로 런타임 역할 목록을 도메인 또는 사용자 프로필과 연결해야 합니다. 이 단계를 완료하지 않으면 연결을 설정할 수 없습니다.

   선택하면 연결 명령은 노트북의 첫 번째 셀을 채우고 Amazon EMR 클러스터와의 연결을 시작합니다.

   연결에 성공하면 Spark 애플리케이션의 연결과 시작을 확인하는 메시지가 나타납니다.

**아니면 JupyterLab 또는 Studio Classic 노트북에서 클러스터에 연결할 수도 있습니다.**

1. 노트북 상단에서 **클러스터** 버튼을 선택합니다. 그러면 액세스할 수 있는 `Running` 상태의 Amazon EMR 클러스터가 나열된 모달 창이 열립니다. **Amazon EMR 클러스터** 탭에서 `Running` Amazon EMR 클러스터를 볼 수 있습니다.
**참고**  
Studio Classic 사용자의 경우 **클러스터**는 [Studio 또는 Studio Classic에서 Amazon EMR 클러스터에 연결할 수 있도록 지원되는 이미지 및 커널](studio-emr-user-guide.md#studio-notebooks-emr-cluster-connect-kernels) 또는 [사용자 고유 이미지 가져오기](studio-emr-user-guide.md#studio-notebooks-emr-byoi)에서 커널을 사용하는 경우에만 표시됩니다. 노트북 상단에 **클러스터**가 보이지 않는 경우 관리자가 [클러스터 검색 가능성을 구성](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-notebooks-configure-discoverability-emr-cluster.html)했는지 확인하고 지원되는 커널로 전환합니다.

1. 연결할 클러스터를 선택한 다음 **연결**을 선택합니다.

1. [런타임 IAM 역할](studio-notebooks-emr-cluster-rbac.md)을 지원하도록 Amazon EMR 클러스터를 구성한 경우 **Amazon EMR 실행 역할** 드롭다운 메뉴에서 역할을 선택할 수 있습니다.
**중요**  
JupyterLab 노트북을 런타임 역할을 지원하는 Amazon EMR 클러스터에 성공적으로 연결하려면 먼저 [Studio에서 Amazon EMR 클러스터 액세스를 위한 IAM 런타임 역할 구성](studio-notebooks-emr-cluster-rbac.md)에 설명된 대로 런타임 역할 목록을 도메인 또는 사용자 프로필과 연결해야 합니다. 이 단계를 완료하지 않으면 연결을 설정할 수 없습니다.

   아니면 선택한 클러스터가 Kerberos, LDAP 또는 런타임 역할 인증을 사용하지 않는 경우 Studio 또는 Studio Classic은 자격 증명 유형을 선택하라는 메시지를 표시합니다. **HTTP 기본 인증** 또는 **자격 증명 없음**을 선택할 수 있습니다.

1. Studio는 활성 셀에 코드 블록을 추가한 다음 실행하여 연결을 설정합니다. 이 셀에는 인증 유형에 따라 노트북을 애플리케이션에 연결하는 연결 매직 명령이 포함되어 있습니다.

   연결에 성공하면 Spark 애플리케이션의 연결과 시작을 확인하는 메시지가 나타납니다.

## 연결 명령을 사용하여 Amazon EMR 클러스터에 연결
<a name="connect-emr-clusters-manually"></a>

Amazon EMR 클러스터에 대한 연결을 설정하려면 노트북 셀 내에서 연결 명령을 실행할 수 있습니다.

연결을 설정할 때 [Kerberos](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html), [Lightweight Directory Access Protocol(LDAP)](https://docs.aws.amazon.com/) 또는 [런타임 IAM 역할](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-notebooks-emr-cluster-rbac.html) 인증을 사용하여 인증할 수 있습니다. 선택하는 인증 방법은 클러스터 구성에 따라 달라집니다.

[Access Apache Livy using a Network Load Balancer on a Kerberos-enabled Amazon EMR cluster](https://aws.amazon.com/blogs/big-data/access-apache-livy-using-a-network-load-balancer-on-a-kerberos-enabled-amazon-emr-cluster/) 예시를 참조하여 Kerberos 인증을 사용하는 Amazon EMR 클러스터를 설정할 수 있습니다. 또는 [aws-samples/sagemaker-studio-emr](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/getting_started) GitHub 리포지토리에서 Kerberos 또는 LDAP 인증을 사용하는 CloudFormation 예시 템플릿을 살펴볼 수도 있습니다.

관리자가 교차 계정 액세스를 활성화한 경우 Studio Classic 애플리케이션과 클러스터가 동일한 계정에 상주하든 다른 AWS 계정에 상주하든 관계없이 Studio Classic 노트북에서 Amazon EMR 클러스터에 연결할 수 있습니다.

다음 각 인증 유형의 경우 지정된 명령을 사용하여 Studio 또는 Studio Classic 노트북에서 클러스터에 연결합니다.
+ **Kerberos**

  교차 계정 Amazon EMR 액세스가 필요한 경우 `--assumable-role-arn` 인수를 추가하세요. HTTPS를 사용하여 클러스터에 연결하는 경우 `--verify-certificate` 인수를 추가하세요.

  ```
  %load_ext sagemaker_studio_analytics_extension.magics
  %sm_analytics emr connect --cluster-id cluster_id \
  --auth-type Kerberos --language python 
  [--assumable-role-arn EMR_access_role_ARN ] 
  [--verify-certificate /home/user/certificateKey.pem]
  ```
+ **LDAP**

  교차 계정 Amazon EMR 액세스가 필요한 경우 `--assumable-role-arn` 인수를 추가하세요. HTTPS를 사용하여 클러스터에 연결하는 경우 `--verify-certificate` 인수를 추가하세요.

  ```
  %load_ext sagemaker_studio_analytics_extension.magics
  %sm_analytics emr connect --cluster-id cluster_id \
  --auth-type Basic_Access --language python 
  [--assumable-role-arn EMR_access_role_ARN ]
  [--verify-certificate /home/user/certificateKey.pem]
  ```
+ **NoAuth**

  교차 계정 Amazon EMR 액세스가 필요한 경우 `--assumable-role-arn` 인수를 추가하세요. HTTPS를 사용하여 클러스터에 연결하는 경우 `--verify-certificate` 인수를 추가하세요.

  ```
  %load_ext sagemaker_studio_analytics_extension.magics
  %sm_analytics emr connect --cluster-id cluster_id \
  --auth-type None --language python
  [--assumable-role-arn EMR_access_role_ARN ]
  [--verify-certificate /home/user/certificateKey.pem]
  ```
+ **런타임 IAM 역할**

  교차 계정 Amazon EMR 액세스가 필요한 경우 `--assumable-role-arn` 인수를 추가하세요. HTTPS를 사용하여 클러스터에 연결하는 경우 `--verify-certificate` 인수를 추가하세요.

  런타임 IAM 역할을 사용하여 Amazon EMR 클러스터에 연결하는 방법에 대한 자세한 내용은 [Studio에서 Amazon EMR 클러스터 액세스를 위한 IAM 런타임 역할 구성](studio-notebooks-emr-cluster-rbac.md) 섹션을 참조하세요.

  ```
  %load_ext sagemaker_studio_analytics_extension.magics
  %sm_analytics emr connect --cluster-id cluster_id \
  --auth-type Basic_Access \
  --emr-execution-role-arn arn:aws:iam::studio_account_id:role/emr-execution-role-name
  [--assumable-role-arn EMR_access_role_ARN]
  [--verify-certificate /home/user/certificateKey.pem]
  ```

## HTTPS를 통해 Amazon EMR 클러스터에 연결
<a name="connect-emr-clusters-ssl"></a>

전송 암호화를 활성화한 상태로 Amazon EMR 클러스터를 구성하고 HTTPS용 Apache Livy 서버를 구성하였으며 Studio 또는 Studio Classic이 HTTPS를 사용하여 Amazon EMR과 통신하도록 하려면 Studio가 인증서 키에 액세스하도록 구성해야 합니다.

자체 서명 또는 로컬 인증 기관(CA) 서명 인증서의 경우 다음 두 단계로 이를 수행할 수 있습니다.

1. 다음 옵션 중 하나를 사용하여 로컬 파일 시스템에 인증서의 PEM 파일을 다운로드합니다.
   + Jupyter에 내장된 파일 업로드 기능.
   + 노트북 셀.
   + (Studio Classic 사용자만 해당) 수명 주기 구성(LCC) 스크립트입니다.

     LCC 스크립트 사용 방법에 대한 자세한 내용은 [수명 주기 구성 스크립트를 사용한 노트북 인스턴스 사용자 지정](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html)을 참조하세요.

1. 연결 명령의 `--verify-certificate` 인수에 인증서 경로를 제공하여 인증서의 검증을 활성화하세요.

   ```
   %sm_analytics emr connect --cluster-id cluster_id \
   --verify-certificate /home/user/certificateKey.pem ...
   ```

퍼블릭 CA에서 발급한 인증서의 경우 `--verify-certificate` 파라미터를 `true`로 설정하여 인증서 검증을 설정합니다.

또는 `--verify-certificate` 매개변수를 `false`로 설정하여 인증서 검증을 비활성화할 수 있습니다.

Amazon EMR 클러스터에 사용할 수 있는 연결 명령 목록은 [연결 명령을 사용하여 Amazon EMR 클러스터에 연결](#connect-emr-clusters-manually)에서 확인할 수 있습니다.

# Studio에서 Amazon EMR 클러스터 종료
<a name="terminate-emr-clusters"></a>

다음 절차에서는 Studio 또는 Studio Classic 노트북에서 Amazon EMR 클러스터를 종료하는 방법을 보여줍니다.

**`Running` 상태의 클러스터를 종료하려면 사용 가능한 Amazon EMR 클러스터 목록으로 이동합니다.**

1. Studio UI에서 왼쪽 탐색 메뉴의 **데이터** 노드까지 아래로 스크롤합니다.

1. **EMR 클러스터** 노드로 이동합니다. 그러면 액세스할 수 있는 Amazon EMR 클러스터가 나열된 페이지가 열립니다.

1. 종료하려는 클러스터의 이름을 선택한 다음 **종료**를 선택합니다.

1. 그러면 클러스터에서 대기 중인 작업 또는 데이터가 종료 후 영구적으로 손실된다는 사실을 알리는 확인 창이 열립니다. **종료**를 다시 선택하여 확인합니다.

# Studio 또는 Studio Classic에서 Spark UI 액세스
<a name="studio-notebooks-access-spark-ui"></a>

다음 섹션에서는 SageMaker AI Studio 또는 Studio Classic 노트북에서 Spark UI에 액세스하는 방법에 대한 지침을 제공합니다. Spark UI를 사용하면 Amazon EMR에서 실행하도록 제출한 Spark 작업을 Studio 또는 Studio Classic 노트북에서 모니터링하고 디버깅할 수 있습니다. SSH 터널링 및 미리 서명된 URL은 Spark UI에 액세스하는 두 가지 방법입니다.

## Spark UI에 액세스하기 위한 SSH 터널링 설정하기
<a name="studio-notebooks-emr-ssh-tunneling"></a>

Spark UI에 액세스하기 위한 SSH 터널링을 설정하려면 이 섹션의 두 옵션 중 하나를 따릅니다.

SSH 터널링 설정 옵션:
+ [옵션 1: 로컬 포트 전달을 사용하여 마스터 노드에 SSH 터널 설정](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-ssh-tunnel-local.html)
+ [옵션 2, 파트 1: 동적 포트 전달을 사용하여 마스터 노드에 SSH 터널 설정](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-ssh-tunnel.html)

  [옵션 2, 파트 2: 마스터 노드에 호스팅된 웹 사이트를 표시하도록 프록시 설정 구성](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-proxy.html)

Amazon EMR에서 웹 인터페이스를 보는 방법에 대한 자세한 내용은 [View web interfaces hosted on Amazon EMR Clusters](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-web-interfaces.html)를 참조하세요. Amazon EMR 콘솔을 방문하여 Spark UI에 액세스할 수도 있습니다.

**참고**  
미리 서명된 URL을 사용할 수 없는 경우에도 SSH 터널을 설정할 수 있습니다.

## 미리 서명된 URL
<a name="studio-notebooks-emr-spark-ui-presigned-urls"></a>

SageMaker Studio 또는 Studio Classic 노트북에서 Amazon EMR의 Spark UI에 액세스할 수 있는 원클릭 URL을 만들려면 다음 IAM 권한을 활성화해야 합니다. 다음 중 해당하는 옵션을 선택합니다.
+ **SageMaker Studio 노트북과 동일한 계정에 있는 Amazon EMR 클러스터의 경우: SageMaker Studio 또는 Studio Classic IAM 실행 역할에 다음 권한을 추가합니다. ** 
+ **다른 계정(SageMaker Studio 또는 Studio Classic 노트북 아님)에 있는 Amazon EMR 클러스터의 경우: [Studio 또는 Studio Classic에서 Amazon EMR 클러스터 나열](discover-emr-clusters.md)용으로 만든 교차 계정 역할에 다음 권한을 추가합니다.**

**참고**  
다음 리전은 콘솔에서 미리 서명된 URL에 액세스할 수 있습니다.  
미국 동부(버지니아 북부) 리전
미국 서부(캘리포니아 북부)
캐나다(중부) 리전
Europe (Frankfurt) Region
Europe (Stockholm) Region
유럽(아일랜드) 리전
Europe (London) Region
Europe (Paris) Region
아시아 태평양(도쿄) 리전
Asia Pacific (Seoul) Region
아시아 태평양(시드니) 리전
Asia Pacific (Mumbai) Region
Asia Pacific (Singapore) Region
남아메리카(상파울루)

 다음 정책은 실행 역할에 사전 서명된 URL 액세스를 제공합니다.

```
{
        "Sid": "AllowPresignedUrl",
        "Effect": "Allow",
        "Action": [
            "elasticmapreduce:DescribeCluster",
            "elasticmapreduce:ListInstanceGroups",
            "elasticmapreduce:CreatePersistentAppUI",
            "elasticmapreduce:DescribePersistentAppUI",
            "elasticmapreduce:GetPersistentAppUIPresignedURL",
            "elasticmapreduce:GetOnClusterAppUIPresignedURL"
        ],
        "Resource": [
            "arn:aws:elasticmapreduce:region:account-id:cluster/*"
        ]
}
```

# 블로그 및 백서
<a name="studio-notebooks-emr-resources"></a>

다음 블로그는 영화 리뷰를 위한 감정 예측 사례 연구를 사용하여 전체 기계 학습 워크플로를 실행하는 프로세스를 설명합니다. 여기에는 데이터 준비, Spark 작업 모니터링, Studio 또는 Studio Classic 노트북에서 직접 예측을 가져올 수 있도록 ML 모델을 훈련 및 배포하는 작업이 포함됩니다.
+ [Create and manage Amazon EMR clusters from SageMaker Studio or Studio Classic to run interactive Spark and ML workloads](https://aws.amazon.com/blogs/machine-learning/part-1-create-and-manage-amazon-emr-clusters-from-sagemaker-studio-to-run-interactive-spark-and-ml-workloads/).
+ SageMaker Studio 또는 Studio Classic과 Amazon EMR 클러스터가 별도의 AWS 계정에 배포되는 교차 계정 구성으로 사용 사례를 확장하려면 [ SageMaker Studio 또는 Studio Classic에서 Amazon EMR 클러스터 생성 및 관리를 참조하여 대화형 Spark 및 ML 워크로드 실행 - 2부를](https://aws.amazon.com/blogs/machine-learning/part-2-create-and-manage-amazon-emr-clusters-from-sagemaker-studio-to-run-interactive-spark-and-ml-workloads/) 참조하세요.

또한 다음 섹션도 참조하세요.
+ [Access Apache Livy using a Network Load Balancer on a Kerberos-enabled Amazon EMR cluster](https://aws.amazon.com/blogs/big-data/access-apache-livy-using-a-network-load-balancer-on-a-kerberos-enabled-amazon-emr-cluster/) 구성 안내서
+ AWS [SageMaker Studio 또는 Studio Classic 모범 사례에](https://docs.aws.amazon.com/whitepapers/latest/sagemaker-studio-admin-best-practices/sagemaker-studio-admin-best-practices.html) 대한 백서.

# 문제 해결
<a name="studio-notebooks-emr-troubleshooting"></a>

Studio 또는 Studio Classic 노트북의 Amazon EMR 클러스터를 사용할 때 연결 또는 사용 프로세스 중에 다양한 잠재적 문제 또는 문제가 발생할 수 있습니다. 이러한 문제와 오류를 해결하는 데 도움이 되도록 이 섹션에서는 발생할 수 있는 일반적인 문제에 대한 지침을 제공합니다.

다음은 Studio 또는 Studio Classic 노트북에서 Amazon EMR 클러스터를 연결 또는 사용하는 동안 발생할 수 있는 일반적인 오류입니다.

## Livy 연결이 중단 또는 실패하는 문제의 해결
<a name="studio-notebooks-emr-troubleshooting.memoryerror"></a>

다음은 Studio 또는 Studio Classic 노트북에서 Amazon EMR 클러스터를 사용하는 동안 발생할 수 있는 Livy 연결 문제입니다.
+ **Amazon EMR 클러스터에서 메모리 부족 오류가 발생했습니다.**

  Amazon EMR 클러스터에서 메모리 부족 오류가 발생한 경우 `sparkmagic`을 통한 Livy 연결이 중단되거나 실패할 수 있습니다.

  기본적으로 Apache Spark 드라이버 `spark.driver.defaultJavaOptions`의 Java 구성 파라미터는 `-XX:OnOutOfMemoryError='kill -9 %p'`로 설정되어 있습니다. 즉, 드라이버 프로그램에서 `OutOfMemoryError`가 발생할 때 실행하는 기본 작업은 SIGKILL 신호를 전송하여 드라이버 프로그램을 종료하는 것입니다. Apache Spark 드라이버가 종료되면 해당 드라이버를 활용하는 `sparkmagic`을 통한 모든 Livy 연결이 중단되거나 실패합니다. 이는 Spark 드라이버가 태스크 예약 및 실행을 포함한 Spark 애플리케이션의 리소스 관리를 담당하기 때문입니다. 드라이버가 없으면 Spark 애플리케이션이 작동하지 않으며 이와 상호 작용하려는 모든 시도가 실패합니다.

  Spark 클러스터에 메모리 문제가 발생한 것으로 의심되는 경우 [Amazon EMR 로그](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-manage-view-web-log-files.html)를 확인하면 됩니다. 메모리 부족 오류로 인해 종료된 컨테이너는 일반적으로 코드 `137`로 종료됩니다. 이러한 경우 Spark 애플리케이션을 다시 시작하고 새 Livy 연결을 설정하여 Spark 클러스터와의 상호 작용을 재개해야 합니다.

  [Amazon EMR의 Spark에서 "메모리 제한을 초과하여 YARN에 의해 종료된 컨테이너" 오류를 해결하려면 어떻게 해야 합니까?](https://repost.aws/knowledge-center/emr-spark-yarn-memory-limit) 지식 기반 문서를 참조하여 out-of-memory 문제를 해결하는 데 사용할 수 있는 다양한 전략과 파라미터에 대해 알아볼 수 있습니다. AWS re:Post 

  [Amazon EMR 모범 사례 안내서](https://aws.github.io/aws-emr-best-practices/)를 통해 Amazon EMR 클러스터에서 Apache Spark 워크로드를 실행하는 모범 사례와 조정 지침을 검토하는 것이 좋습니다.
+ **처음으로 Amazon EMR 클러스터에 연결할 때는 Livy 세션 제한 시간이 초과됩니다.**

  [Apache Livy](https://livy.apache.org/)를 사용하여 [SparkMagic](https://github.com/jupyter-incubator/sparkmagic) 라이브러리를 통해 원격 Spark(Amazon EMR) 클러스터 연결을 구현하는 [sagemaker-studio-analytics-extension](https://pypi.org/project/sagemaker-studio-analytics-extension/)으로 Amazon EMR 클러스터에 처음 연결할 경우 연결 제한 시간 초과 오류가 발생할 수 있습니다.

  `An error was encountered: Session 0 did not start up in 60 seconds.`

  연결 설정 시 Amazon EMR 클러스터에서 Spark 애플리케이션을 초기화해야 하는 경우 연결 제한 시간 초과 오류가 발생할 가능성이 높아집니다.

  분석 확장 프로그램인 `sagemaker-studio-analytics-extension` 버전 `0.0.19` 이상을 통해 Livy를 사용하여 Amazon EMR 클러스터에 연결할 때 제한 시간 초과가 발생할 가능성을 줄이려면 기본 서버 세션 제한 시간을 `sparkmagic`의 기본값인 `60`초 대신 `120`초로 재정의합니다.

  다음 업그레이드 명령을 실행하여 확장 프로그램 `0.0.18`을 더 빠르게 업그레이드하는 것이 좋습니다.

  ```
  pip install --upgrade sagemaker-studio-analytics-extension
  ```

  `sparkmagic`에서 사용자 지정 제한 시간 구성을 제공할 경우 `sagemaker-studio-analytics-extension`에 재정의가 적용됩니다. 하지만 세션 제한 시간을 `60`초로 설정하면 `sagemaker-studio-analytics-extension`에서 기본 서버 세션 제한 시간인 `120`초마다 자동으로 트리거됩니다.