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