SageMaker Studio에서 Amazon EMR 애플리케이션을 나열하고 시작할 수 있는 권한을 설정합니다. - Amazon SageMaker

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

SageMaker Studio에서 Amazon EMR 애플리케이션을 나열하고 시작할 수 있는 권한을 설정합니다.

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

필요한 권한을 추가해야 하는 역할은 Studio와 EMR Serverless 애플리케이션이 동일한 AWS 계정(단일 계정)에 상주하는지 아니면 별도의 계정(교차 계정)에 상주하는지에 따라 달라집니다. 다음과 같은 두 가지 유형의 역할이 있습니다.

  • 실행 역할:

    • EMR Serverless에서 사용하는 런타임 실행 역할(역할 기반 액세스 제어 역할): EMR Serverless 작업 실행 환경에서 데이터 액세스, CloudWatch 로깅, 데이터 AWS Glue 카탈로그 또는 워크로드 요구 사항에 따른 기타 AWS 서비스에 대한 액세스를 위해 Amazon S3와 같이 런타임 중에 필요한 다른 서비스 및 리소스에 액세스하는 데 사용되는 IAM 역할입니다. EMR Serverless 애플리케이션이 실행 중인 계정에서 이러한 역할을 생성하는 것이 좋습니다.

      런타임 역할에 대한 자세한 내용은 EMR 서버리스 사용 설명서작업 런타임 역할을 참조하세요.

      참고

      EMR Serverless 애플리케이션에 대한 여러 RBAC 역할을 정의할 수 있습니다. 이러한 역할은 조직 내 다양한 사용자 또는 그룹에 필요한 책임 및 액세스 수준을 기반으로 할 수 있습니다. RBAC 권한에 대한 자세한 내용은 Amazon EMR Serverless의 보안 모범 사례를 참조하세요.

    • SageMaker 실행 역할: 가 Amazon S3 버킷에서 데이터 읽기, 에 로그 쓰기 CloudWatch, 워크플로 SageMaker 에 필요할 수 있는 다른 AWS 서비스에 액세스와 같은 특정 작업을 수행할 수 있도록 허용하는 실행 역할입니다. 또한 SageMaker 실행 역할에는 가 임시 런타임 실행 역할을 EMR 서버리스 애플리케이션에 SageMaker 전달할 수 iam:PassRole 있는 특수 권한이 있습니다. 이러한 역할은 EMR Serverless 애플리케이션에 실행 중인 다른 AWS 리소스와 상호 작용하는 데 필요한 권한을 부여합니다.

  • 가정 가능한 역할(서비스 액세스 역할이라고도 함):

    • 다음은 SageMaker의 실행 역할이 EMR Serverless 애플리케이션 관리와 관련된 작업을 수행하기 위해 수임할 수 있는 IAM 역할입니다. 이러한 역할은 EMR Serverless 애플리케이션을 나열, 연결 또는 관리할 때 필요한 권한 및 액세스 정책을 정의합니다. 일반적으로 EMR 서버리스 애플리케이션이 도메인과 다른 AWS 계정에 SageMaker 있는 교차 계정 시나리오에서 사용됩니다. EMR Serverless 애플리케이션에 전용 IAM 역할을 사용하면 최소 권한 원칙을 따르고 Amazon이 AWS 계정의 다른 리소스를 보호하면서 작업을 실행하는 데 필요한 권한만 EMR 갖도록 하는 데 도움이 됩니다.

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

