4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LambdaのNode.js 10.xでエラー返却時に自動的にCloudWatch Logsへ書き込まれない問題

Last updated at Posted at 2019-05-17

update

2019/06/03に確認したところログへの書き込みは修正されていました!

ERROR Invoke Error というprefixと共に書き込まれていました。エラーの種類でこのあたりは変わるのかもしれません。

スクリーンショット 2019-06-03 13.45.37.png

AWS LambdaのNode.jsランタイムが10.xをサポートしました 🎉

v6系がEoSになってもなかなか来なかったので、どうした事かと思っていましたが自動的な10.x系でのランタイムバージョンアップ機能やAmazon Linux2への対応で時間がかかっていたのでしょう。

さっそく踏み抜いた

前回 LambdaのNode.js v8.10でタイムゾーンを指定してもDateがUTCになる問題 と同様にさっそく喜び勇んでランタイムを変更したところ不具合を踏み抜きました。

エラー時の自動的なCloudWatchLogsへの書き込みが動作しない

以下のドキュメントにあるようにエラーを返却するとエラーのstring representationがCloudWatch Logsへ自動的に書き込まれます。
https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html

The callback method automatically logs the string representation of non-null values of error to the Amazon CloudWatch Logs stream associated with the Lambda function.

が、nodejs10.x環境だと動作しません。以下の再現コードを利用すると

exports.handler = async (event) => {
    throw new Error("my error");
};

nodejs10.x

v8.10の時とは内容に若干違いがあるものの、レスポンスにはエラーが返ってきますが下部にあるCloudWatch Logsの方には出力がありません。

スクリーンショット 2019-05-17 11.13.01.png

nodejs8.10

nodejs8.10だとCloudWatch Logsにも出力されています。

スクリーンショット 2019-05-17 11.13.40.png

仕様 or 不具合

サポートに問い合わせたところ想定外の挙動で今後修正が予定されるとのことです。仕様変更じゃなくてよかった。

修正されるまで

console.log での出力は普通にされるので、しょうがないのでcatchしてログ記録してエラーを投げなおすか修正待ちになるかなと。
こんな感じになるでしょうか。美しくないですね。私は修正待ちにしようかと思います。

exports.handler = async (event) => {
    try {
        throw new Error("my error");
    } catch(e) {
        console.log(e);
        throw e;
    }
};
4
2
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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?