노트북에서 Amazon EMR 클러스터에 연결 - Amazon SageMaker

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

노트북에서 Amazon EMR 클러스터에 연결

Studio의 Jupyter 노트북에서 Amazon EMR 클러스터에 연결하는 경우 추가 설정을 수행해야 할 수 있습니다. 특히 다음 논의에서는 두 가지 문제를 다룹니다.

  • Amazon EMR 연결 명령 에 파라미터를 전달합니다. SparkMagic 커널에서는 Papermill이 파라미터를 전달하는 방식과 가 파라미터를 SparkMagic 수신하는 방식이 다르기 때문에 Amazon EMR 연결 명령에 전달하는 파라미터가 예상대로 작동하지 않을 수 있습니다. 이 제한을 해결하기 위한 차선책은 파라미터를 환경 변수로 전달하는 것입니다. 이 문제와 차선책에 대한 자세한 내용은 EMR 연결 명령에 파라미터 전달섹션을 참조하세요.

  • 사용자 보안 인증 정보를 Kerberos, LDAP또는 HTTP Basic Auth 인증 Amazon EMR 클러스터 에 전달합니다. 대화형 모드에서 Studio는 로그인 자격 증명을 입력할 수 있는 팝업 양식을 통해 자격 증명을 요청합니다. 예약된 비대화형 노트북에서는 AWS Secrets Manager을 통해 전달해야 합니다. 예약된 노트북 작업 AWS Secrets Manager 에서 를 사용하는 방법에 대한 자세한 내용은 섹션을 참조하세요Kerberos, LDAP또는 HTTP Basic Auth 인증 Amazon EMR 클러스터에 사용자 보안 인증 정보 전달.

EMR 연결 명령에 파라미터 전달

SparkMagic PySpark 및 Spark 커널과 함께 이미지를 사용하고 있고 EMR 연결 명령을 파라미터화하려는 경우 작업 생성 양식(추가 옵션 드롭다운 메뉴)의 파라미터 필드 대신 환경 변수 필드에 파라미터를 제공합니다. Jupyter 노트북의 EMR 연결 명령이 이러한 파라미터를 환경 변수로 전달하는지 확인합니다. 예를 들어 작업을 생성할 때 cluster-id를 환경 변수로 전달한다고 가정해 보겠습니다. EMR 연결 명령은 다음과 같아야 합니다.

%%local import os
%sm_analytics emr connect —cluster-id {os.getenv('cluster_id')} --auth-type None

SparkMagic 및 Papermill의 요구 사항을 충족하려면 이 해결 방법이 필요합니다. 백그라운드 컨텍스트의 경우 SparkMagic 커널은 %%local 매직 명령이 정의한 모든 로컬 변수와 함께 제공될 것으로 예상합니다. 하지만 Papermill은 재정의와 함께 %%local매직 명령을 전달하지 않습니다. 이 Papermill 제한을 해결하려면 환경 변수 필드에 파라미터를 환경 변수로 입력해야 합니다.

Kerberos, LDAP또는 HTTP Basic Auth 인증 Amazon EMR 클러스터에 사용자 보안 인증 정보 전달

Kerberos, LDAP또는 HTTP Basic Auth 인증을 사용하는 Amazon EMR 클러스터에 대한 보안 연결을 설정하려면 를 사용하여 연결 명령 AWS Secrets Manager 에 사용자 보안 인증을 전달합니다. Secrets Manager 보안 암호를 생성하는 방법에 대한 자세한 내용은 AWS Secrets Manager 보안 암호 생성을 참조하세요. 보안 암호에는 사용자 이름과 암호가 포함되어야 합니다. 다음 예시와 같이 --secrets인수와 함께 암호를 전달합니다.

%sm_analytics emr connect --cluster-id j_abcde12345 --auth Kerberos --secret aws_secret_id_123

관리자는 특수 태그를 기반으로 액세스를 할당하는 attribute-based-access-control (ABAC) 메서드를 사용하여 유연한 액세스 정책을 설정할 수 있습니다. 유연한 액세스를 설정하여 계정의 모든 사용자에 대한 단일 암호 또는 각 사용자에 대한 암호를 만들 수 있습니다. 다음 코드 샘플은 이러한 시나리오를 보여줍니다.

계정 내 모든 사용자를 위한 단일 비밀번호를 생성합니다.

{ "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : {"AWS" : "arn:aws:iam::AWS_ACCOUNT_ID:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"}, "Action" : "secretsmanager:GetSecretValue", "Resource" : [ "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID:secret:aes123-1a2b3c", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID:secret:aes456-4d5e6f", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID:secret:aes789-7g8h9i" ] } ] }

각 사용자마다 다른 비밀번호를 생성합니다.

다음 예시와 같이 PrincipleTag태그를 사용하여 사용자별로 다른 보안 암호를 생성할 수 있습니다.

{ "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : {"AWS" : "arn:aws:iam::AWS_ACCOUNT_ID:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"}, "Condition" : { "StringEquals" : { "aws:ResourceTag/user-identity": "${aws:PrincipalTag/user-identity}" } }, "Action" : "secretsmanager:GetSecretValue", "Resource" : [ "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID:secret:aes123-1a2b3c", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID:secret:aes456-4d5e6f", "arn:aws:secretsmanager:us-west-2:AWS_ACCOUNT_ID:secret:aes789-7g8h9i" ] } ] }