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"}'

デプロイメントが管理するステージにアクセスログの保存先と形式を指定します。ロググループと配信権限を準備した後、実際の記録を確認してください。

参考資料