Node.js CLI optionsを使ってLambda関数の非推奨メッセージをログ出力させない

Node.jsをランタイムにしたLambda関数では、非推奨のメソッドを使うと以下のようなメッセージがログに出力されます。

2024-12-12T12:12:12.012Z 8162d561-25b2-4259-8b90-d9bbf55e608f    ERROR   (node:2) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
(Use `node --trace-deprecation ...` to show where the warning was created)

開発環境であればこのログはありがたいですが、場合によってはこのログが邪魔くさいことがあります。 このような非推奨メッセージのログは、Node.js CLI optionsの--no-deprecationを使うことで消すことができます。

Command-line API | Node.js v22.12.0 Documentation

Node.js CLI options

CLI optionsは、Node.jsを実行するときに何かしらの特性を与えるオプションです。 このオプションはめちゃくちゃ色々あります。今回使う非推奨メッセージをログ出力させない--no-deprecation以外にも、 process.titleに値を格納する--titleや、 ファイルの変更によってリスタートする--watchなど有用なものもあります。

使い方は、2通りあります。

nodeコマンドのオプションとして渡す方法

$ node --no-deprecation --title=my_title index.js

環境変数として渡す方法

$ NODE_OPTIONS='--no-deprecation --title=my_title' node index.js

Lambda関数にCLI optionsを渡すには環境変数を使う

Lambda関数ではnodeコマンドのオプションとして渡すことはできないため、環境変数として渡します。 環境変数のキーはNODE_OPTIONS、値は--no-deprecationです。

以下のコードをLambda関数で実行してログを確認してみました

console.log("title is", process.title);

new Buffer(16);

環境変数に何も設定しない場合

以下のログが出力されました。

START RequestId: 8162d561-25b2-4259-8b90-d9bbf55e608f Version: $LATEST
2024-12-12T12:12:12.000Z    8162d561-25b2-4259-8b90-d9bbf55e608f    INFO    title is /var/lang/bin/node
2024-12-12T12:12:12.012Z    8162d561-25b2-4259-8b90-d9bbf55e608f    ERROR   (node:2) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
END RequestId: 8162d561-25b2-4259-8b90-d9bbf55e608f
REPORT RequestId: 8162d561-25b2-4259-8b90-d9bbf55e608f  Duration: 114.25 ms Billed Duration: 115 ms Memory Size: 128 MB Max Memory Used: 71 MB  Init Duration: 132.51 ms    

--titleを使わないと/var/lang/bin/nodeというnodeコマンドのフルパスが表示されるんですね。 そして、非推奨になっているBufferのコンストラクタについてのメッセージが表示されています。

また、連続して実行すると、以下のように非推奨メッセージは表示されませんでした。 どうやら、コールドスタートするときに非推奨メッセージが出力され、ホットスタートでは出力されないようです。

2024-12-12T12:21:21.000Z 6f05e8bb-8e35-4734-87fa-e7d5abac49e4    INFO    title is /var/lang/bin/node
START RequestId: 6f05e8bb-8e35-4734-87fa-e7d5abac49e4 Version: $LATEST
END RequestId: 6f05e8bb-8e35-4734-87fa-e7d5abac49e4
REPORT RequestId: 6f05e8bb-8e35-4734-87fa-e7d5abac49e4  Duration: 2.20 ms   Billed Duration: 3 ms   Memory Size: 128 MB Max Memory Used: 71 MB  

環境変数を設定した場合

環境変数にキーはNODE_OPTIONS、値は--no-deprecation --title=my_titleとしました。

START RequestId: be0347a8-1c20-4ace-9828-df5ea4458494 Version: $LATEST
2024-12-12T15:43:54.427Z    be0347a8-1c20-4ace-9828-df5ea4458494    INFO    title is my_title
END RequestId: be0347a8-1c20-4ace-9828-df5ea4458494
REPORT RequestId: be0347a8-1c20-4ace-9828-df5ea4458494  Duration: 78.65 ms  Billed Duration: 79 ms  Memory Size: 128 MB Max Memory Used: 71 MB  Init Duration: 132.04 ms

参考