AWS Glue 추출, 로드 및 변환(ETL) 작업에서는 Amazon CloudWatch에 로그를 기록하지 않습니다.
간략한 설명
AWS Glue 작업에서 CloudWatch에 로그를 기록하지 않는 경우 다음을 확인하세요.
- AWS Glue 작업에 필요한 모든 AWS Identity and Access Management(IAM) 권한이 있습니다.
- AWS Key Management Service(AWS KMS) 키를 사용하면 CloudWatch 로그에서 이 키를 사용할 수 있습니다.
- 작업에서 올바른 CloudWatch 로그 그룹을 확인합니다.
- logs:AssociateKmsKey IAM 권한이 해당 AWS Glue 역할에 연결됩니다.
- AWS Glue Spark ETL 작업에 연속 로깅을 사용하지 않는 경우 로그 집계 전에 해당 작업이 실패했는지 확인하세요.
해결 방법
AWS Glue 업무에 CloudWatch 로그 그룹을 생성하고 이에 쓸 수 있는 권한이 없음
AWSGlueServiceRole 관리형 정책을 사용하지 않는 경우 ETL 작업에 연결된 IAM 역할에 올바른 권한이 있는지 확인하세요. CloudWatch를 사용하려면 다음과 같은 권한이 필요합니다. 작업이 사용자 지정 로그 그룹을 사용하는 경우 IAM 정책에서 해당 사용자 지정 로그 그룹에 대한 액세스를 제공해야 합니다.
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:*:/aws-glue/*",
"arn:aws:logs:*:*:*:/customlogs/*"
]
}
참고:****arn:aws:logs:*:*:*:/customlogs/*를 사용자 지정 로그 그룹의 ARN으로 바꾸세요.
AWS KMS 키가 CloudWatch 로그에 권한을 부여하지 않음
AWS Glue 작업에서 보안 구성을 사용하는 경우 AWS KMS 키를 확인하세요. 보안 구성에 연결된 AWS KMS 키가 CloudWatch 로그에서 이 키를 사용할 수 있도록 허용해야 합니다. 해당 AWS KMS 키에 다음 정책을 연결합니다.
{ "Effect": "Allow",
"Principal": {
"Service": "logs.region.amazonaws.com"
},
"Action": [
"kms:Encrypt*",
"kms:Decrypt*",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:Describe*"
],
"Resource": "*",
"Condition": {
"ArnEquals": {
"kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:us-west-2:1111222233334444:log-group:log-group-name"
}
}
}
us-west-2를 귀하의 AWS 리전으로, 1111222233334444를 귀하의 AWS 계정 ID로, og-group-name을 귀하의 로그 그룹 이름으로 바꾸세요.
자세한 내용은 AWS Key Management Service를 사용하여 CloudWatch 로그의 로그 데이터 암호화를 참조하세요.
또한 logs:AssociateKmsKey IAM 권한이 AWS Glue 역할에 연결되어 있는지 확인하세요. 자세한 내용은 연속 로깅을 통한 보안 구성을 참조하세요.
연속 로깅이 켜져 있지 않음
AWS Glue Spark ETL 작업에 대한 연속 로깅을 켜지 않으면 작업이 완료된 후 로그 집계가 발생합니다. 로그 집계 전에 작업이 실패하면 로그가 CloudWatch로 푸시되지 않을 수 있습니다.
AWS Glue 작업에 대한 연속 로깅을 켜서 애플리케이션에 장애가 발생할 경우에 대비하여 로그가 채워지도록 합니다.
올바른 로그 그룹에서 로그를 찾고 있지 않음
연속 로깅을 켜고 기본 로그 그룹을 사용하는 경우 다음 위치에서 CloudWatch 로그를 찾을 수 있습니다.
-
인쇄 문의 메시지와 같은 사용자 지정 메시지는 /aws-glue/jobs/output log group으로 푸시됩니다.
-
AWS Glue 로거의 메시지는 /aws-glue/jobs/logs-v2 아래의 드라이버 로그로 푸시됩니다.
logger = glueContext.get_logger()
logger.info("MY INFO LOGGER MESSAGE" )
logger.error("MY ERROR LOGGER MESSAGE")
-
Python 로거의 메시지는 /aws-glue/jobs/output 아래의 드라이버 로그로 푸시됩니다.
import logging
MSG_FORMAT = '%(asctime)s %(levelname)s %(name)s: %(message)s'
DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S'
logging.basicConfig(format=MSG_FORMAT, datefmt=DATETIME_FORMAT)
logger2 = logging.getLogger("logger2")
logger2.setLevel(logging.INFO)
logger2.info("Test log message from python logging")
-
보안 구성을 사용하는 작업은 사용자 지정 메시지를 AWS Glue 로거에서 /aws-glue/jobs/logs-v2-testconfig로 푸시합니다. testconfig를 보안 구성의 이름으로 바꾸십시오.
-
보안 구성을 사용하는 작업은 Python 로거에서 사용자 지정 메시지를 /aws-glue/jobs/testconfig-role/job-role/output으로 푸시합니다. testconfig를 보안 구성의 이름으로 바꾸고, job-role을 AWS Glue 업무로 바꿉니다.
연속 로깅을 켜고 사용자 지정 로그 그룹을 사용하는 경우 다음 위치에서 CloudWatch 로그를 찾을 수 있습니다.
- 사용자 지정 로그 메시지, 드라이버 로그 및 실행 로그는 사용자 지정 로그 그룹에 저장됩니다.
연속 로깅을 켜지 않는 경우 다음 위치에서 CloudWatch 로그를 찾을 수 있습니다.
- 인쇄 문 출력 및 Python 로깅 메시지와 같은 메시지는 /aws-glue/jobs/output 아래에 저장됩니다.
- AWS Glue 로거의 모든 사용자 지정 메시지는 /aws-glue/jobs/error 아래에 저장됩니다.
자세한 내용은 로깅 동작을 참조하세요.
관련 정보
AWS Glue에서의 로깅 및 모니터링
AWS Glue 모니터링