AWS Lambdaが実行されていない?
#2024/10/01
事象と経緯
毎日実行されているAWSの請求額のLINE通知が届いていない。
昨日、AWS LambdaのPythonバージョンアップ対応を実施したので、その関連が原因であることが濃厚。
原因
AWS Lambdaで実行時のtimeoutエラーが発生していた。
タイムアウトの設定値は初期値の3秒になっていたが、Pythonを3.8から3.12に変更したことで3秒以上かかるようになったようだ。
対応
Lambda関数の設定でタイムアウト値を3秒から10秒に変更。
テスト実行により正常動作を確認。
「AWS請求額LINE通知(/aws/lambda/awscost_to_line)」と同様に「買い物予報LINE通知(/aws/lambda/KY1_to_line)」についてもタイムアウト値を10秒に変更した。
メモなど
エラーの確認
関数>モニタリング>CloudWatchログを表示 から実行時のログを確認したところ以下のメッセージがあった。
INIT_REPORT Init Duration: 3006.44 ms Phase: invoke Status: timeout
Phase: invokeは実行時に発生していることを示す。
Status: timeoutはエラーの内容
タイムアウト値の変更
関数>設定>一般設定 からタイムアウトの値を「0分3秒」から「0分10秒」に変更
実際の実行時間
AWS請求額LINE通知(/aws/lambda/awscost_to_line)
Python 3.8 :2890ms(2.9秒)
Python 3.12:4222ms(4.2秒)
買い物予報LINE通知(/aws/lambda/KY1_to_line)
Python 3.8 :2810ms(2.8秒)
Python 3.12:3590ms(3.6秒)
参考
Lambda 実行環境のライフサイクルを理解する - AWS Lambda
コンテナから作成したLambdaで、「Phase: init Status: timeout」になったことと解決方法 #AWS - Qiita
上記は初期化フェーズで発生したタイムアウトについて取り扱っているが、実行フェーズのタイムアウトの事が書かれている。