SSE-KMS 암호화를 적용하는 정책이 연결된 S3 버킷에서 Amazon EMR 클러스터 로그를 볼 수 없는 이유는 무엇입니까?

최종 업데이트 날짜: 2020년 1월 20일

Amazon EMR 클러스터 로그가 지정한 Amazon Simple Storage Service(Amazon S3) 버킷에 보관되지 않습니다. S3 버킷에는 AWS Key Management Service(SSE-KMS)를 사용한 서버 측 암호화를 적용하는 정책이 연결되어 있습니다. 로그 쓰기가 실패하고 다음과 같은 403 오류가 발생합니다.

2020-01-15 04:01:25,247 INFO logspusher-6: Failed to upload 126 logs:
USE: /emr/instance-state/instance-state.log-2020-01-14-20-15.gz reason: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 8B99FE94D1678AAB)

간략한 설명

Amazon EMR 클러스터에 대해 로깅을 활성화하면 LogPusher 서비스가 클러스터 로그를 지정된 S3 버킷에 보관합니다. LogPusher는 SSE-KMS가 아닌 AES-256 암호화를 사용하여 로그를 작성합니다. SSE-KMS 암호화 정책이 있는 S3 버킷에 로그를 쓰려면 sync 명령을 사용하여 파일을 수동으로 업로드합니다.

​해결 방법

1.    SSH를 사용하여 마스터 노드에 연결하십시오.

2.    복사할 로그 파일을 찾습니다. 예를 들어 단계 로그는 마스터 노드의 /mnt/var/log/hadoop/steps에 저장됩니다.

3.    로그 파일을 S3 버킷에 복사하려면 -sse-kms-key-id 필드와 함께 sync 명령을 실행합니다. 예:

aws s3 sync /mnt/var/log/hadoop/steps/ s3://awsexamplebucket/elasticmapreduce/${cluster_id}/steps/ --sse aws:kms --sse-kms-key-id 17246c74-6ff4-4adb-86e5-76f7f1603f00

cron 작업을 사용하여 sync 명령을 자동화할 수 있습니다. Cron 작업을 구성하려면 Amazon EMR 클러스터를 시작할 때 모든 노드에서 사용자 지정 부트스트랩 작업을 실행합니다.