엣지 함수 로그
Amazon CloudWatch Logs를 사용하여 엣지 함수(Lambda@Edge 및 CloudFront Functions 모두)에 대한 로그를 가져올 수 있습니다. CloudWatch 콘솔 또는 CloudWatch Logs API를 사용하여 로그에 액세스할 수 있습니다.
중요
모든 요청을 완전히 살펴보기 보다는 콘텐츠에 대한 요청 특성을 이해하는 데 로그를 사용하는 것이 좋습니다. CloudFront는 최대 효과에 기초하여 엣지 함수 로그를 전송합니다. 요청에 따라서는 실제로 요청이 처리된 지 한참 후에 로그 레코드가 전송되거나 아예 전송되지 않을 수도 있습니다. 로그 항목이 엣지 함수 로그에서 생략되는 경우 엣지 함수 로그의 항목 수가 AWS 결제 및 사용 보고서에 표시되는 사용량과 일치하지 않습니다.
Lambda@Edge 로그
Lambda@Edge는 함수 로그를 CloudWatch Logs에 자동으로 전송하여 함수가 취소되는 AWS 리전에서 로그 스트림을 만듭니다. AWS Lambda에서 함수를 생성하거나 수정할 때 기본 CloudWatch 로그 그룹 이름을 사용하거나 이름을 사용자 지정할 수 있습니다.
-
기본 로그 그룹 이름은
/aws/lambda/
입니다. 여기서<FunctionName>
은 함수를 생성할 때 지정한 이름입니다. CloudWatch로 로그를 전송할 때 Lambda@Edge는 함수 이름에<FunctionName>
us-east-1
접두사를 자동으로 추가하여 로그 그룹 이름이/aws/lambda/us-east-1.
이 되도록 합니다. 이 접두사는 함수가 생성된 AWS 리전에 해당합니다. 이 접두사는 함수가 간접적으로 호출되는 다른 리전에서도 로그 그룹 이름의 일부로 유지됩니다.<FunctionName>
-
/
과 같은 사용자 지정 로그 그룹 이름을 지정하면 Lambda@Edge가 리전 접두사를 추가하지 않습니다. 로그 그룹 이름은 함수가 간접적으로 호출되는 다른 모든 리전에서 동일하게 유지됩니다.MyLogGroup
참고
사용자 지정 로그 그룹을 생성하고 기본 /aws/lambda/
과 동일한 이름을 지정하면Lambda@Edge가 함수 이름에 <FunctionName>
us-east-1
접두사를 추가합니다.
Lambda@Edge 함수는 로그 그룹 이름 사용자 지정 외에도 JSON 및 일반 텍스트 로그 형식과 로그 수준 필터링을 지원합니다. 자세한 내용은 AWS Lambda 개발자 안내서의 Lambda 함수에 대한 고급 로깅 제어 구성을 참조하세요.
참고
Lambda@Edge는 요청 볼륨과 로그 크기에 따라 로그를 제한합니다.
Lambda@Edge 함수 로그 파일을 확인하려면 올바른 리전의 CloudWatch Logs 파일을 검토해야 합니다. Lambda@Edge 함수가 실핼되는 리전을 보려면 CloudFront 콘솔의 함수에 대한 지표 그래프를 확인하세요. 지표는 각 리전별로 표시됩니다. 동일한 페이지에서 리전을 선택하고 해당 리전의 로그 파일을 확인하여 문제를 조사할 수 있습니다.
Lambda@Edge 함수와 함께 CloudWatch Logs를 사용하는 방법을 자세히 알아보려면 다음 주제를 참조하시기 바랍니다.
-
CloudFront 콘솔의 모니터링(Monitoring) 섹션에서 그래프를 보는 방법에 대한 자세한 내용은 Amazon CloudWatch를 사용한 CloudFront 지표 모니터링 단원을 참조하세요.
-
CloudWatch Logs로 데이터를 전송하는 데 필요한 권한에 대한 자세한 내용은 Lambda@Edge에 대한 IAM 권한 및 역할 설정 섹션을 참조하세요.
-
로깅을 Lambda@Edge 함수에 추가하는 방법에 대한 자세한 내용은 AWS Lambda 개발자 안내서의 Node.js에 AWS Lambda 함수 로깅 또는 Python에서 AWS Lambda 함수 로깅 섹션을 참조하세요.
-
CloudWatch Logs 할당량(이전에는 제한이라고 함)에 대한 자세한 내용은 Amazon CloudWatch Logs 사용 설명서의 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
행으로 끝납니다. START
및 END
줄 사이에는 함수의 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 Functions에서는 AWSServiceRoleForCloudFrontLogger 서비스 연결 역할을 사용합니다. 이 역할에 대한 자세한 내용은 Lambda@Edge의 서비스 연결 역할 (Lambda@Edge에서 동일한 서비스 연결 역할 사용) 단원을 참조하세요.
유효성 검사 오류 또는 실행 오류로 인해 함수가 실패하면 정보가 표준 로그 및 실시간 로그에 기록됩니다. 오류에 대한 구체적인 내용은 x-edge-result-type
, x-edge-response-result-type
및 x-edge-detailed-result-type
필드를 참조하시기 바랍니다.