내용으로 건너뛰기

API Gateway REST API의 누락된 CloudWatch 로그 문제를 해결하려면 어떻게 해야 합니까?

3분 분량
0

Amazon API Gateway용 Amazon CloudWatch Logs를 활성화할 때 로그를 찾을 수 없는 문제를 해결하고 싶습니다.

간략한 설명

](https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-logging.html)API Gateway에서 REST API에 대한 CloudWatch 로깅을 설정[하면 실행 로깅과 액세스 로깅을 사용할 수 있습니다. API Gateway는 거부한 모든 클라이언트측 오류를 실행 로그에 기록하지는 않습니다. 예를 들어 클라이언트가 REST API의 잘못된 리소스 경로에 API 요청을 보내면 다음과 같은 응답을 받습니다. "403 Missing Authentication Token" API Gateway는 이러한 유형의 응답을 실행 로그에 기록하지 않습니다. 클라이언트측 오류를 해결하려면 CloudWatch 액세스 로깅을 사용하십시오.

API Gateway는 다음 오류에 대한 로그를 생성하지 않을 수 있습니다.

  • "413 Request Entity Too Large" 오류
  • "431 Request Header Fields Too Large" 오류
  • "Excessive 429 Too Many Requests" 오류
  • 클라이언트가 API 매핑 없이 사용자 지정 도메인에 요청을 보냈기 때문에 발생하는 400 시리즈 오류
  • 내부 장애로 인해 발생하는 500 시리즈 오류

자세한 내용은 API Gateway의 REST API 모니터링을 참조하십시오.

해결 방법

CloudWatch Logs에 대한 API Gateway 권한 확인

CloudWatch Logs를 활성화하려면 AWS 계정에 대한 CloudWatch 로그를 읽고 쓸 수 있는 권한을 API Gateway에 부여해야 합니다.

먼저 apigateway.amazonaws.com을 신뢰할 수 있는 주체로 사용하여 AWS Identity and Access Management(IAM) 역할을 생성하십시오. 그런 다음 AmazonAPIGatewayPushToCloudWatchLogs AWS 관리형 정책을 역할에 연결합니다. 계정의 Amazon 리소스 이름(ARN) 역할을 cloudwatchRoleArn으로 설정합니다.

정책 예시:

{    
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams",
        "logs:PutLogEvents",
        "logs:GetLogEvents",
        "logs:FilterLogEvents"
      ],
      "Resource": "*"
    }
  ]
}

참고: AWS 리전의 AWS Security Token Service(AWS STS)를 활성화해야 합니다. 또한 CloudWatch Logs를 활성화하려는 모든 리전에 IAM 역할을 활성화했는지 확인하십시오.

자세한 내용은 AWS 리전의 AWS STS 활성화 및 비활성화CloudWatch 로깅에 대한 권한을 참조하십시오.

API Gateway 로깅 설정 확인

API Gateway에 대한 CloudWatch 실행 또는 액세스 로깅 설정을 올바르게 구성했는지 확인하십시오.

참고: 실행 로깅과 액세스 로깅을 서로 독립적으로 활성화할 수 있습니다.

다음 단계를 완료하십시오.

  1. API Gateway 콘솔을 엽니다.
  2. 탐색 창에서 API를 선택합니다.
  3. API를 선택한 다음 스테이지를 선택합니다.
  4. 스테이지를 선택한 다음 로그/추적 탭을 선택합니다.
  5. CloudWatch 설정에서 CloudWatch Logs 활성화를 선택합니다.
  6. 로그 수준오류 정보로 설정합니다.
    참고: 로그 수준오류로 설정하면 API Gateway가 요청 오류만 로깅하고 성공한 API 요청은 로깅하지 않습니다.
  7. 스테이지에 대한 데이터 추적 로깅을 켜려면 데이터 추적을 선택합니다.
    참고: API Gateway가 민감한 데이터를 로깅할 수 있으므로 프로덕션 API에 대한 데이터 추적은 활성화하지 않는 것이 좋습니다.
  8. 사용자 지정 액세스 로깅의 경우 액세스 로깅 활성화를 선택합니다.

로깅 방법 확인

기본적으로 모든 API 리소스는 API 리소스 스테이지와 동일한 구성을 사용합니다. 스테이지를 상속하지 않으려면 설정을 재정의하고 다른 구성을 설정하십시오.

로깅 방법을 확인하려면 다음 단계를 완료하십시오.

  1. API Gateway 콘솔을 엽니다.
  2. 탐색 창에서 API를 선택합니다.
  3. API를 선택한 다음 스테이지를 선택합니다.
  4. 스테이지에서 스테이지 이름을 확장합니다. 그런 다음 HTTP 메서드(예: GET)를 선택합니다.
  5. 설정에서 이 메서드에 대해 재정의를 선택합니다.
    참고: 로그를 추가로 변경하려면 CloudWatch 설정 섹션에서 필요한 설정을 업데이트하십시오.
  6. 변경 사항 저장을 선택합니다.

관련 정보

CloudWatch 로그에서 API Gateway REST API 오류를 찾으려면 어떻게 해야 합니까?

API Gateway에 대한 액세스 로깅을 설정하려면 어떻게 해야 합니까?

API Gateway REST API 또는 WebSocket API의 문제 해결을 위해 CloudWatch Logs를 활성화하려면 어떻게 해야 합니까?