

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

# Amazon EMR Serverless 시작하기
<a name="getting-started"></a>

이 자습서는 샘플 Spark 또는 Hive 워크로드를 배포하는 경우 EMR Serverless를 시작하는 데 도움이 됩니다. 자체 애플리케이션을 생성, 실행 및 디버깅합니다. 이 자습서의 대부분에 나오는 기본 옵션을 표시합니다.

EMR Serverless 애플리케이션을 시작하기 전에 먼저 다음 태스크를 완료합니다.

**Topics**
+ [EMR Serverless를 사용할 수 있는 권한 부여](#gs-permissions)
+ [EMR Serverless에 대한 스토리지 준비](#gs-prepare-storage)
+ [대화형 워크로드를 실행하도록 EMR Studio 생성](#gs-interactive)
+ [작업 런타임 역할 생성](#gs-runtime-role)
+ [콘솔에서 Amazon Redshift Serverless 시작하기](gs-console.md)
+ [에서 시작하기 AWS CLI](gs-cli.md)

## EMR Serverless를 사용할 수 있는 권한 부여
<a name="gs-permissions"></a>

EMR Serverless를 사용하려면 EMR Serverless에 대한 권한을 부여하는 정책이 연결된 사용자 또는 IAM 역할이 필요합니다. 사용자를 생성하고 해당 사용자에게 적절한 정책을 연결하려면 [권한 부여](setting-up.md#setting-up-iam)의 지침을 수행합니다.

## EMR Serverless에 대한 스토리지 준비
<a name="gs-prepare-storage"></a>

이 자습서에서는 S3 버킷을 사용하여 EMR Serverless 애플리케이션을 사용해 실행할 샘플 Spark 또는 Hive 워크로드의 출력 파일 및 로그를 저장합니다. 버킷을 생성하려면 Amazon Simple Storage Service 콘솔 사용 설명서의 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)에 나온 지침을 따르세요.** `amzn-s3-demo-bucket`에 대한 추가 참조를 새로 생성된 버킷의 이름으로 바꿉니다.

## 대화형 워크로드를 실행하도록 EMR Studio 생성
<a name="gs-interactive"></a>

EMR Serverless를 사용하여 EMR Studio에서 호스팅되는 노트북을 통해 대화형 쿼리를 실행하려면 S3 버킷 및 [EMR Serverless에 대한 최소 서비스 역할](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-service-role.html#emr-studio-service-role-serverless) 지정하여 워크스페이스를 생성해야 합니다. 설정 단계는 **Amazon EMR 관리 안내서의 [EMR Studio 설정](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-set-up.html)을 참조하세요. 대화형 워크로드에 대한 자세한 내용은 [EMR Studio를 통해 EMR Serverless에서 대화형 워크로드 실행](interactive-workloads.md) 섹션을 참조하세요.

## 작업 런타임 역할 생성
<a name="gs-runtime-role"></a>

EMR Serverless에서 실행되는 작업은 런타임 시 특정 AWS 서비스 및 리소스에 대한 세분화된 권한을 제공하는 런타임 역할을 사용합니다. 이 자습서에서는 퍼블릭 S3 버킷에서 데이터 및 스크립트를 호스팅합니다. `amzn-s3-demo-bucket` 버킷은 출력을 저장합니다.

작업 런타임 역할을 설정하려면 먼저 EMR Serverless에서 새 역할을 사용할 수 있도록 신뢰 정책을 사용하여 런타임 역할을 생성합니다. 그런 다음, 필요한 S3 액세스 정책을 해당 역할에 연결합니다. 다음 단계에서 프로세스를 안내합니다.

------
#### [ Console ]

1. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔로 이동합니다.

1. 왼쪽 탐색 창에서 **정책**을 선택합니다.

1. **정책 생성**을 선택하세요.

1. **정책 생성** 페이지가 새 탭에서 열립니다. **정책 편집기**를 Json으로 선택하고 아래에 정책 JSON을 붙여넣습니다.
**중요**  
아래 정책에서 `amzn-s3-demo-bucket`을 [EMR Serverless에 대한 스토리지 준비](#gs-prepare-storage)에서 생성한 실제 버킷 이름으로 바꿉니다. S3 액세스에 대한 기본 정책입니다. 추가 작업 런타임 역할 예제는 [Amazon EMR Serverless에 대한 작업 런타임 역할](security-iam-runtime-role.md) 섹션을 참조하세요.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "ReadAccessForEMRSamples",
         "Effect": "Allow",
         "Action": [
           "s3:GetObject",
           "s3:ListBucket"
         ],
         "Resource": [
           "arn:aws:s3:::*.elasticmapreduce",
           "arn:aws:s3:::*.elasticmapreduce/*"
         ]
       },
       {
         "Sid": "FullAccessToOutputBucket",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:GetObject",
           "s3:ListBucket",
           "s3:DeleteObject"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket",
           "arn:aws:s3:::amzn-s3-demo-bucket/*"
         ]
       },
       {
         "Sid": "GlueCreateAndReadDataCatalog",
         "Effect": "Allow",
         "Action": [
           "glue:GetDatabase",
           "glue:CreateDatabase",
           "glue:GetDataBases",
           "glue:CreateTable",
           "glue:GetTable",
           "glue:UpdateTable",
           "glue:DeleteTable",
           "glue:GetTables",
           "glue:GetPartition",
           "glue:GetPartitions",
           "glue:CreatePartition",
           "glue:BatchCreatePartition",
           "glue:GetUserDefinedFunctions"
         ],
         "Resource": [
           "*"
         ]
       }
     ]
   }
   ```

------

1. **다음**을 선택하여 정책의 이름(예: `EMRServerlessS3AndGlueAccessPolicy` 및 **정책 만들기**)을 입력합니다.

1. IAM 콘솔의 왼쪽 탐색 창에서 **역할**을 선택합니다.

1. **역할 생성**을 선택합니다.

1. 역할 유형에서 **사용자 지정 신뢰 정책**을 선택하고 다음 신뢰 정책을 붙여넣습니다. 이렇게 하면 Amazon EMR Serverless 애플리케이션에 제출된 작업이 사용자를 대신하여 다른 AWS 서비스 에 액세스할 수 있습니다.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "sts:AssumeRole"
         ],
         "Resource": "arn:aws:iam::123456789012:role/EMRServerlessExecutionRole",
         "Sid": "AllowSTSAssumerole"
       }
     ]
   }
   ```

------

1. **다음**을 선택하여 **권한 추가** 페이지로 이동한 다음, **EMRServerlessS3AndGlueAccessPolicy**를 선택합니다.

1. **이름, 검토 및 생성** 페이지의 **역할 이름**에서 역할 이름(예: `EMRServerlessS3RuntimeRole`)을 입력합니다. 새 IAM 역할을 생성하려면 **역할 생성**을 선택합니다.

------
#### [ CLI ]

1. IAM 역할에 사용할 신뢰 정책이 포함된 `emr-serverless-trust-policy.json`이라는 이름의 파일을 생성합니다. 파일에 다음 정책을 포함해야 합니다.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "EMRServerlessTrustPolicy",
         "Action": [
           "sts:AssumeRole"
         ],
         "Effect": "Allow",
         "Resource": "arn:aws:iam::123456789012:role/EMRServerlessExecutionRole"
       }
     ]
   }
   ```

------

1. `EMRServerlessS3RuntimeRole`라는 IAM 역할을 생성합니다. 이전 단계에서 생성한 신뢰 정책을 사용합니다.

   ```
   aws iam create-role \
       --role-name EMRServerlessS3RuntimeRole \
       --assume-role-policy-document file://emr-serverless-trust-policy.json
   ```

   출력에서 ARN을 기록합니다. 작업 제출 중에 새 역할의 ARN을 사용하고, 이후 이를 `job-role-arn`으로 참조합니다.

1. 워크로드에 대한 IAM 정책을 정의하는 `emr-sample-access-policy.json` 파일을 생성합니다. 그러면 퍼블릭 S3 버킷에 저장된 스크립트 및 데이터에 대한 읽기 액세스와 `amzn-s3-demo-bucket`에 대한 읽기-쓰기 액세스를 제공합니다.
**중요**  
아래 정책에서 `amzn-s3-demo-bucket`을 [EMR Serverless에 대한 스토리지 준비](#gs-prepare-storage)에서 생성한 실제 버킷 이름으로 바꿉니다. 이는 AWS Glue 및 S3 액세스에 대한 기본 정책입니다. 추가 작업 런타임 역할 예제는 [Amazon EMR Serverless에 대한 작업 런타임 역할](security-iam-runtime-role.md) 섹션을 참조하세요.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "ReadAccessForEMRSamples",
         "Effect": "Allow",
         "Action": [
           "s3:GetObject",
           "s3:ListBucket"
         ],
         "Resource": [
           "arn:aws:s3:::*.elasticmapreduce",
           "arn:aws:s3:::*.elasticmapreduce/*"
         ]
       },
       {
         "Sid": "FullAccessToOutputBucket",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:GetObject",
           "s3:ListBucket",
           "s3:DeleteObject"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket",
           "arn:aws:s3:::amzn-s3-demo-bucket/*"
         ]
       },
       {
         "Sid": "GlueCreateAndReadDataCatalog",
         "Effect": "Allow",
         "Action": [
           "glue:GetDatabase",
           "glue:CreateDatabase",
           "glue:GetDataBases",
           "glue:CreateTable",
           "glue:GetTable",
           "glue:UpdateTable",
           "glue:DeleteTable",
           "glue:GetTables",
           "glue:GetPartition",
           "glue:GetPartitions",
           "glue:CreatePartition",
           "glue:BatchCreatePartition",
           "glue:GetUserDefinedFunctions"
         ],
         "Resource": [
           "*"
         ]
       }
     ]
   }
   ```

------

1. **3단계**에서 생성한 정책 파일을 사용하여 IAM 정책 `EMRServerlessS3AndGlueAccessPolicy`를 생성합니다. 다음 단계에서 새 정책의 ARN을 사용하므로 출력에서 ARN을 기록합니다.

   ```
   aws iam create-policy \
       --policy-name EMRServerlessS3AndGlueAccessPolicy \
       --policy-document file://emr-sample-access-policy.json
   ```

   출력에서 새 정책의 ARN을 기록합니다. 다음 단계에서 `policy-arn`을 대체합니다.

1. IAM 정책 `EMRServerlessS3AndGlueAccessPolicy`를 작업 런타임 역할 `EMRServerlessS3RuntimeRole`에 연결합니다.

   ```
   aws iam attach-role-policy \
       --role-name EMRServerlessS3RuntimeRole \
       --policy-arn policy-arn
   ```

------