Studio에서 Amazon EMR 클러스터 액세스를 위한 IAM 런타임 역할 구성 - Amazon SageMaker AI

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

Studio에서 Amazon EMR 클러스터 액세스를 위한 IAM 런타임 역할 구성

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

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

Studio Classic을 사용하여이 기능을 시도하려면 Amazon SageMaker Studio Classic EMR에서 AWS Lake Formation 및 Amazon을 사용하여 세분화된 데이터 액세스 제어 적용을 참조하세요. 이 블로그 게시물은 미리 구성된 런타임 역할을 사용하여 Amazon EMR 클러스터에 연결해 볼 수 있는 데모 환경을 설정하는 데 도움이 됩니다.

사전 조건

시작하기 전에 다음 사전 조건을 충족하는지 확인합니다.

교차 계정 연결 시나리오

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

런타임 IAM 역할 인증에서 지원하는 교차 계정 시나리오입니다.

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

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

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

런타임 IAM 역할을 사용하도록 Studio 설정

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

Amazon EMR 클러스터와 Studio가 동일한 계정에 있을 때 런타임 역할 인증 구성

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

  1. Amazon EMR 클러스터에 연결하는 데 필요한 IAM 정책을 추가합니다. 세부 정보는 Amazon EMR 클러스터 나열 구성을 참조하세요.

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

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

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

  5. Amazon EMR 클러스터에 연결할 때 사용할 역할을 선택할 수 있도록 IAM 역할을 미리 로드합니다. IAM 역할을 미리 로드하는 방법에 대한 자세한 내용은 섹션을 참조하세요실행 역할을 Studio 또는 Studio Classic에 미리 로드.

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

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

클러스터와 Studio가 서로 다른 계정에 있는 경우 런타임 역할 인증 구성

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

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

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAssumeCrossAccountEMRAccessRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::emr_account_id:role/emr-access-role-name" } ] }
  2. 신뢰 정책을 생성하여 Amazon EMR 액세스 역할을 수임하는 데 신뢰할 IDs 수 있는 Studio 계정을 지정합니다. 다음은 정책의 예입니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountSageMakerExecutionRoleToAssumeThisRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio_account_id:role/studio_execution_role" }, "Action": "sts:AssumeRole" } }
  3. Amazon EMR 액세스 역할 권한 정책을 생성합니다.이 정책은 Amazon EMR 런타임 실행 역할에 클러스터에서 의도한 작업을 수행하는 데 필요한 권한을 부여합니다. EMR 액세스 역할 권한 정책에 지정된 Amazon EMR 런타임 실행 역할APIGetClusterSessionCredentials로를 호출하도록 Amazon 액세스 역할을 구성합니다. 다음은 정책의 예입니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallingEmrGetClusterSessionCredentialsAPI", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::emr_account_id:role/emr-execution-role-name" ] } } } ] }
  4. 트래픽이 계정 간에 앞뒤로 이동할 수 있도록 교차 계정 네트워크를 설정하세요. 관련 지침은 Amazon EMR 클러스터에 대한 네트워크 액세스 구성를 참조하세요. 이 섹션에서 다루는 단계는 다음 작업을 완료하는 데 도움이 됩니다.

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

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

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

  5. Amazon EMR 클러스터에 연결할 때 사용할 역할을 선택할 수 있도록 IAM 런타임 역할을 미리 로드합니다. IAM 역할을 미리 로드하는 방법에 대한 자세한 내용은 섹션을 참조하세요실행 역할을 Studio 또는 Studio Classic에 미리 로드.

Lake Formation 액세스 구성

에서 관리하는 데이터 레이크에서 데이터에 액세스할 때 런타임 역할에 연결된 정책을 사용하여 테이블 수준 및 열 수준 액세스를 적용할 AWS Lake Formation수 있습니다. Lake Formation 액세스에 대한 권한을 구성하려면 AmazonEMR과의 통합을 AWS Lake Formation참조하세요.

실행 역할을 Studio 또는 Studio Classic에 미리 로드

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

Preload runtime roles in JupyterLab using the SageMaker AI console

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

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

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

    • 도메인에 런타임(및 교차 계정 사용 사례의 액세스 역할)을 추가하려면 도메인 세부 정보 페이지의 앱 구성 탭에서 JupyterLab 섹션으로 이동합니다.

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

  3. 편집을 선택하고 액세스 역할(가정 역할) 및 EMR 서버리스 런타임 실행 역할ARNs의를 추가합니다.

  4. 제출을 선택합니다.

다음에 Amazon EMR 서버에 연결할 때 선택할 수 있도록 드롭다운 메뉴에 런타임 역할이 나타나야 합니다.

Preload runtime roles in JupyterLab using a Python script

권한을 업데이트한 SageMaker AI 실행 역할을 사용하여 공간에서 시작된 JupyterLab 애플리케이션에서 터미널에서 다음 명령을 실행합니다. domainID, user-profile-name, emr-accountIDEMRServiceRole을 적절한 값으로 바꿉니다. 이 코드 조각은 교차 계정 사용 사례에서 SageMaker AI 도메인 내의 사용자 프로필 설정(client.update_user_profile)을 업데이트합니다. 특히 Amazon에 대한 서비스 역할을 설정합니다EMR. 또한 JupyterLab 애플리케이션이 Amazon EMR 계정 EMR 내에서 Amazon을 실행하기 위해 특정 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

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

수명 주기 구성(LCC) 스크립트를 사용하여이 정보를 지정할 수 있습니다. 도메인 또는 특정 사용자 프로필LCC에를 연결할 수 있습니다. 사용하는 LCC 스크립트는 JupyterServer 구성이어야 합니다. LCC 스크립트를 생성하는 방법에 대한 자세한 내용은 Studio Classic에서 수명 주기 구성 사용을 참조하세요.

다음은 예제 LCC 스크립트입니다. 스크립트를 수정하려면 AssumableRoleemr-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이고 212121212121434343434343은 허용된 Amazon EMR 액세스 역할에 ARNs 대한 입니다.

#!/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