API Gateway 배포 스테이지의 액세스 로그 설정 점검

운영 스테이지의 요청 기록을 남기고 실제 로그 전달을 확인하세요.

설명

API Gateway의 운영 스테이지에서 액세스 로그를 수집하지 않으면 호출 시각, 요청 식별자와 응답 상태를 조사하기 어려울 수 있습니다. 배포의 StageDescription 또는 별도의 Stage 리소스에서 실제 스테이지의 로그 설정을 관리할 수 있습니다.

배포 리소스에 로그 설정이 없다는 사실만으로 모든 요청 기록이 없다고 단정할 수는 없습니다. 실제 스테이지 설정과 백엔드 등 다른 로그 수집 경로를 함께 확인하세요.

잠재적 영향

  • 장애나 의심스러운 호출을 특정 요청과 연결하기 어려울 수 있습니다.
  • 로그가 전달되지 않거나 보존 기간이 짧으면 사후 조사에 필요한 기록이 남지 않을 수 있습니다.

해결 방법

스테이지를 관리하는 구성에 AccessLogSetting의 대상 로그 그룹 ARN과 요청 식별자를 포함한 형식을 지정하세요. API Gateway의 로그 전달 권한과 로그 보존·접근 정책을 준비하고 실제 요청의 기록이 수집되는지 확인하세요. 실행 로그와 경보는 필요에 따라 별도로 구성하세요.

예시

REST API 배포와 스테이지 설정의 발췌입니다. GreetingApi와 배포할 메서드, 필요한 배포 의존성을 별도로 준비하고 로그 그룹 ARN을 실제 값으로 바꾸세요.

변경 전

yaml
Resources:
  ApiDeployment:
    Type: AWS::ApiGateway::Deployment
    Properties:
      RestApiId: !Ref GreetingApi
      StageName: prod
      StageDescription:
        CacheClusterEnabled: false

prod 스테이지의 액세스 로그 설정을 명시하지 않습니다. 실제 운영 스테이지에서 적용 중인 설정을 확인하세요.

변경 후

yaml
Resources:
  ApiDeployment:
    Type: AWS::ApiGateway::Deployment
    Properties:
      RestApiId: !Ref GreetingApi
      StageName: prod
      StageDescription:
        AccessLogSetting:
          DestinationArn: arn:aws:logs:us-east-1:123456789012:log-group:apigw-prod
          Format: '{"requestId":"$context.requestId","status":"$context.status","ip":"$context.identity.sourceIp"}'

배포가 관리하는 스테이지에 액세스 로그 대상과 형식을 지정합니다. 로그 그룹과 전달 권한을 준비한 후 실제 기록을 확인하세요.

참조