Lambda@Edge CloudTrail 로그가 전송되지 않는 이유는 무엇인가요?

2분 분량
0

트리거를 위해 AWS Lambda@Edge 함수를 Amazon CloudFront 배포와 연결했습니다. AWS CloudTrail 로그 스트림에 채워진 Amazon CloudWatch에서 Lambda@Edge 함수의 실행 로그를 찾을 수 없습니다. 누락된 이유를 해결하려면 어떻게 해야 하나요?

Lambda@Edge 함수와 연결된 AWS Identity and Access Management(IAM) 역할에 필요한 권한이 없는 경우 Lambda@Edge 로그가 채워지지 않습니다. 콘솔에서 잘못된 리전을 확인하는 경우에도 로그가 누락된 것으로 나타날 수 있습니다.

해결 방법

Lambda@Edge 함수와 연결된 IAM 역할에 대한 권한 확인

로그 그룹 및 스트림을 생성하고 로그 이벤트를 AWS 리전에 저장하는 데 필요한 권한이 함수 실행 역할에 있는지 확인합니다. Lambda 함수와 연결된 실행 역할에 필요한 권한이 없는 경우 로그 전송이 실패합니다.

Lambda@Edge 실행 역할에 연결된 IAM 정책의 예는 다음과 같습니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": [
        "arn:aws:logs:*:*:*"
      ]
    }
  ]
}

CloudWatch 로그에 데이터를 전송하는 데 필요한 권한에 대한 자세한 내용은 Lambda@Edge에 대한 IAM 권한 및 역할 설정을 참조하세요.

Lambda 함수가 활성화된 리전의 로그 확인

Lambda@Edge 함수가 활성화되면 Lambda는 함수가 활성화된 위치에서 가장 가까운 AWS 리전에 CloudWatch 로그 스트림을 생성합니다. 로그 그룹의 이름 형식은 /aws/lambda/us-east-1.function-name으로 지정되며, 여기서 function-name은 Lambda 함수의 이름입니다.

Lambda@Edge 함수 로그를 찾으려면 함수가 호출되는 리전을 확인한 다음 로그를 봐야 합니다.

함수가 호출된 리전을 찾으려면 다음을 수행합니다.

  1. AWS Management Console에 로그인하고 CloudFront 콘솔을 엽니다.
  2. 원격 분석(Telemetry) 범주에서 **모니터링(Monitoring)**을 선택합니다.
  3. Lambda@Edge 탭을 선택합니다.
  4. Lambda@Edge 함수를 선택한 다음 함수 지표 보기(View function metrics)를 선택합니다.

이제 모니터링 페이지에서 특정 기간 동안 복제본 함수가 호출되는 리전을 확인할 수 있습니다. 여기에서 각 리전의 함수에 대한 CloudWatch 로그를 찾을 수 있습니다. 이렇게 하려면 **함수 로그 보기(View function logs)**를 선택한 다음 함수가 호출되는 리전을 선택합니다.

참고: 특정 리전에서 오류가 표시되는 경우 그래프에서 오류를 표시하는 리전을 선택합니다. 자세한 내용은 Lambda @Edge 리전 확인을 참조하세요.

또는 요청이 라우팅된 엣지 로케이션을 확인하려면 x-amz-cf-pop 응답의 헤더 값을 확인하세요. 그런 다음 CloudWatch에서 해당 리전을 확인하여 로그 파일을 봅니다. 예를 들어 x-amz-cf-popIAD89-P1로 설정된 경우 요청이 us-east-1 리전에서 처리되었음을 나타냅니다. 여기서 IAD는 공항 코드입니다.

Lambda가 CloudFront에 유효하지 않은 응답을 반환하면 CloudFront는 로그 파일에 기록된 오류 메시지를 푸시합니다. 그런 다음 CloudFront는 Lambda 함수가 실행된 CloudWatch 리전으로 푸시합니다. 로그 그룹(Log groups)의 형식은 /aws/cloudfront/LambdaEdge/DistributionId이며, 여기서 DistributionId는 배포의 ID입니다. CloudWatch 로그 파일이 있는 리전을 찾으려면 Lambda@Edge 리전 확인을 참조하세요.


관련 정보

Lambda@Edge에 대한 IAM 권한 및 역할 설정

Lambda@Edge 함수에 대한 CloudWatch 지표 및 로그

계정에서 로그를 CloudWatch로 푸시하는지 확인

AWS 공식
AWS 공식업데이트됨 2년 전