엣지 함수 로그 - Amazon CloudFront

엣지 함수 로그

Amazon CloudWatch Logs를 사용하여 엣지 함수(Lambda@Edge 및 CloudFront Functions 모두)에 대한 로그를 가져올 수 있습니다. CloudWatch 콘솔 또는 CloudWatch Logs API를 사용하여 로그에 액세스합니다.

중요

모든 요청을 완전히 살펴보기 보다는 콘텐츠에 대한 요청 특성을 이해하는 데 로그를 사용하는 것이 좋습니다. CloudFront는 최대 효과에 기초하여 엣지 함수 로그를 전송합니다. 요청에 따라서는 실제로 요청이 처리된 지 한참 후에 로그 레코드가 전송되거나 아예 전송되지 않을 수도 있습니다. 로그 항목이 엣지 함수 로그에서 생략되는 경우 엣지 함수 로그의 항목 수가 AWS 결제 및 사용 보고서에 표시되는 사용량과 일치하지 않습니다.

Lambda@Edge 로그

Lambda@Edge는 함수 로그를 CloudWatch Logs에 자동으로 전송하여 함수가 실행되는 AWS 리전에서 로그 스트림을 생성합니다. 로그 그룹 이름은 /aws/lambda/us-east-1.function-name 형식으로 지정됩니다. 여기서 function-name은 함수를 생성할 때 지정한 이름이고 us-east-1은 함수가 실행된 AWS 리전의 리전 코드입니다. 함수가 실행되는 다른 리전의 로그 그룹인 경우에도 로그 그룹 이름에는 us-east-1이 항상 포함됩니다.

참고

Lambda@Edge는 요청 볼륨과 로그 크기에 따라 로그를 제한합니다.

Lambda@Edge 함수 로그 파일을 확인하려면 올바른 AWS 리전의 CloudWatch Logs 파일을 검토해야 합니다. Lambda@Edge 함수가 실핼되는 리전을 보려면 CloudFront 콘솔의 함수에 대한 지표 그래프를 확인하세요. 지표는 각 AWS 리전별로 표시됩니다. 동일한 페이지에서 리전을 선택하고 해당 리전의 로그 파일을 확인하여 문제를 조사할 수 있습니다.

Lambda@Edge 함수와 함께 CloudWatch Logs를 사용하는 방법을 자세히 알아보려면 다음을 참조하세요.

CloudFront Functions 로그

CloudFront 함수의 코드에 console.log() 명령문이 포함되어 있는 경우 CloudFront Functions는 자동으로 이러한 로그 라인을 CloudWatch Logs로 전송합니다. console.log() 명령문이 없으면 아무것도 CloudWatch Logs로 전송되지 않습니다.

CloudFront 함수는 함수를 실행한 엣지 로케이션에 관계없이 항상 미국 동부(버지니아 북부) 리전(us-east-1)에서 로그 스트림을 생성합니다. 로그 그룹 이름은 /aws/cloudfront/function/FunctionName 형식으로 되어 있습니다. 여기서 FunctionName은 함수를 생성할 때 함수에 부여한 이름입니다. 로그 스트림 이름은 YYYY/M/D/UUID 형식입니다.

다음은 CloudWatch Logs로 전송된 로그 메시지 예제입니다. 각 줄은 CloudFront 요청을 고유하게 식별하는 ID로 시작됩니다. 메시지는 CloudFront 배포 ID가 포함된 START 행으로 시작하고 하나의 END 행으로 끝납니다. STARTEND 줄 사이에는 함수의 console.log() 명령문에 의해 생성된 로그 라인이 있습니다.

U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== START DistributionID: E3E5D42GADAXZZ U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== Example function log output U7b4hR_RaxMADupvKAvr8_m9gsGXvioUggLV5Oyq-vmAtH8HADpjhw== END
참고

CloudFront Functions는 프로덕션 요청 및 응답에 대한 응답으로 실행되는 LIVE 스테이지의 함수에 대해서만 로그를 CloudWatch로 전송합니다. 함수를 테스트할 때 CloudFront는 로그를 CloudWatch로 보내지 않습니다. 테스트 출력에는 오류, 컴퓨팅 사용률 및 함수 로그(console.log() 명령문)에 대한 정보가 포함되지만 이 정보는 CloudWatch로 전송되지 않습니다.

CloudFront 함수는 AWS Identity and Access Management(IAM) 서비스 연결 역할을 사용하여 계정의 CloudWatch Logs로 로그를 전송합니다. 서비스 연결 역할은 AWS 서비스에 직접 연결된 IAM 역할입니다. 서비스 연결 역할은 해당 서비스에서 사전 정의하며 서비스에서 사용자를 대신하여 다른 AWS 서비스를 호출하기 위해 필요한 모든 권한을 포함합니다. CloudFront 함수는 AWSServiceRoleForCloudFrontLogger라는 서비스 연결 역할을 사용합니다. 이 역할에 대한 자세한 내용은 Lambda@Edge의 서비스 연결 역할 (Lambda@Edge에서 동일한 서비스 연결 역할 사용) 단원을 참조하세요.

유효성 검사 오류 또는 실행 오류로 인해 함수가 실패하면 정보가 CloudFront의 표준 로그실시간 로그에 기록됩니다. 오류에 대한 정보는 x-edge-result-type, x-edge-response-result-typex-edge-detailed-result-type 필드에 기록됩니다.