0
0

Lambdaの"Task timed out after x.xx seconds"ログが出力されない問題

Last updated at Posted at 2024-09-04

🔹結論

現状pythonのランタイムバージョンが3.12だと出力されない(3.11までは出力される)
python以外については未検証
他のランタイムバージョンにも波及する可能性あり

🔹詳細

以下の記事をもとにLambdaのタイムアウトエラーに対して通知できるような機能を実装しようとしたのですが、
「Task timed out after x.xx seconds」が出力されませんでした。

Lambda 関数がタイムアウトしているかどうかを確認するにはどうすればよいですか?

ネット上に情報が特になく、以下検証を実施しました。

🔸前提

・アーキテクチャ:x86_64
・タイムアウト:3秒
・コードの中身:

import json

def lambda_handler(event, context):
    # TODO implement
    while True:
        pass
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

🔸検証結果

[Python 3.11](3.11以下のバージョンについても同じ)
image.png

[Python 3.12]
image.png

なぜか3.12の場合のみ出力されない...
ランタイムのライブラリバージョンが関係しているのか。

参考:AWS LambdaのPythonランタイムとAWSが提供するLambdaレイヤのPythonライブラリを調べてみた。

🔹原因

なんとLambdaのログ出力形式が変更になっていました。

Lambda 実行環境のライフサイクルを理解する

例 CloudWatch Logs ログ出力 (関数タイムアウト) - 旧形式

START RequestId: b70435cc-261c-4438-b9b6-efe4c8f04b21 Version: $LATEST
2024-03-04T17:22:38.033Z b70435cc-261c-4438-b9b6-efe4c8f04b21 Task timed out after 3.00 seconds
END RequestId: b70435cc-261c-4438-b9b6-efe4c8f04b21
REPORT RequestId: b70435cc-261c-4438-b9b6-efe4c8f04b21 Duration: 3004.92 ms Billed Duration: 3000 ms Memory Size: 128 MB Max Memory Used: 33 MB Init Duration: 111.23 ms

例 CloudWatch Logs ログ出力 (関数タイムアウト) - 新形式

START RequestId: 527cb862-4f5e-49a9-9ae4-a7edc90f0fda Version: $LATEST
END RequestId: 527cb862-4f5e-49a9-9ae4-a7edc90f0fda
REPORT RequestId: 527cb862-4f5e-49a9-9ae4-a7edc90f0fda Duration: 3016.78 ms Billed Duration: 3016 ms Memory Size: 128 MB Max Memory Used: 31 MB Init Duration: 84.00 ms Status: timeout

また、この変更はTimeoutだけでなく、ランタイムのクラッシュのログ出力形式に関しても同様です。

以下のように注意書きがありました。
image.png

今後数週間に全関数に適用...!!!??

[詳細]の項で記述した、re:Postで推奨方法がNGになりそうです。
Lambda関数のクラッシュやTimeoutをCloudWatch Logsで監視している方は要注意です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0