API Gateway 스테이지 로그 설정 점검

API 요청과 오류를 조사할 수 있도록 스테이지의 로그 수집을 구성하세요.

설명

API Gateway 스테이지에 필요한 액세스 로그나 실행 로그가 없으면 요청 처리와 오류의 원인을 추적하기 어려울 수 있습니다. 액세스 로그와 실행 로그는 별도 설정이며, 다른 시스템의 로그가 수집되는지도 함께 확인해야 합니다.

액세스 로그에는 요청 식별자와 응답 상태 등을 남길 수 있습니다. 실행 로그는 REST API와 WebSocket API의 처리 과정을 조사하는 데 사용하며 HTTP API에는 같은 실행 로그 설정을 적용하지 않습니다.

잠재적 영향

  • 요청 기록이 부족하면 의심스러운 호출이나 장애의 원인을 조사하기 어려울 수 있습니다.
  • 민감한 요청 데이터를 과도하게 기록하거나 로그 접근을 넓게 허용하면 정보가 노출될 수 있습니다.

해결 방법

API 유형과 감사 목적에 맞게 액세스 로그의 대상과 형식을 구성하세요. REST API나 WebSocket API에 실행 로그가 필요하면 로그 수준도 설정하세요. 로그 전달에 필요한 권한, 보존 기간과 접근 권한을 준비하고 실제 요청 기록이 도착하는지 확인하세요. 민감한 데이터의 본문 기록은 제한하세요.

예시

WebSocket 스테이지의 일부 설정입니다. API와 배포는 별도로 준비하고 로그 그룹 ARN을 실제 값으로 바꾸세요. 로그 그룹과 API Gateway의 로그 전달 권한은 생략했습니다.

변경 전

yaml
Resources:
  WebSocketStage:
    Type: AWS::ApiGatewayV2::Stage
    Properties:
      StageName: Prod
      ApiId: !Ref MyApi
      DeploymentId: !Ref MyDeployment

이 스테이지에는 액세스 로그 전달 설정이 없습니다. 별도의 실행 로그나 백엔드 로그 수집 여부는 따로 확인하세요.

변경 후

yaml
Resources:
  WebSocketStage:
    Type: AWS::ApiGatewayV2::Stage
    Properties:
      StageName: Prod
      ApiId: !Ref MyApi
      DeploymentId: !Ref MyDeployment
      AccessLogSettings:
        DestinationArn: arn:aws:logs:us-east-1:123456789012:log-group:api-gateway-prod
        Format: '{"requestId":"$context.requestId","ip":"$context.identity.sourceIp","routeKey":"$context.routeKey","status":"$context.status"}'

요청 식별자, 출발지 IP, 경로 키와 상태를 지정한 로그 그룹에 기록하도록 설정합니다. 이 설정은 실행 로그나 경보를 자동으로 구성하지 않습니다.

참조