단일 계정

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

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

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

  1. 1단계: Amazon S3 콘솔 에서 데이터 소스 및 출력 데이터 스토리지에 사용하는 Amazon S3 버킷ARN의 를 검색합니다.

    이름으로 버킷을 찾는 방법에 대한 자세한 내용은 Amazon S3 버킷 액세스 및 나열을 참조하세요. Amazon S3 버킷을 생성하는 방법에 대한 자세한 내용은 버킷 생성을 참조하세요.

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

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

    1. IAM 콘솔로 이동합니다.

    2. 왼쪽 탐색 창에서 정책 을 선택한 다음 정책 생성 을 선택합니다.

    3. 런타임 역할에 필요한 권한을 추가하고 정책의 이름을 지정한 다음 정책 생성을 선택합니다.

      EMR Serverless의 작업 런타임 역할을 참조하여 EMR Serverless 런타임 역할에 대한 샘플 런타임 정책을 찾을 수 있습니다.

    4. 왼쪽 탐색 창에서 역할을 선택한 다음 역할 생성 을 선택합니다.

    5. 역할 생성 페이지에서 사용자 지정 신뢰 정책을 신뢰할 수 있는 엔터티로 선택합니다.

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

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    7. 권한 추가 페이지에서 생성한 정책을 추가한 다음 다음을 선택합니다.

    8. 검토 페이지에서 EMRServerlessAppRuntimeRoleA 와 같은 역할의 이름과 선택적 설명을 입력합니다.

    9. 역할 세부 정보를 검토하고 [Create role]을 선택합니다.

    이러한 역할을 사용하면 사용자와 팀원은 각각 데이터에 대한 개별 액세스 수준과 일치하는 권한을 가진 런타임 역할을 사용하여 동일한 애플리케이션에 연결할 수 있습니다.

    참고

    Spark 세션은 다르게 작동합니다. Spark 세션은 Studio에서 사용되는 실행 역할에 따라 격리되므로 실행 역할이 다른 사용자는 별도의 격리된 Spark 세션을 갖게 됩니다. 또한 도메인에 대한 소스 자격 증명을 활성화한 경우 다른 소스 자격 증명에서 Spark 세션이 추가로 격리됩니다.

  3. 3단계: 프라이빗 스페이스에서 SageMaker 사용하는 실행 역할ARN의 를 검색합니다.

    의 공백 및 실행 역할에 대한 자세한 내용은 섹션을 SageMaker참조하세요도메인 공간 권한 및 실행 역할 이해.

    SageMaker의 실행 역할 ARN 중 를 검색하는 방법에 대한 자세한 내용은 섹션을 참조하세요실행 역할 가져오기.

    참고

    또는 에 새로 가입한 사용자는 적절한 권한으로 새 SageMaker 실행 역할을 자동으로 생성하여 설정 프로세스를 단순화할 SageMaker 수 있습니다. 이 경우 3단계와 4단계를 건너뜁니다. 대신 사용자는 다음 중 하나를 수행할 수 있습니다.

    • SageMaker 콘솔 왼쪽 탐색의 도메인 메뉴에서 새 도메인을 생성할 때 조직에 대해 설정 옵션을 선택합니다.

    • 콘솔의 역할 관리자 메뉴에서 새 실행 역할을 생성한 다음 해당 역할을 기존 도메인 또는 사용자 프로필에 연결합니다.

    역할을 생성할 때 사용자가 수행할 ML 활동에서 Studio EMR 서버리스 애플리케이션 실행 옵션을 선택합니다. 그런 다음 Amazon S3 버킷의 이름과 EMR Serverless 애플리케이션이 사용할 작업 런타임 실행 역할을 입력합니다(2단계).

    SageMaker Role Manager는 EMR Serverless 애플리케이션을 실행하고 연결하는 데 필요한 권한을 새 실행 역할에 자동으로 추가합니다. SageMaker Role Manager를 사용하면 EMR Serverless 애플리케이션에 하나의 런타임 역할만 할당할 수 있으며, 애플리케이션은 동일한 계정 내에서 생성된 런타임 역할을 사용하여 Studio가 배포된 동일한 계정에서 실행되어야 합니다.

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

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

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

    3. 역할에 대한 링크를 따릅니다.

    4. 권한 추가를 선택한 다음 인라인 정책 생성을 선택합니다.

    5. JSON 탭에서 EMR Serverless 액세스 및 작업을 허용하는 Amazon EMR Serverless 권한을 추가합니다. 정책 문서에 대한 자세한 내용은 의 EMR 서버리스 정책을 참조하세요참조 정책. 교체 region, accountID, 및 전달 EMRServerlessAppRuntimeRole(s)를 실제 값과 함께 복사한 후 명령문 목록을 역할의 인라인 정책에 복사합니다.

      참고

      권한 내에 필요한 만큼 많은 런타임 역할 ARN 문자열을 포함시켜 쉼표로 구분할 수 있습니다.

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

    7. 정책 생성을 선택합니다.

    8. 인라인 정책 생성 단계를 반복하여 도메인, 사용자 프로필 및 공백을 업데이트할 수 있는 역할 권한을 부여하는 다른 인라인 정책을 추가합니다. SageMakerUpdateResourcesPolicy 정책 문서에 대한 자세한 내용은 의 도메인, 사용자 프로필 및 공간 업데이트 작업 정책을 참조하세요참조 정책. 교체 region 그리고 accountID 명령문 목록을 역할의 인라인 정책에 복사하기 전에 실제 값을 사용합니다.

  5. 5단계:

    런타임 역할 목록을 사용자 프로필 또는 도메인과 연결하면 역할 목록을 시각적으로 검색하고 에서 EMR Serverless 애플리케이션에 연결할 때 사용할 역할을 선택할 수 있습니다 JupyterLab. SageMaker 콘솔 또는 다음 스크립트를 사용할 수 있습니다. 그런 다음 노트북에서 생성된 모든 Apache Spark 또는 Apache Hive 작업은 선택한 런타임 역할에 연결된 정책에서 허용하는 데이터 및 리소스에만 액세스합니다.

    중요

    이 단계를 완료하지 않으면 JupyterLab 노트북을 EMR Serverless 애플리케이션에 연결할 수 없습니다.

    SageMaker console

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

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

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

      • 도메인에 런타임 역할을 추가하려면: 도메인 세부 정보 페이지의 앱 구성 탭에서 JupyterLab 섹션으로 이동합니다.

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

    3. EMR 서버리스 런타임 실행 역할ARNs의 편집 및 추가를 선택합니다.

    4. 제출을 선택합니다.

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

    Python script

    권한이 업데이트된 SageMaker 실행 역할을 사용하여 프라이빗 공간에서 시작된 JupyterLab 애플리케이션에서 터미널에서 다음 명령을 실행합니다. domainID, user-profile-name, studio-accountIDEMRServerlessRuntimeExecutionRole(s)를 적절한 값으로 바꿉니다. 이 코드 조각은 특정 사용자 프로필(client.update_userprofile) 또는 도메인 설정()에 대한 사용자 프로필 설정을 업데이트하며client.update_domain, 특히 이전에 생성한 EMR 서버리스 런타임 실행 역할을 연결합니다.

    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': { '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))

