【アップデート】LambdaのランタイムにNode.js22が利用可能になりました
リテールアプリ共創部@大阪の岩田です。
タイトル通りなのですがLambdaのランタイムとしてNode.js22xが利用可能になりました!
さっそく色々試してみます。
やってみる
以後は全てバージニアリージョン & arm64でNode.22xのLambda Functionsを実行しています。
ランタイムバージョンの確認
まずはマネコンをポチポチしてHelloWorldを実行してログを確認してみました。出力されたランタイムバージョンは以下の通りでした。
Runtime Version ARN: arn:aws:lambda:us-east-1::runtime:0e9cb0254cfdee1d92f17152f250572f73e1639502454774e594375792782241
process.version
console.log(process.version)
でNode.jsのバージョンをログに出力してみました。出力結果はv22.11.0
となっており、上記ランタイムバージョンの場合はNode.jsのv22.11.0を利用しているようです。
uname -a
カーネルのバージョンも確認しておきましょう。以下のコードを実行します。
import { execSync } from 'child_process';
console.log(execSync('uname -a').toString());
結果は以下の通りでした。
Linux 169.254.49.62 5.10.227-239.884.amzn2.aarch64 #1 SMP Mon Oct 28 22:42:27 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
cat /etc/os-release
同様にcat /etc/os-release
を確認しました。結果は以下の通りです。
NAME="Amazon Linux"
VERSION="2023"
ID="amzn"
ID_LIKE="fedora"
VERSION_ID="2023"
PLATFORM_ID="platform:al2023"
PRETTY_NAME="Amazon Linux 2023.6.20241010"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2023"
HOME_URL="https://aws.amazon.com/linux/amazon-linux-2023/"
DOCUMENTATION_URL="https://docs.aws.amazon.com/linux/"
SUPPORT_URL="https://aws.amazon.com/premiumsupport/"
BUG_REPORT_URL="https://github.com/amazonlinux/amazon-linux-2023"
VENDOR_NAME="AWS"
VENDOR_URL="https://aws.amazon.com/"
SUPPORT_END="2028-03-15"
VARIANT_ID="202410241625-2023.271.0"
Node.js22の新機能を試してみる
せっかくなのでNode.js22の新機能を試してみます。node:fs
モジュールの glob
と globSync
が利用可能になっているので、試しにglobSync
でLambda実行環境に用意されているjsファイルを列挙してみました。
import { globSync } from 'node:fs';
console.log(globSync('/var/runtime/node_modules/**/*.js'));
出力結果は以下の通りでした。
[
'/var/runtime/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js',
'/var/runtime/node_modules/@aws-sdk/xhr-http-handler/dist-cjs/index.js',
'/var/runtime/node_modules/@aws-sdk/util-waiter/dist-cjs/index.js',
'/var/runtime/node_modules/@aws-sdk/util-utf8-node/dist-cjs/index.js',
'/var/runtime/node_modules/@aws-sdk/util-utf8-browser/dist-cjs/index.js',
'/var/runtime/node_modules/@aws-sdk/util-utf8-browser/dist-cjs/pureJs.js',
'/var/runtime/node_modules/@aws-sdk/util-utf8-browser/dist-cjs/whatwgEncodingApi.js',
'/var/runtime/node_modules/@aws-sdk/util-utf8/dist-cjs/index.js',
'/var/runtime/node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js',
'/var/runtime/node_modules/@aws-sdk/util-uri-escape/dist-cjs/index.js',
'/var/runtime/node_modules/@aws-sdk/util-stream-node/dist-cjs/index.js',
'/var/runtime/node_modules/@aws-sdk/util-stream/dist-cjs/index.js',
...略
'/var/runtime/node_modules/@aws-sdk/node_modules/uuid/dist/esm-node/native.js',
... 4293 more items
]
当たり前ですがNode.js22からの新機能も利用できていますね。
詳しくは公式のアナウンスを見ていただくのが確実ですが、globとglobSync以外にも色々な機能追加やアップデートが入っています。
抜粋すると以下のような機能追加/アップデートが入っているようです。
- V8 Update to 12.4
- Maglev
- Support require()ing synchronous ESM graphs
- Running package.json scripts
- Stream default High Water Mark
- Watch Mode (node --watch)
- WebSocket
- glob and globSync
- Improve performance of AbortSignal creation
ユースケースに合いそうならこれらもうまく取り入れていきたいですね。
まとめ
簡単にですがLambdaのアップデートについてご紹介しました。
Node.jsはバージョンアップのサイクルが短めということもあり、早め早めに最新版への移行を検討していきたいですね。