Lambda の Errors メトリクスが上昇したがログにエラーがないときに確認すべき内容を教えてください

2024.04.26

困っていた内容

監視システムから Lambda の Errors メトリクスの上昇通知を受けました。
CloudWatch Logs に出力された該当時間帯のアプリケーションログを確認しましたが、ERRORのメッセージは記録されていませんでした。
他に調査すべき内容を教えてください。

どう対応すればいいの?

Duration メトリクスをご確認ください。

※ Lambda コンソールの場合は「Error count and success rate」の左横に表示されます。

Errors メトリクスの上昇は、関数でエラーが発生したことを表します。エラーには、アプリケーションからスローされた例外のほか、Lambda からスローされる例外も含まれます。

Lambda からスローされる例外のひとつに、関数のタイムアウトがあり、タイムアウトの場合は次のようなメッセージが記録されます。

ログの例

2024-01-02T03:04:05.006Z abcdb8c8-463f-4394-96d5-ee064de2788b Task timed out after 3.00 seconds

そのため、ERROR等の文字列でログを確認した場合、タイムアウトを検知できない場合があります。

従って、Task timed out afterの文字列でログを調査するか、処理時間を示す Duration メトリクスが Lambda のタイムアウト設定まで上昇していないか確認してください。

なお、Duration メトリクスはミリ秒単位のため、例えば 3 秒の場合は、3.00 kとなります。

また、Lambda のタイムアウト設定は、「一般設定」から確認できます。

参考資料

  • Lambda 関数がタイムアウトしているかどうかを確認する | AWS re:Post

    注:Lambda 関数の呼び出しがタイムアウトすると、失敗した呼び出しの CloudWatch ログにエラーメッセージではなく、 Task timed out エラーメッセージが表示されます。関数の CloudWatchログでエラーメッセージのみを検索すると、呼び出しタイムアウトエラーではなく、コード関連のランタイムエラーのみが返されます。詳細については、「Amazon CloudWatch を使用した AWS Lambda エラーのモニタリング」を参照してください。