API Gatewayで504エラーが発生した理由を教えてください

2022.02.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

API Gatewayで、下記の504エラーが発生しました。

Execution failed due to a network error communicating with endpoint: Connection is closed
Method completed with status: 504

構成は

API Gateway → NLB → ECS

となっています。NLBやECSリソース状況などを確認しましたが、問題となる箇所は見つかりませんでした。リクエスト先のECSログにも、何も記録されていませんでした。API GatewayのログからNLBにリクエスト送信後、1秒ほどで接続が切られ、ネットワークエラーが発生していました。

この504エラーの発生原因と、対応方法を教えてください。

どう対応すればいいの?

当該エラーは、一時的なネットワークの問題の可能性が高いと考えられます。 上記のような一時的なエラーが発生した場合は、 クライアント側で複数回のリトライを実行してください。

もし、リトライを行っても全てのリクエストが失敗するなど、発生頻度が高い場合は、 詳細な調査を行いますので、 API Gateway の実行ログを添えてお問い合わせください。

参考資料

[1] AWS でのエラー再試行とエクスポネンシャルバックオフ - AWS 全般のリファレンス

DNS サーバー、スイッチ、ロードバランサーなど、ネットワークの多数のコンポーネントが、特定のリクエストの存続期間中どこでもエラーを生成する可能性があります。ネットワーク環境でこれらのエラー応答を処理する通常の方法は、クライアントアプリケーションで再試行を実装することです。この技術は、アプリケーションの信頼性を向上させ、開発者の運用コストを削減します。