最近AWSは、Node.jsバージョン16がFunction as a Service(FaaS)AWS Lambdaをサポートし、アクティブなLTSステータス(一般利用可能)にあることを発表した。
開発者は、Node.jsの新機能を使ってAWS Lambda関数を作成できるようになった。新機能としては、ツールチェーンやコンパイラのアップグレード(Apple Silicon向けのビルド済みバイナリを含む)、安定版のTimers Promises API、RegExpマッチインデックス、引数のサイズが一致しない場合の高速呼び出しなどがある。
AWS LambdaはNode.jsの現在のロングタームサポート(LTS)バージョンをサポートしている。つまり、新しいバージョンを使う開発者は、関数を作成・更新するとき、あるいは適切なマネージドランタイムベースイメージを使って、nodejs16.xのランタイムパラメーター値を指定する必要がある。さらに、Node.js 16ランタイムは、ArmベースのAWS Graviton2プロセッサあるいはx86ベースのプロセッサで実行される関数によってサポートされる。
Node.js 16バージョンには、2022年1月にNode.js 14ランタイムに追加されたESモジュールのサポートとトップレベルのawaitが含まれている。これは、Provisioned Concurrencyと使うことでコールドスタート時間を短縮するために役立つ。
Node.js 16マネージドランタイムとコンテナベースイメージには、AWS JavaScript SDKバージョン2がバンドルされている。AWSのサーバーレス担当のプリンシパルスペシャリストソリューションアーキテクトDan Fox氏は、最近のAWS Computeブログ投稿でSDKの利点について説明している。
バンドルされたSDKを使うのは、いくつかのユースケースにおいて便利です。たとえば、Lambdaコンソールを介して短い関数を記述したり、CloudFormationテンプレートを介してインライン関数を記述したりする開発者は、バンドルされているSDKを参照すると便利です。
以前、AWS Lambdaで利用できたNode.jsランタイムは14であり、2021年10月からメンテナンスLTSになっている。11か月でサポートが終了する予定である。
出典: https://nodejs.org/en/about/releases/
プリンシパルクラウドアーキテクトのKenneth Falck氏は、次のようにツイートしている。
LambdaがついにNode 16をサポートするのはうれしいです。しかし、私の14.x関数が最終的に非推奨になることを知って、うれしくありません。Webブラウザのように裏で自動アップグレードするEvergreenプラットフォームがあればよかったのにと思います。Lambda向けのWebAssemblyといったところでしょうか。
さらに、同社はLambda向けのNode.js 16ランタイムのリリースが遅くなったことを認めている。Redditスレッドの投稿者は次のように述べている。
今のところは、確かに言っているだけです。しかし、私はAWSの発表で自己批判を読むことはそうそうないため(実際に何も思い出すことができない)、その点で改善されると信じたいです。
そして、スレッドの別の人たちは、Python 3.10とRuby 3. x向けがまもなくリリースされることを望んでいる。
最後に、AWS LambdaドキュメントのNode.jsプログラミングモデルには、Node.js 16での関数の記述に関する詳細が記載されている。さらに、開発者は、既存のNode.js関数を新しいランタイムに移行できる。互換性の問題についてコードを確認した後、ランタイム設定をnodejs16.xに変更することで移行できる。