この記事は公開から1年以上経過しています。
Google Cloud PlatformのCloud Functionsでレスポンスタイムの遅いWebAPIをAPI Gateway経由で呼び出したところHTTP 504/response_timeoutエラーが発生してしまったため、その対応についての備忘録。
原因
API Gatewayのデフォルトタイムアウト値の15秒を超過したため。
対応
API Gatewayの構成ファイル(OpenAPI)のx-google-backend.deadline
にタイムアウト値を設定する。
タイムアウト値に180秒を設定する場合の例:
paths:
/xxx:
post:
summary: xxx
operationId: xxx
x-google-backend:
address: https://path-to-the-cloud-functions
deadline: 180
"200":
description: xxx
ちなみに2023.6現在、APIに関連するその他のタイムアウト値の既定値はCloud Functionsが60秒、Cloud Runが300秒となっているため、API Gatewayのレスポンスタイムを調整する場合はこれらのタイムアウト値の調整もお忘れなく。
参考ウェブサイトなど
Cloud Functionsドキュメント
関数のタイムアウト
Cloud Endpointsリファレンス
OpenAPIの拡張/deadline
Cloud Runガイド
リクエスト タイムアウトの設定(サービス)
以上です。