교차 계정

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

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

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

시작하기 전에 다음을 수행하십시오.

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

EMR Serverless 계정에서

다음 단계에 따라 EMR Serverless 애플리케이션이 실행 중인 계정에서 필요한 역할 및 정책을 생성합니다. 이를 신뢰 계정이라고도 합니다.

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

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

    1. IAM 콘솔로 이동합니다.

    2. 왼쪽 탐색 창에서 정책 을 선택한 다음 정책 생성 을 선택합니다.

    3. 런타임 역할에 필요한 권한을 추가하고 정책의 이름을 지정한 다음 정책 생성을 선택합니다.

      EMR 서버리스 런타임 역할의 샘플 런타임 정책은 Amazon EMR Serverless의 작업 런타임 역할을 참조하세요.

    4. 왼쪽 탐색 창에서 역할을 선택한 다음 역할 생성 을 선택합니다.

    5. 역할 생성 페이지에서 사용자 지정 신뢰 정책을 신뢰할 수 있는 엔터티로 선택합니다.

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

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    7. 권한 추가 페이지에서 생성한 정책을 추가한 다음 다음을 선택합니다.

    8. 검토 페이지에서 와 같은 역할의 이름과 EMRServerlessAppRuntimeRoleB 선택적 설명을 입력합니다.

    9. 역할 세부 정보를 검토하고 [Create role]을 선택합니다.

    이러한 역할을 사용하면 사용자와 팀원은 각각 데이터에 대한 개별 액세스 수준과 일치하는 권한으로 범위가 지정된 런타임 역할을 사용하여 동일한 애플리케이션에 연결할 수 있습니다.

    참고

    Spark 세션은 다르게 작동합니다.Spark 세션은 Studio에서 사용되는 실행 역할에 따라 격리되므로 실행 역할이 다른 사용자는 별도의 격리된 Spark 세션을 갖게 됩니다. 또한 도메인에 대한 소스 자격 증명을 활성화한 경우 다른 소스 자격 증명에서 Spark 세션이 추가로 격리됩니다.

  2. 2단계: 다음 구성으로 AssumableRole 라는 사용자 지정 IAM 역할을 생성합니다.

    • 권한: EMR Serverless 리소스에 액세스할 수 있도록 에 필요한 권한(Amazon EMR Serverless 정책)AssumableRole을 부여합니다. 이 역할을 액세스 역할이라고도 합니다.

    • 신뢰 관계: 액세스가 필요한 Studio 계정에서 실행 역할(교차 계정 다이어그램SageMakerExecutionRole의 )을 수임AssumableRole할 수 있도록 에 대한 신뢰 정책을 구성합니다.

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

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

    1. IAM 콘솔로 이동합니다.

    2. 왼쪽 탐색 창에서 정책 을 선택한 다음 정책 생성 을 선택합니다.

    3. JSON 탭에서 EMR Serverless 액세스 및 작업을 허용하는 Amazon EMR Serverless 권한을 추가합니다. 정책 문서에 대한 자세한 내용은 의 EMR 서버리스 정책을 참조하세요참조 정책. 명령문 목록을 역할의 인라인 정책에 복사하기 전에 regionaccountID, 및 전달된 EMRServerlessAppRuntimeRole(s)를 실제 값으로 바꿉니다.

      참고

      EMRServerlessAppRuntimeRole 다음은 1단계(위의 교차 계정 다이어그램의 )EMRServerlessAppRuntimeRoleB에서 생성된 작업 런타임 실행 역할입니다. 권한 내에 필요한 만큼 문자열ARN의 런타임 역할을 포함시켜 쉼표로 구분할 수 있습니다.

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

    5. 정책 생성을 선택합니다.

    6. 왼쪽 탐색 창에서 역할을 선택한 다음 역할 생성 을 선택합니다.

    7. 역할 생성 페이지에서 사용자 지정 신뢰 정책을 신뢰할 수 있는 엔터티로 선택합니다.

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

      를 Studio 계정 IDstudio-account로 바꾸고 를 JupyterLab 공간에서 사용하는 실행 역할AmazonSageMaker-ExecutionRole로 바꿉니다.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::studio-account:role/service-role/AmazonSageMaker-ExecutionRole" }, "Action": "sts:AssumeRole" } ] }
    9. 권한 추가 페이지에서 2단계에서 EMRServerlessAppRuntimeRoleB 생성한 권한을 추가한 다음 다음을 선택합니다.

    10. 검토 페이지에서 AssumableRole 와 같은 역할의 이름과 선택적 설명을 입력합니다.

    11. 역할 세부 정보를 검토하고 [Create role]을 선택합니다.

    AWS 계정에서 역할을 생성하는 방법에 대한 자세한 내용은 IAM 역할 생성(콘솔)을 참조하세요.

