Amazon API Gateway のログを API の問題のトラブルシューティングに使用したいと考えています。
簡単な説明
API ゲートウェイ REST API または WebSocket API のトラブルシューティングを行うには、Amazon CloudWatch Logs を使用して、実行ログ記録およびアクセスログ記録を有効にします。API ゲートウェイ AWS Identity and Access Management (IAM) ロールに必要なすべての権限をアタッチしていることを確認してください。詳細については、「CloudWatch Logs をオンにして、API ゲートウェイ REST API または WebSocket API をトラブルシューティングする方法」を参照してください。
注: HTTP API は現在、アクセスログ記録のみをサポートしており、これらの API ではログ記録の設定が異なります。詳細については、「HTTP API のログ記録の設定」をご参照ください。
解決方法
ロギングを有効にすると、API ゲートウェイは API-Gateway-Execution-logs/ {rest-api-id}/{stage-name} という名前の CloudWatch ロググループを自動的に作成します。詳細については、「API ゲートウェイでの CloudWatch によるログの形式」を参照してください。
AWS Lambda オーソライザー
API で Lambda オーソライザーを有効にしている場合、ログにはリクエストが承認されたかどうかが示され、オーソライザーとリクエスト ID が含まれます。
承認されたログの例:
Starting authorizer: 62mgrc for request: 3323ffe5-6ddf-45c8-896a-b45ec2284cc0
Successfully completed authorizer execution
不正なログの例:
Starting authorizer: 62mgrc for request: fd443056-60d0-425f-874e-e93e5d61351e
Unauthorized request: fd443056-60d0-425f-874e-e93e5d61351e
使用量プラン
Lambda オーソライザーがログを記録すると、API ゲートウェイは API リクエストの使用プランを検証します。使用プランを設定していない場合、API リクエストはスロットリング制限にカウントされません。
使用計画ログの例:
Verifying Usage Plan for request: 3323ffe5-6ddf-45c8-896a-b45ec2284cc0. API Key: API Stage: <api_id>/<stage>
API Key authorized because method 'GET /' does not require API Key. Request will not contribute to throttle or quota limits
Usage Plan check succeeded for API Key and API Stage <api_id>/<stage>
API キーを使用して API を設定したのに X-API-Key ヘッダーが見つからない場合、ログは次のようなエラーを返します。
API Key not authorized because method 'GET /' requires API Key and API
Key is not associated with a Usage Plan for API Stage
<api_id>/<stage>: API Key was required but not present
ヘッダーに正しい API キーを追加したのにリクエストがスロットリングされると、ログは次のようなエラーを返します。
API Key **********************************FGQes7 exceeded throttle limit for API Stage <api_id>/<stage>: Key throttle limit exceeded for Usage Plan ID iwuzkt. Limit: 5.00 Burst: 0
Method completed with status: 429
リクエストログタイプ
**注:**すべてのリクエストログタイプで、すべてのリクエスト/レスポンスデータを実行ログに記録するをオンにする必要があります。
メソッドリクエストログ
メソッドリクエストログには、リクエストパス、クエリパラメータ、リクエストヘッダー、リクエストボディなど、API リクエストによって受信された詳細情報が含まれます。
エンドポイントリクエストログ
エンドポイントリクエストログには、URI、リクエストヘッダー、リクエスト本文など、API リクエストによって受信された詳細情報が含まれます。
エンドポイントリクエストに含まれるデータは、さらに処理するためにバックエンドインテグレーションに送信されます。
エンドポイントレスポンスログ
エンドポイントレスポンスログには、ステータスコード、ヘッダー本文、統合待ち時間など、バックエンド統合によって返されたデータが含まれます。
メソッドレスポンスログ
メソッドレスポンスログには、変換後にクライアントに送信されるヘッダーと本文が含まれます。
**重要:**API ゲートウェイはログイベントを 1024 バイトに制限します。リクエストボディやレスポンスボディなど、1024 バイトを超えるログイベントは、CloudWatch ログに送信される前に API ゲートウェイによって切り捨てられます。
関連情報
API ゲートウェイREST API の CloudWatch ログの不足についてトラブルシューティングする方法を教えてください。
API ゲートウェイでの CloudWatch による REST API のログの設定
Amazon CloudWatch メトリクスを使用した REST API 実行のモニタリング
CloudWatch メトリクスを使用した WebSocket API 実行のモニタリング