STUDY/Cloud

[AWS] EMR 클러스터 생성 시 정책 설정 디버깅 (클러스터 생성이 되지 않을 때)

wonpick 2024. 11. 24. 23:04

 

0. EMR 클러스터 생성 시 정책 설정 

AmazonEMRFullAccessPolicy_v2 정책만으로 EMR 클러스터 생성이 실패하는 상황을 겪으면서 정책에 대해 찾아보게 되었습니다.

이를 통해 EMR 관련 정책과 v2 태그 설정에 대한 내용을 공유해보고자 합니다!

 

Amazon EMR 클러스터를 생성하려면 AmazonEMRFullAccessPolicy_v2 또는 AmazonEMRServicePolicy_v2를 사용을 권장한다고 합니다.

이유 -> 전체 액세스를 위한 IAM 관리형 정책(지원 중단 예정)

 

AmazonElasticMapReduceFullAccess 관리형 정책은 지원 중단될 예정이며 더 이상 Amazon EMR에서 사용하지 않는 것이 좋습니다. 대신 AmazonEMRFullAccessPolicy_v2를 사용해야 합니다. IAM 서비스에서 결국 v1 정책을 더 이상 사용하지 않게 되면 해당 정책을 역할에 연결할 수 없게 됩니다. 하지만 기존 역할에서 지원 중단된 정책을 사용해도 클러스터에 해당 역할을 연결할 수 있습니다.

간단한 요약을 하자면, AmazonEMRFullAccessPolicy_v2는 최신의 EMR과 서버리스 기능을 지원하고, AmazonElasticMapReduceFullAccess는 레거시 EMR 클러스터에 맞춰진 정책이라고 생각할 수 있습니다. 

(AmazonElasticMapReduceFullAccess 이 제한 없이 범용적이므로)

이 과정에서 중요한 단계 중 하나는 사전 정의된 태그(for-use-with-amazon-emr-managed-policies = true)를 VPC, 서브넷, 보안 그룹 등의 리소스에 추가하는 것입니다. 이 태그가 없으면 EMR 클러스터 생성이 실패할 수 있습니다. 

이번 글에서는 AmazonEMRFullAccessPolicy_v2 정책 사용 시 Amazon EMR 클러스터 생성에 필요한 태그 설정 방법과 그 중요성에 대해 알아보겠습니다.

 

1. 태그의 역할

Amazon EMR 클러스터 생성 시, 'aws:RequestTag/for-use-with-amazon-emr-managed-policies' 태그는 중요한 역할을 합니다. 이 태그는 Amazon EMR 관리형 정책이 리소스(VPC, 서브넷, 보안 그룹 등)를 사용할 수 있도록 허용하는 기능을 합니다. 이 태그가 없으면 Amazon EMR이 해당 리소스를 사용할 수 없으므로 클러스터 생성이 실패하게 됩니다.

2. 태그를 설정해야 하는 리소스

- VPC: EMR 클러스터가 생성될 네트워크
- 서브넷: EMR 인스턴스가 생성될 서브넷
- 보안 그룹: EC2 인스턴스 및 ENI가 사용할 네트워크 규칙
- EBS 볼륨: EMR 작업에 사용될 스토리지

3. 태그 추가 방법

태그는 AWS Management Console, AWS CLI, 또는 AWS SDK를 통해 리소스에 추가할 수 있습니다.

 

📍AWS Management Console을 사용한 태그 추가

 

  • VPC에 태그 추가
    • AWS Management Console에서 VPC 서비스로 이동해서 해당 VPC를 선택한 후 태그 탭을 클릭하고 키는 'for-use-with-amazon-emr-managed-policies', 값은 'true'로 태그를 추가
  • 서브넷에 태그 추가
    • AWS Management Console에서 VPC > 서브넷으로 이동해서 사용하려는 서브넷을 선택하고, 태그를 추가
  • 보안 그룹에 태그 추가
    • AWS Management Console에서 EC2 > 보안 그룹으로 이동해서 사용하려는 보안 그룹을 선택하고, 태그를 추가

 