Studio 계정에서

Studio가 배포된 계정에서 신뢰할 수 있는 계정이라고도 하는 에서 EMR Serverless 애플리케이션에 액세스하는 실행 역할을 신뢰할 수 있는 계정의 SageMaker 리소스에 액세스하는 데 필요한 권한으로 업데이트합니다.

  1. 1단계: 공간에서 사용하는 SageMaker 실행 역할ARN의 를 검색합니다.

    의 공백 및 실행 역할에 대한 자세한 내용은 섹션을 SageMaker참조하세요도메인 공간 권한 및 실행 역할 이해.

    SageMaker의 실행 역할 ARN 중 를 검색하는 방법에 대한 자세한 내용은 섹션을 참조하세요실행 역할 가져오기.

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

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

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

    3. 역할에 대한 링크를 따릅니다.

    4. 권한 추가를 선택한 다음 인라인 정책 생성을 선택합니다.

    5. JSON 탭에서 도메인, 사용자 프로필 및 공백을 업데이트할 수 있는 역할 권한을 부여하는 인라인 정책을 추가합니다. SageMakerUpdateResourcesPolicy 정책 문서에 대한 자세한 내용은 의 도메인, 사용자 프로필 및 공간 업데이트 작업 정책을 참조하세요참조 정책. 문 목록을 역할의 인라인 정책에 복사하기 전에 region 및 를 accountID 실제 값으로 바꿉니다.

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

    7. 정책 생성을 선택합니다.

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

      emr-account 를 Amazon EMR Serverless 계정 IDAssumableRole로 바꾸고 를 Amazon EMR Serverless 계정에서 생성된 추정 역할의 이름으로 바꿉니다.

      { "Version": "2012-10-17", "Statement": { "Sid": "AllowSTSToAssumeAssumableRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::emr-account:role/AssumableRole" } }
  3. 3단계:

    런타임 역할 목록을 도메인 또는 사용자 프로필과 연결하면 역할 목록을 시각적으로 검색하고 에서 EMR Serverless 애플리케이션에 연결할 때 사용할 역할을 선택할 수 있습니다 JupyterLab. SageMaker 콘솔 또는 다음 스크립트를 사용할 수 있습니다. 그런 다음 노트북에서 생성된 모든 Apache Spark 또는 Apache Hive 작업은 선택한 런타임 역할에 연결된 정책에서 허용하는 데이터 및 리소스에만 액세스합니다.

    중요

    이 단계를 완료하지 않으면 JupyterLab 노트북을 EMR Serverless 애플리케이션에 연결할 수 없습니다.

    SageMaker console

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

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

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

      • 도메인에 런타임 역할을 추가하려면: 도메인 세부 정보 페이지의 앱 구성 탭에서 JupyterLab 섹션으로 이동합니다.

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

    3. 추정 가능한 역할 및 EMR 서버리스 런타임 실행 역할ARNs의 편집 및 추가를 선택합니다.

    4. 제출을 선택합니다.

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

    Python script

    권한이 업데이트된 SageMaker 실행 역할을 사용하여 프라이빗 스페이스에서 시작된 JupyterLab 애플리케이션에서 터미널에서 다음 명령을 실행합니다. domainID, studio-accountID, 및 user-profile-name를 적절한 값으로 바EMRServerlessRuntimeExecutionRole꿉니다. 이 코드 조각은 도메인 내의 특정 사용자 프로필(client.update_userprofile) 또는 도메인 설정(client.update_domain)에 대한 사용자 프로필 설정을 업데이트합니다 SageMaker. 특히 이전에 생성한 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_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/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))

