

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

# EMR Serverless를 사용하여 데이터 준비
<a name="studio-notebooks-emr-serverless"></a>

[SageMaker 배포 이미지](sagemaker-distribution.md) 버전부터 `1.10` Amazon SageMaker Studio는 EMR Serverless와 통합됩니다. SageMaker Studio의 JupyterLab 노트북 내에서 데이터 과학자와 데이터 엔지니어는 EMR Serverless 애플리케이션을 검색하고 연결한 다음 대규모 Apache Spark 또는 Apache Hive 워크로드를 대화형으로 탐색, 시각화 및 준비할 수 있습니다. 이 통합을 통해 ML 모델 훈련 및 배포를 준비하기 위해 대규모 대화형 데이터 사전 처리를 수행할 수 있습니다.

특히 [SageMaker AI 배포](https://github.com/aws/sagemaker-distribution/tree/main/build_artifacts/v1) 이미지 버전 `1.10`에 있는 [https://pypi.org/project/sagemaker-studio-analytics-extension/](https://pypi.org/project/sagemaker-studio-analytics-extension/)의 업데이트된 버전은 Apache Livy와 EMR Serverless 간의 통합을 활용하여 JupyterLab 노트북을 통해 Apache Livy 엔드포인트에 연결을 가능하게 합니다. 이 섹션에서는 [EMR Serverless 대화형 애플리케이션](https://docs.aws.amazon.com/EMR-Serverless-UserGuide/interactive-workloads.html)에 대해 이미 지식이 있다고 가정합니다.

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

## 사전 조건
<a name="studio-set-up-emr-serverless-prerequisites"></a>

JupyterLab 노트북에서 EMR Serverless로 대화형 워크로드 실행을 시작하기 전에 다음 사전 조건을 충족해야 합니다.

1. JupyterLab 공간은 SageMaker 배포 이미지 버전 `1.10` 이상을 사용해야 합니다.

1. Amazon EMR 버전 `6.14.0` 이상을 사용하여 EMR Serverless 대화형 애플리케이션을 만듭니다. [Studio에서 EMR Serverless 애플리케이션 만들기](create-emr-serverless-application.md)의 단계에 따라 Studio 사용자 인터페이스에서 EMR Serverless 애플리케이션을 만들 수 있습니다.
**참고**  
가장 간단한 설정을 위해 **가상 프라이빗 클라우드(VPC)** 옵션의 기본 설정을 변경하지 않고 Studio UI에서 EMR Serverless 애플리케이션을 만들 수 있습니다. 이렇게 하면 네트워킹 구성 없이 도메인 VPC 내에서 애플리케이션을 만들 수 있습니다. 이 경우 다음 네트워킹 설정 단계를 건너뛸 수 있습니다.

1. [Amazon EMR 클러스터에 대한 네트워크 액세스 구성](studio-notebooks-emr-networking.md)의 네트워킹 및 보안 요구 사항을 검토합니다. 특히 다음을 확인합니다.
   + Studio 계정과 EMR Serverless 계정 간에 VPC 피어링 연결을 설정합니다.
   + 두 계정의 프라이빗 서브넷 라우팅 테이블에 경로를 추가합니다.
   + 아웃바운드 트래픽을 허용하도록 Studio 도메인에 연결된 보안 그룹을 설정하고 Studio 인스턴스 보안 그룹의 인바운드 TCP 트래픽을 허용하도록 EMR Serverless 애플리케이션을 실행할 VPC의 보안 그룹을 구성합니다.

1. EMR Serverless에서 대화형 애플리케이션에 액세스하고 SageMaker Studio의 JupyterLab 노트북에서 제출된 워크로드를 실행하려면 특정 권한 및 역할을 할당해야 합니다. 필요한 역할 및 권한에 대한 자세한 내용은 [SageMaker Studio에서 Amazon EMR 애플리케이션을 나열하고 시작할 수 있는 권한을 설정합니다.](studio-emr-serverless-permissions.md) 섹션을 참조하세요.

**Topics**
+ [사전 조건](#studio-set-up-emr-serverless-prerequisites)
+ [SageMaker Studio에서 Amazon EMR 애플리케이션을 나열하고 시작할 수 있는 권한을 설정합니다.](studio-emr-serverless-permissions.md)
+ [Studio에서 EMR Serverless 애플리케이션 만들기](create-emr-serverless-application.md)
+ [Studio에서 EMR Serverless 애플리케이션에 연결](connect-emr-serverless-application.md)
+ [Studio UI에서 EMR Serverless 애플리케이션 중지 또는 삭제](terminate-emr-serverless-application.md)

# SageMaker Studio에서 Amazon EMR 애플리케이션을 나열하고 시작할 수 있는 권한을 설정합니다.
<a name="studio-emr-serverless-permissions"></a>

이 섹션에서는 Studio와 EMR Serverless 애플리케이션이 동일한 AWS 계정 또는 다른 계정에 배포되는 시나리오를 고려하여 SageMaker Studio에서 EMR Serverless 애플리케이션을 나열하고 연결하는 데 필요한 역할과 권한을 자세히 설명합니다.

필요한 권한을 추가해야 하는 역할은 Studio와 EMR Serverless 애플리케이션이 동일한 AWS 계정(*단일 계정*)에 상주하는지 아니면 별도의 계정(*교차 계정*)에 상주하는지에 따라 달라집니다. 두 가지 유형의 역할이 연관되어 있습니다.
+ 실행 역할:
  + EMR Serverless에서 사용하는 [런타임 실행 역할](https://docs.aws.amazon.com/http://emr/latest/EMR-Serverless-UserGuide/jobs-spark.html#spark-defaults-executionRoleArn)(역할 기반 액세스 제어 역할): EMR Serverless 작업 실행 환경에서 데이터 액세스를 위한 Amazon S3, 로깅을 위한 CloudWatch, AWS Glue 데이터 카탈로그에 대한 액세스 또는 워크로드 요구 사항에 따른 기타 서비스와 같이 런타임 중에 필요한 다른 AWS 서비스 및 리소스에 액세스하는 데 사용하는 IAM 역할입니다. EMR Serverless 애플리케이션이 실행 중인 계정에서 이러한 역할을 만드는 것이 좋습니다.

    런타임 역할에 대한 자세한 내용은 *EMR Serverless 사용 설명서*에서 [작업 런타임 역할](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html)을 참조하세요.
**참고**  
EMR Serverless 애플리케이션에 대한 여러 RBAC 역할을 정의할 수 있습니다. 이러한 역할은 조직 내 다양한 사용자 또는 그룹에 필요한 책임 및 액세스 수준을 기반으로 할 수 있습니다. RBAC 권한에 대한 자세한 내용은 [Amazon EMR Serverless의 보안 모범 사례](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-best-practices.html#security-practice-rbac)를 참조하세요.
  + SageMaker AI 실행 역할: SageMaker AI가 Amazon S3 버킷에서 데이터 읽기, CloudWatch에 로그 쓰기, 워크플로에 필요할 수 있는 다른 AWS 서비스에 액세스와 같은 특정 작업을 수행하도록 허용하는 실행 역할입니다. 또한 SageMaker AI 실행 역할에는 SageMaker AI가 임시 런타임 실행 역할을 EMR Serverless 애플리케이션에 전달할 수 있는 `iam:PassRole`이라는 특수 권한이 있습니다. 이러한 역할은 EMR Serverless 애플리케이션에 실행 중인 다른 AWS 리소스와 상호 작용하는 데 필요한 권한을 부여합니다.
+ 수임 가능한 역할(*서비스 액세스 역할*이라고도 함):
  + 다음은 SageMaker AI의 실행 역할이 EMR Serverless 애플리케이션 관리와 관련된 작업을 수행하기 위해 수임할 수 있는 IAM 역할입니다. 이러한 역할은 EMR Serverless 애플리케이션을 나열, 연결 또는 관리할 때 필요한 권한 및 액세스 정책을 정의합니다. 일반적으로 EMR Serverless 애플리케이션이 SageMaker AI 도메인과 다른 AWS 계정에 있는 교차 계정 시나리오에서 사용됩니다. EMR Serverless 애플리케이션에 대한 전용 IAM 역할을 사용하면 최소 권한 원칙을 따르고 Amazon EMR이 AWS 계정의 다른 리소스를 보호하면서 작업을 실행하는 데 필요한 권한만 갖도록 할 수 있습니다.

이러한 역할을 올바르게 이해하고 구성하면 동일한 계정에 배포되었는지 또는 다른 계정에 배포되었는지에 관계없이 SageMaker Studio가 EMR Serverless 애플리케이션과 상호 작용하는 데 필요한 권한을 가질 수 있습니다.

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

다음 다이어그램은 Studio와 애플리케이션이 동일한 AWS 계정에 배포될 때 Studio에서 EMR Serverless 애플리케이션을 나열하고 연결하는 데 필요한 역할과 권한을 보여줍니다.

![\[다이어그램은 Studio와 애플리케이션이 동일한 AWS 계정에 있을 때 Studio에서 EMR Serverless 애플리케이션을 나열하고 연결하는 데 필요한 역할과 권한을 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-serverless-permissions-setup-singleaccount.png)


Amazon EMR 애플리케이션과 Studio가 동일한 AWS 계정에 배포된 경우 다음 단계를 따릅니다.

1. **1단계**: [Amazon S3 콘솔](https://console.aws.amazon.com/S3)에서 데이터 소스 및 출력 데이터 스토리지로 사용하는 Amazon S3 버킷의 ARN을 검색합니다.

   이름으로 버킷을 찾는 방법에 대한 자세한 내용은 [Amazon S3 버킷에 액세스 및 나열](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html)을 참조하세요. Amazon S3 버킷 만들기에 대한 자세한 내용은 [버킷 만들기](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)를 참조하세요.

1. **2단계**: 계정에서 EMR Serverless 애플리케이션에 대한 작업 런타임 실행 역할을 하나 이상 만듭니다(위의 *단일 계정* 사용 사례 다이어그램에서 `EMRServerlessRuntimeExecutionRoleA`). **사용자 지정 신뢰 정책**을 신뢰할 수 있는 엔터티로 선택합니다. 작업에 필요한 권한을 추가합니다. 최소한 Amazon S3 버킷에 대한 전체 액세스 권한과 AWS Glue 데이터 카탈로그에 대한 생성 및 읽기 액세스 권한이 필요합니다.

   EMR Serverless 애플리케이션에 대한 새 런타임 실행 역할을 만드는 방법에 대한 자세한 지침은 다음 단계를 따르세요.

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

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

   1. 런타임 역할에 필요한 권한을 추가하고 정책의 이름을 지정한 다음 **정책 만들기**를 선택합니다.

      [EMR Serverless에 대한 작업 런타임 역할](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html)을 참조하여 EMR Serverless 런타임 역할에 대한 샘플 런타임 정책을 찾을 수 있습니다.

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

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

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

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "emr-serverless.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

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

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

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

   이 역할을 사용하면 팀원과 함께 동일한 애플리케이션에 연결할 수 있습니다. 각각은 데이터에 대한 개별 액세스 수준에 맞는 권한 범위가 지정된 런타임 역할을 사용합니다.
**참고**  
Spark 세션은 다르게 작동합니다. Spark 세션은 Studio에서 사용되는 실행 역할에 따라 격리되므로 실행 역할이 다른 사용자는 별개의 격리된 Spark 세션을 갖게 됩니다. 또한 도메인에 소스 ID를 활성화한 경우 다른 소스 ID에서 Spark 세션이 추가로 분리됩니다.

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

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

   SageMaker AI의 실행 역할 ARN을 검색하는 방법에 대한 자세한 내용은 [실행 역할을 가져옵니다.](sagemaker-roles.md#sagemaker-roles-get-execution-role) 섹션을 참조하세요.
**참고**  
 또는 SageMaker AI를 처음 사용하는 사용자는 적절한 권한으로 새 SageMaker AI 실행 역할을 자동으로 만들어 설정 프로세스를 단순화할 수 있습니다. 이 경우 3단계와 4단계를 건너뜁니다. 대신 사용자는 다음 중 하나를 수행할 수 있습니다.  
[SageMaker AI 콘솔](https://console.aws.amazon.com/sagemaker) 왼쪽 탐색의 **도메인** 메뉴에서 새 도메인을 만들 때 **조직용 설정** 옵션을 선택합니다.
콘솔의 **역할 관리자** 메뉴에서 새 실행 역할을 만든 다음 해당 역할을 기존 도메인 또는 사용자 프로필에 연결합니다.
역할을 만들 때 **사용자가 수행할 ML 활동**에서 **Studio EMR Serverless 애플리케이션 실행** 옵션을 선택합니다. 그런 다음 Amazon S3 버킷의 이름과 EMR Serverless 애플리케이션이 사용할 작업 런타임 실행 역할을 입력합니다(2단계).  
SageMaker Role Manager는 EMR Serverless 애플리케이션을 실행하고 새 실행 역할에 연결하는 데 필요한 권한을 자동으로 추가합니다. [SageMaker Role Manager]()를 사용하면 EMR Serverless 애플리케이션에 하나의 런타임 역할만 할당할 수 있으며, Studio 배포된 것과 동일한 계정 내에서 만든 런타임 역할을 사용하여 해당 계정에서 애플리케이션을 실행해야 합니다.

1. **4단계**: EMR Serverless 애플리케이션에 액세스하는 SageMaker AI 실행 역할에 다음 권한을 연결합니다.

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

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

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

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

   1. **JSON** 탭에서 EMR Serverless 액세스 및 작업을 허용하는 Amazon EMR Serverless 권한을 추가합니다. 정책 문서에 대한 자세한 내용은 [참조 정책](#studio-set-up-emr-serverless-permissions-reference)의 *EMR Serverless policies*를 참조하세요. 문 목록을 역할의 인라인 정책에 복사하기 전에 *region*, *accountID*, 전달된 *EMRServerlessAppRuntimeRole*을 실제 값으로 바꿉니다.
**참고**  
권한 내에 필요한 만큼 런타임 역할의 ARN 문자열을 포함시켜 쉼표로 구분할 수 있습니다.

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

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

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

1. **5단계**:

   런타임 역할 목록을 사용자 프로필 또는 도메인과 연결하면 역할 목록을 시각적으로 탐색하고 JupyterLab에서 [EMR Serverless 애플리케이션에 연결](connect-emr-serverless-application.md)할 때 사용할 역할을 선택할 수 있습니다. SageMaker AI 콘솔 또는 다음 스크립트를 사용할 수 있습니다. 이후 Studio 노트북에서 만든 모든 Apache Spark 또는 Apache Hive 작업은 선택한 런타임 역할에 첨부된 정책에서 허용하는 데이터 및 리소스에만 액세스합니다.
**중요**  
이 단계를 완료하지 않으면 JupyterLab 노트북을 EMR Serverless 애플리케이션에 연결할 수 없습니다.

------
#### [ 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. **제출**을 선택합니다.

   다음에 JupyterLab을 통해 EMR Serverless 애플리케이션에 연결하면 런타임 역할이 드롭다운 메뉴에 표시되어 선택할 수 있습니다.

------
#### [ Python script ]

   권한을 업데이트한 SageMaker AI 실행 역할을 사용하여 프라이빗 스페이스에서 시작한 JupyterLab 애플리케이션의 터미널에서 다음 명령을 실행합니다. `domainID`, `user-profile-name`, `studio-accountID` 및 `EMRServerlessRuntimeExecutionRole`을 적절한 값으로 바꿉니다. 이 코드 조각은 특정 사용자 프로필(`client.update_user_profile`) 또는 도메인 설정(`client.update_domain`)에 대한 사용자 프로필 설정을 업데이트합니다. 구체적으로, 이전에 만든 EMR Serverless 런타임 실행 역할을 연결합니다.

   ```
   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",
   DefaultUserSettings={
       'JupyterLabAppSettings': {
           'EmrSettings': {
               'ExecutionRoleArns': ["arn:aws:iam::studio-accountID:role/EMRServerlessRuntimeExecutionRoleA", 
                                "arn:aws:iam::studio-accountID:role/EMRServerlessRuntimeExecutionRoleAA"]
           }
           
       }
   })
   resp = client.describe_domain(DomainId="domainID")
   
   resp['CreationTime'] = str(resp['CreationTime'])
   resp['LastModifiedTime'] = str(resp['LastModifiedTime'])
   print(json.dumps(resp, indent=2))
   ```

------

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

다음 다이어그램은 Studio와 애플리케이션이 서로 다른 AWS 계정에 배포될 때 Studio에서 EMR Serverless 애플리케이션을 나열하고 연결하는 데 필요한 역할과 권한을 보여줍니다.

![\[다이어그램은 Studio와 애플리케이션이 서로 다른 AWS 계정에 있을 때 Studio에서 EMR Serverless 애플리케이션을 나열하고 연결하는 데 필요한 역할과 권한을 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-serverless-permissions-setup-crossaccount.png)


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

시작하기 전에 다음을 수행하세요.
+ 프라이빗 스페이스에서 사용하는 SageMaker AI 실행 역할의 ARN을 검색합니다. SageMaker AI의 스페이스 및 실행 역할에 대한 자세한 내용은 [도메인 공간 권한 및 실행 역할 이해](execution-roles-and-spaces.md) 섹션을 참조하세요. SageMaker AI의 실행 역할 ARN을 검색하는 방법에 대한 자세한 내용은 [실행 역할을 가져옵니다.](sagemaker-roles.md#sagemaker-roles-get-execution-role) 섹션을 참조하세요.
+ [Amazon S3 콘솔](https://console.aws.amazon.com/S3)에서 데이터 소스 및 출력 데이터 스토리지로 사용하는 Amazon S3 버킷의 ARN을 검색합니다.

  Amazon S3 버킷 만들기에 대한 자세한 내용은 [버킷 만들기](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)를 참조하세요. 이름으로 버킷을 찾는 방법에 대한 자세한 내용은 [Amazon S3 버킷에 액세스 및 나열](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html)을 참조하세요.

EMR Serverless 애플리케이션과 Studio가 서로 다른 AWS 계정에 배포된 경우 두 계정에 대한 권한을 구성합니다.

### EMR Serverless 계정에서
<a name="studio-set-up-emr-serverless-permissions-crossaccount-emraccount"></a>

다음 단계에 따라 EMR Serverless 애플리케이션이 실행 중인 계정(*신뢰하는 계정*이라고도 함)에서 필요한 역할 및 정책을 만듭니다.

1. **1단계**: 계정에서 EMR Serverless 애플리케이션에 대한 작업 런타임 실행 역할을 하나 이상 만듭니다(위의 *교차 계정* 다이어그램에서 `EMRServerlessRuntimeExecutionRoleB`). **사용자 지정 신뢰 정책**을 신뢰할 수 있는 엔터티로 선택합니다. 작업에 필요한 권한을 추가합니다. 최소한 Amazon S3 버킷에 대한 전체 액세스 권한과 AWS Glue 데이터 카탈로그에 대한 생성 및 읽기 액세스 권한이 필요합니다.

   EMR Serverless 애플리케이션에 대한 새 런타임 실행 역할을 만드는 방법에 대한 자세한 지침은 다음 단계를 따르세요.

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

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

   1. 런타임 역할에 필요한 권한을 추가하고 정책의 이름을 지정한 다음 **정책 만들기**를 선택합니다.

      EMR Serverless 런타임 역할의 샘플 런타임 정책은 [Amazon EMR Serverless에 대한 작업 런타임 역할](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html)을 참조하세요.

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

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

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

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "emr-serverless.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

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

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

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

   이 역할을 사용하면 팀원과 함께 동일한 애플리케이션에 연결할 수 있습니다. 각각은 데이터에 대한 개별 액세스 수준에 맞는 권한 범위가 지정된 런타임 역할을 사용합니다.
**참고**  
Spark 세션은 다르게 작동합니다. Spark 세션은 Studio에서 사용되는 실행 역할에 따라 격리되므로 실행 역할이 다른 사용자는 별개의 격리된 Spark 세션을 갖게 됩니다. 또한 도메인에 소스 ID를 활성화한 경우 다른 소스 ID에서 Spark 세션이 추가로 분리됩니다.

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

   Studio는 역할을 수임하여 EMR Serverless 계정에서 필요한 권한에 임시로 액세스할 수 있습니다.

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

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

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

   1. **JSON** 탭에서 EMR Serverless 액세스 및 작업을 허용하는 Amazon EMR Serverless 권한을 추가합니다. 정책 문서에 대한 자세한 내용은 [참조 정책](#studio-set-up-emr-serverless-permissions-reference)의 *EMR Serverless policies*를 참조하세요. 문 목록을 역할의 인라인 정책에 복사하기 전에 `region`, `accountID`, 전달된 `EMRServerlessAppRuntimeRole`을 실제 값으로 바꿉니다.
**참고**  
여기에 있는 `EMRServerlessAppRuntimeRole`은 1단계(위의 *교차 계정* 다이어그램의 `EMRServerlessAppRuntimeRoleB`)에서 만든 작업 런타임 실행 역할입니다. 권한 내에 필요한 만큼 런타임 역할의 ARN 문자열을 포함시켜 쉼표로 구분할 수 있습니다.

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

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

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

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

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

      `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"
              }
          ]
      }
      ```

------

   1. **권한 추가** 페이지에서 2단계에서 만든 `EMRServerlessAppRuntimeRoleB` 권한을 추가한 다음 **다음**을 선택합니다.

   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-serverless-permissions-crossaccount-studioaccount"></a>

Studio가 배포된 계정(*신뢰받는 계정*이라고도 함)에서 EMR Serverless 애플리케이션에 액세스하는 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단계**: EMR Serverless 애플리케이션에 액세스하는 SageMaker AI 실행 역할에 다음 권한을 연결합니다.

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

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

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

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

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

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

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

   1. **인라인 정책 만들기** 단계를 반복하여 `AssumableRole`을 수임한 다음 역할의 액세스 정책에서 허용하는 작업을 수행할 수 있는 권한을 실행 역할에 부여하는 다른 정책을 추가합니다.

      `emr-account`를 Amazon EMR Serverless 계정 ID로 바꾸고, `AssumableRole`을 Amazon EMR Serverless 계정에서 만든 수임 가능한 역할의 이름으로 바꿉니다.

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

****  

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

------

1. **3단계**:

   런타임 역할 목록을 도메인 또는 사용자 프로필과 연결하면 역할 목록을 시각적으로 탐색하고 JupyterLab에서 [EMR Serverless 애플리케이션에 연결](connect-emr-serverless-application.md)할 때 사용할 역할을 선택할 수 있습니다. SageMaker AI 콘솔 또는 다음 스크립트를 사용할 수 있습니다. 이후 Studio 노트북에서 만든 모든 Apache Spark 또는 Apache Hive 작업은 선택한 런타임 역할에 첨부된 정책에서 허용하는 데이터 및 리소스에만 액세스합니다.
**중요**  
이 단계를 완료하지 않으면 JupyterLab 노트북을 EMR Serverless 애플리케이션에 연결할 수 없습니다.

------
#### [ 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. **제출**을 선택합니다.

   다음에 JupyterLab을 통해 EMR Serverless 애플리케이션에 연결하면 런타임 역할이 드롭다운 메뉴에 표시되어 선택할 수 있습니다.

------
#### [ Python script ]

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

   ```
   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",
   DefaultUserSettings={
       'JupyterLabAppSettings': {
           'EmrSettings': {
               'AssumableRoleArns': ["arn:aws:iam::emr-accountID:role/AssumableRole"],
               'ExecutionRoleArns': ["arn:aws:iam::emr-accountID:role/EMRServerlessRuntimeExecutionRoleA", 
                                "arn:aws:iam::emr-accountID:role/AnotherRuntimeExecutionRole"]
           }
           
       }
   })
   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))
   ```

------

## 참조 정책
<a name="studio-set-up-emr-serverless-permissions-reference"></a>
+ **EMR Serverless 정책**: 이 정책은 나열, 만들기(필수 SageMaker AI 태그 포함), 시작, 중지, 세부 정보 가져오기, 삭제, Livy 엔드포인트 액세스, 작업 실행 대시보드 가져오기를 포함한 EMR 서버리스 애플리케이션 관리를 허용합니다. 또한 필요한 EMR Serverless 애플리케이션 런타임 역할을 서비스에 전달할 수 있도록 합니다.
  + `EMRServerlessListApplications`: 지정된 리전 및 AWS 계정의 모든 EMR Serverless 리소스에 대해 ListApplications 작업을 허용합니다.
  + `EMRServerlessPassRole`: 역할이 로 전달되는 경우에만 제공된 AWS 계정에서 지정된 런타임 역할(들)을 전달하도록 허용합니다`emr-serverless.amazonaws.com service`.
  + `EMRServerlessCreateApplicationAction`: 지정된 리전 및 AWS 계정의 EMR Serverless 리소스에 대한 CreateApplication 및 TagResource 작업을 허용합니다. 그러나 만들어지거나 태그가 지정되는 리소스에 null이 아닌 값이 있는 특정 태그 키(`sagemaker:domain-arn`, `sagemaker:user-profile-arn` 및 `sagemaker:space-arn`)가 있어야 합니다.
  + `EMRServerlessDenyTaggingAction`: 리소스에 지정된 태그 키(`sagemaker:domain-arn`, 및 `sagemaker:space-arn`)가 설정되지 않은 경우 지정된 리전 및 AWS 계정의 EMR Serverless 리소스에 대한 TagResource `sagemaker:user-profile-arn`및 UntagResource 작업입니다.
  + `EMRServerlessActions`: 리소스에 null이 아닌 값으로 설정된 지정된 태그 키(`sagemaker:domain-arn`, `sagemaker:user-profile-arn`, `sagemaker:space-arn`) 세트가 있는 경우에만 EMR Serverless 리소스에 다양한 작업(`StartApplication`, `StopApplication`, `GetApplication`, `DeleteApplication`, `AccessLivyEndpoints`, `GetDashboardForJobRun`)을 허용합니다.

  제공된 JSON 문서에 정의된 IAM 정책은 이러한 권한을 부여하지만, 특정 SageMaker AI 도메인, 사용자 프로필 및 스페이스와 연결된 Amazon EMR Serverless 리소스만 관리할 수 있도록 해당 액세스를 EMR Serverless 애플리케이션의 특정 SageMaker AI 태그가 있을 때로만 제한합니다.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "EMRServerlessListApplications",
              "Effect": "Allow",
              "Action": [
                  "emr-serverless:ListApplications"
              ],
              "Resource": "arn:aws:emr-serverless:us-east-1:111122223333:/*"
          },
          {
              "Sid": "EMRServerlessPassRole",
              "Effect": "Allow",
              "Action": "iam:PassRole",
              "Resource": "arn:aws:iam::111122223333:role/EMRServerlessAppRuntimeRole",
              "Condition": {
                  "StringLike": {
                      "iam:PassedToService": "emr-serverless.amazonaws.com"
                  }
              }
          },
          {
              "Sid": "EMRServerlessCreateApplicationAction",
              "Effect": "Allow",
              "Action": [
                  "emr-serverless:CreateApplication",
                  "emr-serverless:TagResource"
              ],
              "Resource": "arn:aws:emr-serverless:us-east-1:111122223333:/*",
              "Condition": {
                  "ForAllValues:StringEquals": {
                      "aws:TagKeys": [
                          "sagemaker:domain-arn",
                          "sagemaker:user-profile-arn",
                          "sagemaker:space-arn"
                      ]
                  },
                  "Null": {
                      "aws:RequestTag/sagemaker:domain-arn": "false",
                      "aws:RequestTag/sagemaker:user-profile-arn": "false",
                      "aws:RequestTag/sagemaker:space-arn": "false"
                  }
              }
          },
          {
              "Sid": "EMRServerlessDenyTaggingAction",
              "Effect": "Deny",
              "Action": [
                  "emr-serverless:TagResource",
                  "emr-serverless:UntagResource"
              ],
              "Resource": "arn:aws:emr-serverless:us-east-1:111122223333:/*",
              "Condition": {
                  "Null": {
                      "aws:ResourceTag/sagemaker:domain-arn": "true",
                      "aws:ResourceTag/sagemaker:user-profile-arn": "true",
                      "aws:ResourceTag/sagemaker:space-arn": "true"
                  }
              }
          },
          {
              "Sid": "EMRServerlessActions",
              "Effect": "Allow",
              "Action": [
                  "emr-serverless:StartApplication",
                  "emr-serverless:StopApplication",
                  "emr-serverless:GetApplication",
                  "emr-serverless:DeleteApplication",
                  "emr-serverless:AccessLivyEndpoints",
                  "emr-serverless:GetDashboardForJobRun"
              ],
              "Resource": "arn:aws:emr-serverless:us-east-1:111122223333:/applications/*",
              "Condition": {
                  "Null": {
                      "aws:ResourceTag/sagemaker:domain-arn": "false",
                      "aws:ResourceTag/sagemaker:user-profile-arn": "false",
                      "aws:ResourceTag/sagemaker:space-arn": "false"
                  }
              }
          }
      ]
  }
  ```

------
+ **도메인, 사용자 프로필 및 스페이스 업데이트 작업 정책**: 다음 정책은 지정된 리전 및 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/*"
              ]
          }
      ]
  }
  ```

------

# Studio에서 EMR Serverless 애플리케이션 만들기
<a name="create-emr-serverless-application"></a>

데이터 과학자와 데이터 엔지니어는 Studio 사용자 인터페이스에서 직접 EMR Serverless 애플리케이션을 만들 수 있습니다. 시작하기 전에 [SageMaker Studio에서 Amazon EMR 애플리케이션을 나열하고 시작할 수 있는 권한을 설정합니다.](studio-emr-serverless-permissions.md) 섹션에 설명된 대로 필요한 권한을 구성했는지 확인합니다. 이러한 권한은 Studio에 애플리케이션에 대한 만들기, 시작, 보기, 액세스 및 종료 권한을 부여합니다.

Studio에서 EMR Serverless 애플리케이션을 만드는 방법:

1. Studio UI에서 왼쪽 패널로 이동하여 왼쪽 탐색 메뉴에서 **데이터** 노드를 선택합니다. 그런 다음 스크롤하여 **Amazon EMR 애플리케이션 및 클러스터** 옵션을 선택합니다. 그러면 Studio 환경 내에서 액세스할 수 있는 Amazon EMR 애플리케이션이 **서버리스 애플리케이션** 탭 아래에 표시되는 페이지가 열립니다.

1. 오른쪽 상단 모서리에서 **서버리스 애플리케이션 만들기** 버튼을 선택합니다. 그러면 **애플리케이션 설정 옵션**에서 **사용자 지정 설정 사용**을 선택할 때 [EMR Serverless 콘솔](https://console.aws.amazon.com/emrserverless)에 표시되는 보기와 유사한 **애플리케이션 만들기** 페이지가 열립니다.

1. 이름 및 설정하려는 특정 구성 가능한 파라미터를 포함하여 애플리케이션에 필요한 세부 정보를 제공한 다음 **애플리케이션 만들기**를 선택합니다.  
![\[Studio에서 EMR Serverless 애플리케이션을 만드는 양식\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-serverless-create-app.png)

   모든 구성 설정에는 기본값이 있으며 수정할 수 있습니다. 사용 가능한 각 파라미터에 대한 자세한 내용은 EMR Serverless 사용 설명서의 [애플리케이션 구성](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/application-capacity.html)을 참조하세요.
**참고**  
Studio UI에서 애플리케이션 만들기 프로세스 중에 **애플리케이션 만들기** 또는 **애플리케이션 만들기 및 시작** 옵션이 있습니다. 선택에 따라 애플리케이션은 각각 `Creating` 또는 `Starting` 상태로 들어갑니다.  
즉시 시작하지 않고 애플리케이션을 만들도록 선택한 경우 **작업 제출 시 애플리케이션 자동 시작** 옵션이 선택되어 있는지 확인합니다. 이렇게 하면 나중에 실행할 작업을 제출할 때 애플리케이션이 자동으로 `Starting` 상태로 전환됩니다.
가장 간단한 설정을 위해서는 **네트워크 연결** 섹션에서 **가상 프라이빗 클라우드(VPC)** 옵션을 기본값인 **VPC의 리소스에 대한 네트워크 연결 없음**으로 두는 좋습니다. 이렇게 하면 추가 네트워킹 구성 없이 도메인 VPC 내에서 애플리케이션을 만들 수 있습니다.  
 다른 경우에는 다음 단계를 수행해야 합니다.  
VPC를 피어링합니다.
프라이빗 서브넷 라우팅 테이블에 경로를 추가합니다.
[Amazon EMR 클러스터에 대한 네트워크 액세스 구성](studio-notebooks-emr-networking.md)에 설명된 대로 보안 그룹을 구성합니다.
이렇게 하면 기본값인 **네트워크 연결 없음** 옵션 이상으로 애플리케이션에 적절한 네트워킹 설정이 보장됩니다.
Studio Classic UI에서 만든 애플리케이션의 경우 다음 구성이 자동으로 적용됩니다.  
Apache Livy 엔드포인트가 활성화됩니다.
애플리케이션에 다음과 같은 태그가 지정됩니다.  
sagemaker:user-profile-arn
sagemaker:domain-arn
sagemaker:space-arn
Studio 외부에서 애플리케이션을 만드는 경우 Apache Livy 엔드포인트를 수동으로 활성화하고 애플리케이션에 동일한 태그 세트를 적용해야 합니다.

애플리케이션이 만들어지면 Studio Classic UI에 *애플리케이션이 성공적으로 만들어짐*이라는 메시지가 표시되고 새 애플리케이션이 **서버리스 애플리케이션** 목록에 나타납니다.

EMR Serverless 애플리케이션에 연결하려면 [Studio에서 EMR Serverless 애플리케이션에 연결](connect-emr-serverless-application.md) 섹션을 참조하세요.

# Studio에서 EMR Serverless 애플리케이션에 연결
<a name="connect-emr-serverless-application"></a>

데이터 과학자와 데이터 엔지니어는 Studio 사용자 인터페이스에서 직접 EMR Serverless 애플리케이션을 검색한 다음 연결할 수 있습니다. 시작하기 전에 [Studio에서 EMR Serverless 애플리케이션 만들기](create-emr-serverless-application.md)의 지침에 따라 EMR Serverless 애플리케이션을 만들었는지 확인하세요.

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

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

**Studio UI에서 EMR Serverless 애플리케이션을 새 JupyterLab 노트북에 연결하는 방법:**

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

1. 새 노트북에 연결할 EMR Serverless 애플리케이션을 선택한 다음 **노트북에 연결**을 선택합니다. 그러면 JupyterLab 공간 목록이 표시된 모달 창이 열립니다.

1. 
   + JupyterLab 애플리케이션을 시작할 프라이빗 공간을 선택한 다음 **노트북 열기**를 선택합니다. 이렇게 하면 선택한 공간에서 JupyterLab 애플리케이션이 시작되고 새 노트북이 열립니다.
   + 또는 모달 창 상단의 **새 공간 만들기** 버튼을 선택하여 새 프라이빗 공간을 만들 수 있습니다. 공간 이름을 입력한 다음 **공간 만들기 및 노트북 열기**를 선택합니다. 이렇게 하면 기본 인스턴스 유형과 사용 가능한 최신 SageMaker 배포 이미지가 있는 프라이빗 공간이 만들어지고 JupyterLab 애플리케이션이 시작되며 새 노트북이 열립니다.

1. EMR Serverless 애플리케이션이 작업 실행을 위해 수임할 수 있는 IAM 런타임 실행 역할의 이름을 선택합니다. 선택하면 연결 명령이 노트북의 첫 번째 셀을 채우고 EMR Serverless 애플리케이션과의 연결을 시작합니다.
**중요**  
JupyterLab 노트북을 EMR Serverless 애플리케이션에 성공적으로 연결하려면 먼저 [SageMaker Studio에서 Amazon EMR 애플리케이션을 나열하고 시작할 수 있는 권한을 설정합니다.](studio-emr-serverless-permissions.md)에 설명된 대로 런타임 역할 목록을 도메인 또는 사용자 프로필과 연결해야 합니다. 이 단계를 완료하지 않으면 연결을 설정할 수 없습니다.

   연결이 성공하면 메시지가 연결을 확인하고 EMR Serverless 애플리케이션을 시작하고 Spark 세션을 시작합니다.
**참고**  
EMR Serverless 애플리케이션에 연결하면 상태가 `Stopped` 또는 `Created`에서 `Started`로 전환됩니다.

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

1. 노트북 오른쪽 상단에서 **클러스터** 버튼을 선택합니다. 그러면 액세스할 수 있는 EMR Serverless 애플리케이션이 나열된 모달 창이 열립니다. **서버리스 애플리케이션** 탭에서 애플리케이션을 볼 수 있습니다.

1. 연결할 애플리케이션을 선택한 다음 **연결**을 선택합니다.

1. EMR Serverless는 [SageMaker Studio에서 Amazon EMR 애플리케이션을 나열하고 시작할 수 있는 권한을 설정합니다.](studio-emr-serverless-permissions.md)에 설명된 대로 필요한 권한을 설정할 때 미리 로드된 런타임 IAM 역할을 지원합니다. 이 단계를 완료하지 않으면 연결을 설정할 수 없습니다.

   **Amazon EMR 실행 역할** 드롭다운 메뉴에서 역할을 선택할 수 있습니다. EMR Serverless에 연결하면 Studio가 노트북의 활성 셀에 코드 블록을 추가하여 연결을 설정합니다.

1. 활성 셀이 채워지고 실행됩니다. 이 셀에는 노트북을 애플리케이션에 연결하는 연결 매직 명령이 포함되어 있습니다.

   연결에 성공하면 Spark 애플리케이션의 연결과 시작을 확인하는 메시지가 나타납니다. EMR Serverless 애플리케이션에 데이터 처리 작업 제출을 시작할 수 있습니다.

# Studio UI에서 EMR Serverless 애플리케이션 중지 또는 삭제
<a name="terminate-emr-serverless-application"></a>

Studio UI의 애플리케이션 목록에서 EMR Serverless 애플리케이션을 중지(`Stopped` 상태로 전환)하거나 삭제(`Deleted` 상태로 전환)할 수 있습니다.

**애플리케이션을 중지하거나 삭제하려면 사용 가능한 EMR Serverless 애플리케이션 목록으로 이동합니다.**

1. Studio UI에서 왼쪽 패널로 이동하여 왼쪽 탐색 메뉴에서 **데이터** 노드를 선택합니다. 그런 다음 스크롤하여 **Amazon EMR 애플리케이션 및 클러스터** 옵션을 선택합니다. 그러면 Studio 환경 내에서 액세스할 수 있는 Amazon EMR 애플리케이션이 **서버리스 애플리케이션** 탭 아래에 표시되는 페이지가 열립니다.

1. 중지하거나 삭제할 애플리케이션의 이름을 선택한 다음 해당하는 **중지** 또는 **삭제** 버튼을 선택합니다.

1. 보류 중인 작업이 영구적으로 손실된다는 확인 메시지가 표시됩니다.