

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

# 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) 섹션을 참조하세요.