📍AWS CLI를 사용한 태그 추가

  • VPC에 태그 추가:
aws ec2 create-tags --resources <vpc-id> --tags Key=for-use-with-amazon-emr-managed-policies,Value=true

 

  • 서브넷에 태그 추가:
aws ec2 create-tags --resources <subnet-id> --tags Key=for-use-with-amazon-emr-managed-policies,Value=true

 

  • 보안 그룹에 태그 추가:
aws ec2 create-tags --resources <security-group-id> --tags Key=for-use-with-amazon-emr-managed-policies,Value=true



JSON을 통한 태그 변경
AWS CloudFormation이나 직접 JSON 설정을 사용하여 리소스를 관리하는 경우, JSON에 태그를 명시적으로 추가해야 합니다. 아래는 CloudFormation을 사용하여 VPC에 태그를 추가하는 예시입니다.

{
  "Resources": {
    "MyVPC": {
      "Type": "AWS::EC2::VPC",
      "Properties": {
        "CidrBlock": "10.0.0.0/16",
        "Tags": [
          {
            "Key": "for-use-with-amazon-emr-managed-policies",
            "Value": "true"
          }
        ]
      }
    }
  }
}




 

4. 기타

EMR Serverless와 클러스터 비교
Amazon EMR은 크게 두 가지 방식으로 사용 가능합니다: EMR Serverless와 EMR 클러스터. 두 가지 방식의 주요 차이점은 리소스 프로비저닝과 태그 설정 여부에 있습니다.

EMR Serverless: 리소스 프로비저닝 불필요
- 자동화된 리소스 관리: Amazon EMR이 필요한 모든 리소스를 자동으로 관리합니다.
- 태그 불필요: 사용자가 직접 태그를 설정하거나 리소스를 관리할 필요가 없습니다.
- 이점: 설정 간소화, 사용자 개입 최소화.

EMR 클러스터: 리소스 프로비저닝 필요
- 수동 리소스 관리 필요: 사용자가 직접 EC2 인스턴스, VPC, 서브넷, 보안 그룹 등을 설정해야 합니다.
- 태그 추가 필수: Amazon EMR 관리형 정책을 사용하기 위해 필수 태그를 리소스에 추가해야 합니다.
- 이점: 복잡한 네트워크 구성 및 커스터마이징이 가능한 환경 제공.

 

<간단한 요약>

  • AmazonEMRFullAccessPolicy_v2 -> emr:*  Serverless
  • AmazonElasticMapReduceFullAccess -> elasticmapreduce:*  Legacy EMR

비교 표

항목 EMR Serverless EMR 클러스터
리소스 관리 자동 (서버리스 환경) 사용자가 직접 리소스 프로비저닝 필요
리소스 태그 필요 여부 불필요 필수
리소스 사용 범위 Amazon이 자동으로 생성 및 관리 사용자 지정 리소스 (VPC, 서브넷, 보안 그룹 등)
작업 실행 방식 작업(Job)을 제출하고 자동으로 실행 EC2 인스턴스 기반 클러스터에서 작업 실행
유연성 간단한 워크로드에 적합 복잡한 네트워크 및 커스텀 환경 지원
비용 작업 실행 중에만 비용 발생 클러스터 실행 시간 동안 지속 비용 발생

 

5. 결론

Amazon EMR 클러스터를 성공적으로 생성하려면 필수 리소스(VPC, 서브넷, 보안 그룹 등)에 'for-use-with-amazon-emr-managed-policies = true' 태그를 반드시 추가해야 합니다. 또한, 복잡한 환경을 관리하고 커스터마이징이 필요한 경우에는 EMR 클러스터를 사용하는 것이 적합하며, 단순한 작업 처리를 원한다면 EMR Serverless를 사용하는 것이 효율적입니다. 적절한 IAM 정책 선택 역시 매우 중요하며, 최신 기능을 지원하려면 EMRFullAccess 정책을 사용하는 것이 좋습니다.

 

6. 참고

emr serverless, emr studio는 아래와 같이 사용자 정의 정책을 추가해야한다.

emr serverless

emr studio