##はじめに
Amazon API Gatewayを使用してREST APIを呼び出した際の「HTTP504」ステータスコードについて調べる機会があったので備忘として残します。
##調査
・リクエストがAPI Gateway REST APIの最大統合タイムアウトパラメータよりも長くかかる場合、API Gatewayは「HTTP 504」ステータスコードを返す。
・最大統合タイムアウト(REST APIの設定と実行時)は、すべての統合タイプで50ミリ秒〜29秒で設定可
・最大統合タイムアウト(HTTP APIの設定と実行時)は、最大30秒(デフォルト)
##トラブルシューティングの方法
・Amazon CloudWatch 実行ログでエラーの原因を特定
・統合リクエストの実行時間を減らしてタイムアウトしないようにする
##トラブルシューティング手順
-
504 エラーを返す API の API Gateway のログ記録を設定
-
504 エラーを手動で再現
-
CloudWatchコンソールで、エラーを受け取った統合の API Gateway実行ログを表示
-
CloudWatch Logsでリクエスト IDを追跡します。統合でタイムアウトがある場合、「変換後のエンドポイントリクエスト本文:」行の後にタイムアウトエラーメッセージが原因。
-
次の手順で、エラーの原因を特定
関連付けられた統合エンドポイントが呼び出されたことを確認
統合ロジックが完了し、API Gateway に応答するのにかかった時間を確認 -
統合が呼び出されなかった場合は、リクエストを再試(API Gatewayサービスの一時的なネットワーク障害が原因で発生する可能性も有)。
##参考
https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/limits.html