Amazon API Gateway에 대한 Amazon CloudWatch 로깅을 활성화했지만 로그를 찾을 수 없습니다.
간략한 설명
CloudWatch 로깅을 사용하여 요청 실행 또는 API에 대한 클라이언트 액세스와 관련된 문제를 디버깅할 수 있습니다. CloudWatch 로깅에는 실행 로깅과 액세스 로깅이 포함됩니다.
실행 로깅의 경우 API Gateway는 로그 그룹 및 로그 스트림 생성을 포함한 CloudWatch 로그를 관리합니다. 액세스 로깅의 경우 자체 로그 그룹을 만들거나 기존 로그 그룹을 선택할 수 있습니다.
API Gateway에서 거부한 모든 클라이언트 측 오류가 실행 로그에 기록되는 것은 아닙니다. 예를 들어, 클라이언트가 REST API의 잘못된 리소스 경로에 API를 요청하면 403 "Missing Authentication Token" 응답을 반환합니다. 이 유형의 응답은 실행 로그에 기록되지 않습니다. CloudWatch 액세스 로깅을 사용하여 클라이언트 측 오류 문제를 해결하십시오.
자세한 내용은 API Gateway용 CloudWatch 로그 형식을 참고하십시오.
API Gateway는 다음에 대한 로그를 생성하지 않을 수 있습니다.
- 413 Request Entity Too Large 오류.
- Excessive 429 Too Many Requests 오류.
- API 매핑이 없는 사용자 지정 도메인으로 전송된 요청의 400 시리즈 오류.
- 내부 오류로 인한 500 시리즈 오류.
자세한 내용은 REST API 모니터링을 참조하십시오.
해결 방법
CloudWatch 로깅을 위한 API Gateway 권한 확인
CloudWatch 로그를 활성화하려면 계정에 대한 CloudWatch에 로그를 읽고 쓸 수 있는 권한을 API Gateway에 부여해야 합니다. AmazonAPIGatewayPushToCloudWatchLogs 관리형 정책에는 필요한 권한이 있습니다.
apigateway.amazonaws.com을 신뢰할 수 있는 주체로 사용하여 AWS Identity and Access Management(IAM) 역할을 생성하십시오. 그런 후 다음 정책을 IAM 역할에 연결하고 AWS 계정의 cloudWatchRoleArn 속성에 IAM 역할 ARN을 설정합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams",
"logs:PutLogEvents",
"logs:GetLogEvents",
"logs:FilterLogEvents"
],
"Resource": "*"
}
]
}
다음 사항을 확인하십시오.
- AWS Security Token Service(AWS STS)가 AWS 리전에서 활성화되었습니다. 자세한 내용은 AWS 리전의 AWS STS 관리를 참조하십시오.
- IAM 역할이 CloudWatch 로그를 활성화하려는 모든 AWS 지역에서 활성화되었습니다.
자세한 내용은 CloudWatch 로깅에 대한 권한을 참조하십시오.
API Gateway 로깅 설정 확인
CloudWatch 실행 또는 액세스 로깅 설정이 API Gateway에 대해 활성화되었는지 확인합니다.
참고: 실행 로깅과 액세스 로깅을 서로 독립적으로 활성화할 수 있습니다.
- API Gateway 콘솔을 엽니다.
- 탐색 창에서 API를 선택합니다.
- API를 선택한 다음 스테이지를 선택합니다.
- 스테이지에서 스테이지를 선택한 다음 로그/추적 탭을 선택합니다.
- CloudWatch 설정에서 다음을 확인합니다.
CloudWatch 로그 활성화가 선택되어 있습니다.
로그 수준이 INFO로 설정되었습니다. 참고: 로그 수준이 ERROR로 설정된 경우 API Gateway의 오류 요청만 기록됩니다. 성공적인 API 요청은 기록되지 않습니다.
추가 로그 데이터에 대해 전체 요청/응답 데이터 로깅 및 세부 CloudWatch 지표 활성화가 선택되었습니다.
참고: 민감한 데이터를 로깅할 수 있는 프로덕션 API의 경우 전체 요청/응답 데이터 로깅을 활성화하지 않는 것이 좋습니다.
- 사용자 지정 액세스 로깅에서 액세스 로깅 활성화가 선택되어 있는지 확인합니다.
로깅 방법 확인 및 필요한 경우 재정의
기본적으로 모든 API 리소스는 해당 스테이지와 동일한 구성을 사용합니다. 스테이지에서 상속하지 않으려는 경우 각 메서드에 대해 다른 구성을 갖도록 이 설정을 재정의할 수 있습니다.
- API Gateway 콘솔을 엽니다.
- 탐색 창에서 API를 선택합니다.
- API를 선택한 다음 스테이지를 선택합니다.
- 스테이지에서 스테이지 이름을 확장합니다. 그런 다음 HTTP 메서드를 선택합니다. 예를 들어 GET을 선택합니다.
- 설정에서 이 메서드에 대해 재정의를 선택합니다.
- 필요한 경우 CloudWatch 설정에서 사용 사례에 맞게 추가 로그를 변경한 다음 변경 사항 저장을 선택합니다.
자세한 내용은 API Gateway에서 REST API에 대한 CloudWatch 로깅 설정을 참조하십시오.
관련 정보
CloudWatch 로그에서 API Gateway REST API 오류를 찾으려면 어떻게 해야 합니까?
API Gateway에 대한 액세스 로깅을 설정하려면 어떻게 해야 합니까?
API Gateway REST API 또는 WebSocket API의 문제 해결을 위해 CloudWatch 로그를 활성화하려면 어떻게 해야 합니까?