생성 중인 Amazon API Gateway REST API 또는 WebSocket API의 오류를 디버깅하려고 합니다.
간략한 설명
API Gateway REST API 또는 WebSocket API 문제를 해결하려면 Amazon CloudWatch Logs를 사용합니다. 로그 형식의 유형에 대한 자세한 내용은 API Gateway용 CloudWatch 로그 형식을 참조하십시오.
참고: HTTP API는 액세스 로깅만 지원합니다. 자세한 내용은 API Gateway의 HTTP API 로깅 구성을 참조하십시오.
로그에서 다음 정보를 찾을 수 있습니다.
해결 방법
IAM 역할을 생성하여 CloudWatch에 로그 전송
다음 단계를 완료합니다.
- AWS Identity and Access Management(IAM) 콘솔을 엽니다.
- 탐색 창에서 역할을 선택합니다.
- 역할 창에서 역할 생성을 선택합니다.
- 역할 생성 페이지에서 다음 정보를 입력합니다.
신뢰할 수 있는 엔터티에서 AWS Service를 선택합니다.
사용 사례에서 API Gateway를 선택한 다음 API Gateway 라디오 버튼을 선택합니다.
다음을 선택합니다.
- 권한 정책에서 필요한 모든 권한이 있는 기본 AmazonAPIGatewayPushToCloudWatchLogs AWS 관리형 정책을 사용합니다.
- 다음을 선택합니다.
- 이름, 검토 및 생성 아래에 다음 정보를 입력합니다.
역할 이름에 역할의 이름을 입력합니다.
(선택 사항) 역할 설명의 설명을 원하는 대로 수정합니다.
(선택 사항) 태그를 추가합니다.
역할 생성을 선택합니다.
- 역할 창에서 생성한 역할을 선택합니다.
- 요약 창에서 다음 섹션에서 사용할 역할의 ARN을 기록해 둡니다.
권한에 대한 자세한 내용은 CloudWatch 로깅 권한을 참조하십시오.
API Gateway 콘솔에 IAM 역할 추가
다음 단계를 완료합니다.
- API Gateway 콘솔을 엽니다.
- API 창에서 HTTP API가 아닌 REST API 또는 WebSocket API의 이름을 선택합니다.
- 탐색 창에서 설정을 선택합니다.
- 설정의 CloudWatch 로그 역할 ARN에 IAM 역할 ARN을 입력합니다.
참고: CloudWatch Logs 역할은 리전의 모든 API에서 사용하는 AWS 리전 수준 구성입니다.
- 저장을 선택합니다.
참고: 여러 리전에 여러 API를 생성하는 경우 각 리전에서 이전 단계를 완료하십시오.
API 로깅 켜시 및 API 스테이징
다음 단계를 완료합니다.
- API Gateway 콘솔을 엽니다.
- 탐색 창에서 API를 선택한 다음 API를 선택합니다.
- 탐색 창에서 테이블을 선택한 다음 스테이지를 선택합니다.
- 로그 및 추적에서 편집을 선택합니다.
- CloudWatch 로그의 드롭다운 메뉴에서 수준을 선택합니다.
참고: 전체 요청 및 응답 로그의 경우 로깅 수준이 오류 및 정보 로그로 설정된 데이터 추적 옵션을 선택합니다. 데이터 추적은 민감한 데이터를 기록할 수 있으므로 프로덕션 API에 대해서는 데이터 추적을 켜지 않는 것이 좋습니다.
- 세부 지표를 선택합니다.
- 사용자 지정 액세스 로깅에서 다음 단계를 완료합니다.
액세스 로깅 활성화를 선택합니다.
액세스 로그 대상 ARN에 Amazon Data Firehose 또는 CloudWatch 로그 그룹의 ARN을 입력합니다.
참고: REST API만 Firehose ARN을 지원합니다.
- 로그 형식을 입력합니다.
- 변경 사항 저장을 선택합니다.
로깅 설정 테스트
참고: API에 새 요청을 보내려면 클라이언트 애플리케이션이나 도구(예: Postman 앱 또는 WebSocket API의 경우 wscat)를 사용하십시오.
다음 단계를 완료합니다.
- CloudWatch 콘솔을 엽니다.
- 탐색 창의 로그에서 로그 그룹을 선택합니다.
- 로그 그룹에서 디버그하려는 API의 로그 그룹을 선택합니다.
REST API의 경우 로그 그룹 이름은 API-Gateway-Execution-Logs_apiId/stageName 형식입니다.
WebSocket API의 경우 로그 그룹 이름은 /aws/apigateway/apiId/stageName 형식입니다.
참고: 액세스 로그는 액세스 로깅을 설정할 때 지정한 로그 그룹에 있습니다.
- 로그 스트림 목록에서 마지막 이벤트 시간이 최신인 로그 스트림을 선택하면 요청의 세부 정보가 포함된 메시지를 볼 수 있습니다.
관련 정보
API Gateway 매핑 템플릿 및 액세스 로깅 변수 참조
Amazon CloudWatch 지표를 사용한 REST API 실행 모니터링
CloudWatch 지표로 WebSocket API 실행 모니터링