

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

# 노트북에서 Amazon EMR 클러스터에 연결
<a name="scheduled-notebook-connect-emr"></a>

Studio의 Jupyter notebook에서 Amazon EMR 클러스터에 연결하는 경우 추가 설정을 수행해야 할 수 있습니다. 특히 다음 논의에서는 두 가지 문제를 다룹니다.
+ **Amazon EMR 연결 명령에 파라미터 전달** SparkMagic 커널에서는 Papermill이 파라미터를 전달하는 방식과 SparkMagic이 파라미터를 수신하는 방식이 다르기 때문에 Amazon EMR 연결 명령에 전달하는 파라미터가 예상대로 작동하지 않을 수 있습니다. 이 제한을 해결하기 위한 차선책은 파라미터를 환경 변수로 전달하는 것입니다. 이 문제와 차선책에 대한 자세한 내용은 [EMR 연결 명령에 파라미터 전달](#scheduled-notebook-connect-emr-pass-param)섹션을 참조하세요.
+ **사용자 자격 증명을 Kerberos, LDAP 또는 HTTP 기본 인증 Amazon EMR 클러스터에 전달** 대화형 모드에서 Studio는 로그인 자격 증명을 입력할 수 있는 팝업 양식을 통해 자격 증명을 요청합니다. 예약된 비대화형 노트북에서는 AWS Secrets Manager을 통해 전달해야 합니다. 예약된 노트북 작업 AWS Secrets Manager 에서를 사용하는 방법에 대한 자세한 내용은 섹션을 참조하세요[사용자 자격 증명을 Kerberos, LDAP 또는 HTTP 기본 인증 Amazon EMR 클러스터에 전달](#scheduled-notebook-connect-emr-credentials).

## EMR 연결 명령에 파라미터 전달
<a name="scheduled-notebook-connect-emr-pass-param"></a>

SparkMagic PySpark 및 Spark 커널이 포함된 이미지를 사용하고 있고 EMR 연결 명령을 파라미터화하려면, **추가 옵션** 드롭다운 메뉴의 작업 생성 양식에서 파라미터 필드 대신 **환경 변수** 필드에 파라미터를 입력하세요. Jupyter notebook의 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 기본 인증 Amazon EMR 클러스터에 전달
<a name="scheduled-notebook-connect-emr-credentials"></a>

Kerberos, LDAP 또는 HTTP 기본 인증 인증을 사용하는 Amazon EMR 클러스터에 대한 보안 연결을 설정하려면를 사용하여 연결 명령 AWS Secrets Manager 에 사용자 자격 증명을 전달합니다. Secrets Manager 보안 암호를 생성하는 방법에 대한 자세한 내용은 [AWS Secrets Manager 보안 암호 생성](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)을 참조하세요. 보안 암호에는 사용자 이름과 암호가 포함되어야 합니다. 다음 예시와 같이 `--secrets`인수와 함께 암호를 전달합니다.

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

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

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

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

****  

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

------

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

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

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{111122223333}}: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:{{111122223333}}:secret:aes123-1a2b3c",
                "arn:aws:secretsmanager:us-west-2:{{111122223333}}:secret:aes456-4d5e6f",
                "arn:aws:secretsmanager:us-west-2:{{111122223333}}:secret:aes789-7g8h9i"
            ]
        }
    ]
}
```

------