api gateway 側にタイムアウトの設定があるか調べてみました。
概要
AWS API Gatewayの統合タイムアウトは、バックエンドサービス(Lambda、HTTPエンドポイントなど)にリクエストを送信してからレスポンスを待つ最大時間を決定します。
API Gateway のタイムアウト設定
- 最大タイムアウト時間: 29秒
- 設定場所
- REST API: 統合リクエストの「統合レスポンスのタイムアウト (Integration timeout)」
- HTTP API: 「統合タイムアウト (Integration timeout)」
- デフォルト値: 29秒(変更可能)
設定方法
コンソールからの設定
- API Gatewayのコンソールを開く
- 対象のAPIを選択
- 統合リクエスト(LambdaやHTTPエンドポイント)を開く
- 統合タイムアウトの値を1〜29秒の範囲で設定
- 保存してデプロイ
AWS CLIでの設定
aws apigateway update-integration \ --rest-api-id <API_ID> \ --resource-id <RESOURCE_ID> \ --http-method POST \ --patch-operations op='replace',path='/timeoutInMillis',value='15000'
Terraform での設定
resource "aws_api_gateway_integration" "example" {
rest_api_id = aws_api_gateway_rest_api.example.id
resource_id = aws_api_gateway_resource.example.id
http_method = "POST"
integration_http_method = "POST"
type = "HTTP"
uri = "https://example.com/endpoint"
timeout_milliseconds = 10000 # 10秒
}
注意点
- API Gatewayのタイムアウトを29秒より長くすることはできません
- タイムアウトより早くLambdaが終了すると、すぐにレスポンスが返る
- Lambda側のタイムアウト(デフォルト3秒、最大15分)とも整合性を取る必要がある
- タイムアウト時には504 Gateway Timeoutエラーが発生