概要
下記を実験します。
- Lambdaだけで実行してタイムアウトさせるとどうなるか
- API Gatewayと繋いだ時のLambda処理とAPIのレスポンスがどうなるか
環境
- Lambdaのタイムアウトを3秒にし、Lambda自体の処理が3秒以上かかる状態にしてLambdaを起動させる。
Lambdaだけで実行してタイムアウトさせるとどうなるか
LambdaをLambdaのページから単体で起動します。
※Lmabdaのページの"テスト"ボタンを押すだけ
ソース
import json
import time
def lambda_handler(event, context):
for idx in range(10):
print(idx)
time.sleep(1)
return "hello"
結果
Lambdaのログ
タイムアウト以降の処理は実行されず、タイムアウト時点で処理が強制終了させられます。
Response:
{
"errorMessage": "2019-01-16T14:06:59.665Z fbb0936c-1997-11e9-a789-77de14672ab0 Task timed out after 3.00 seconds"
}
Request ID:
"fbb0936c-1997-11e9-a789-77de14672ab0"
Function Logs:
START RequestId: fbb0936c-1997-11e9-a789-77de14672ab0 Version: $LATEST
0
1
2
END RequestId: fbb0936c-1997-11e9-a789-77de14672ab0
API Gatewayと繋いだ時のLambda処理とAPIのレスポンスがどうなるか
これだけだと面白みに欠けるので、API GatewayからLambdaへプロキシする形にしてLambdaがタイムアウトした時にどうなるかを見てみます。
結果
APIへのリクエストのレスポンス
API Gatewayの中のAPI毎の設定の "ゲートウェイのレスポンス" の "DEFAULT 5XX" で設定した内容が出力されます。
{"message": "Internal server error"}
Lambdaのログ
3秒以降はAPI Gatewayから繋いでも強制終了されています。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| @timestamp | @message |
|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|
| 2019-01-16 14:30:20.242 | START RequestId: 40618977-199b-11e9-97b8-1dd8c5fdb605 Version: $LATEST |
| 2019-01-16 14:30:20.317 | 0 |
| 2019-01-16 14:30:21.318 | 1 |
| 2019-01-16 14:30:22.319 | 2 |
| 2019-01-16 14:30:23.254 | REPORT RequestId: 40618977-199b-11e9-97b8-1dd8c5fdb605 Duration: 3003.36 ms Billed Duration: 3000 ms Memory Size: 128 MB Max Memory Used: 21 MB |
| 2019-01-16 14:30:23.254 | END RequestId: 40618977-199b-11e9-97b8-1dd8c5fdb605 |
| 2019-01-16 14:30:23.254 | 2019-01-16T14:30:23.253Z 40618977-199b-11e9-97b8-1dd8c5fdb605 Task timed out after 3.00 seconds |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------