참조 정책

  • EMR 서버리스 정책 : 이 정책은 나열, 생성(필수 SageMaker 태그 포함), 시작, 중지, 세부 정보 가져오기, 삭제, Livy 엔드포인트 액세스, 작업 실행 대시보드 가져오기를 포함한 EMR 서버리스 애플리케이션을 관리할 수 있도록 허용합니다. 또한 필요한 EMR Serverless 애플리케이션 런타임 역할을 서비스에 전달할 수 있습니다.

    • EMRServerlessListApplications: 지정된 리전 및 AWS 계정의 모든 EMR Serverless 리소스에 대해 ListApplications 작업을 허용합니다.

    • EMRServerlessPassRole: 역할이 에 전달되는 경우에만 제공된 AWS 계정에서 지정된 런타임 역할(들)을 전달할 수 있습니다emr-serverless.amazonaws.com service.

    • EMRServerlessCreateApplicationAction: 지정된 리전 CreateApplication 및 AWS 계정에서 EMR Serverless 리소스에 대한 및 TagResource 작업을 허용합니다. 그러나 생성되거나 태그가 지정된 리소스에는 null이 아닌 값이 있는 특정 태그 키(sagemaker:domain-arn, sagemaker:user-profile-arnsagemaker:space-arn)가 있어야 합니다.

    • EMRServerlessDenyTaggingAction: 리소스에 지정된 태그 키(sagemaker:domain-arn, 및 sagemaker:space-arn)가 설정되지 않은 경우 지정된 리전 및 AWS 계정의 EMR Serverless 리소스에 sagemaker:user-profile-arn대한 및 TagResource UntagResource 작업입니다.

    • EMRServerlessActions: 리소스에 null이 아닌 값으로 설정된 지정된 태그 키(,StartApplication StopApplication GetApplication DeleteApplication AccessLivyEndpointsGetDashboardForJobRun)가 있는 경우에만 EMR Serverless 리소스에 다양한 작업(, sagemaker:domain-arn, , sagemaker:user-profile-arn, 및 sagemaker:space-arn)을 허용합니다.

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

    { "Version": "2012-10-17", "Statement": [ { "Sid": "EMRServerlessListApplications", "Effect": "Allow", "Action": [ "emr-serverless:ListApplications" ], "Resource": "arn:aws:emr-serverless:region:accountID:/*" }, { "Sid": "EMRServerlessPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::accountID: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:region:accountID:/*", "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:region:accountID:/*", "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:region:accountID:/applications/*", "Condition": { "Null": { "aws:ResourceTag/sagemaker:domain-arn": "false", "aws:ResourceTag/sagemaker:user-profile-arn": "false", "aws:ResourceTag/sagemaker:space-arn": "false" } } } ] }
  • 도메인, 사용자 프로필 및 공간 업데이트 작업 정책 : 다음 정책은 지정된 리전 및 AWS 계정 내의 SageMaker 도메인, 사용자 프로필 및 공간을 업데이트할 수 있는 권한을 부여합니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "SageMakerUpdateResourcesPolicy", "Effect": "Allow", "Action": [ "sagemaker:UpdateDomain", "sagemaker:UpdateUserprofile", "sagemaker:UpdateSpace" ], "Resource": [ "arn:aws:sagemaker:region>:accountID:domain/*", "arn:aws:sagemaker:region:accountID:user-profile/*" ] } ] }