AWS Lambda@Edge 함수를 Amazon CloudFront 배포와 연결했습니다. 하지만 Amazon CloudWatch Logs 로그 스트림에서 Lambda@Edge 함수의 로그를 찾을 수 없습니다.
해결 방법
Lambda@Edge 함수와 연결된 IAM 역할에 대한 권한 확인
Lambda@Edge 함수와 연결된 AWS Identity and Access Management(IAM) 역할에 필요한 권한이 없는 경우 Lambda@Edge 로그가 입력되지 않습니다. 함수 역할에 로그 그룹 및 스트림을 만들고 모든 AWS 리전에 로그 이벤트를 추가하는 데 필요한 권한이 있는지 확인하십시오.
IAM 정책 예시:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
}
]
}
CloudWatch Logs로 데이터를 전송하는 데 필요한 권한에 대한 자세한 내용은 Lambda@Edge에 대한 IAM 권한 및 역할 설정을 참조하십시오.
CloudFront가 Lambda 함수를 호출하는 리전에서 로그 찾기
CloudFront 콘솔에서 리전을 확인합니다. 잘못된 리전을 사용하면 로그가 표시되지 않을 수 있습니다.
Lambda@Edge 함수를 호출하면 Lambda는 요청을 수신한 리전에 CloudWatch Logs 로그 스트림을 만듭니다. 로그 그룹 이름은 /aws/lambda/us-east-1.function-name 형식을 사용합니다.
Lambda@Edge 함수 로그를 찾으려면 CloudFront가 함수를 호출하는 리전을 찾으십시오. 다음 단계를 완료합니다.
- CloudFront 콘솔을 엽니다.
- 원격 분석에서 모니터링을 선택합니다.
- Lambda@Edge 탭을 선택합니다.
- Lambda@Edge 함수를 선택하고, 지표 보기를 선택합니다.
- 함수 로그 보기를 선택하고, CloudFront가 함수를 호출하는 리전을 선택합니다.
참고: 리전에 오류가 표시되면 오류 지표 그래프에서 해당 리전을 선택하십시오.
- CloudFront가 요청을 라우팅한 엣지 로케이션을 확인하려면 x-amz-cf-pop 응답의 헤더 값을 확인하십시오. 그런 다음 CloudWatch Logs에서 해당 리전을 확인하여 로그 파일을 검토합니다. 예를 들어 x-amz-cf-pop이 IAD89-P1인 경우 IAD는 공항 코드이고 CloudFront는 us-east-1에서 요청을 처리했습니다.
Lambda가 CloudFront에 유효하지 않은 응답을 반환하는 경우 CloudFront는 오류 메시지를 로그 파일에 기록합니다. 그런 다음 CloudFront는 로그를 Lambda 함수가 실행된 리전의 CloudWatch 로그에 게시합니다. 로그 그룹은 /aws/cloudfront/LambdaEdge/DistributionId 형식을 사용합니다. CloudWatch Logs 로그 파일을 찾을 수 있는 리전을 찾으려면 Lambda@Edge 리전 확인을 참조하십시오.
관련 정보
보고서, 지표, 로그
계정에서 로그를 CloudWatch로 푸시하는지 확인