AWS Lambda が Node.js 18 ランタイムをサポートするようになりました

最近 AWS は、Node.js バージョン 18 が Function as a Service (FaaS) AWS Lambda をサポートし、アクティブな LTS ステータス (一般的な使用の準備ができている) であることを発表しました。

開発者は、Node.js 18 の新しい言語機能 (クラス フィールドとプライベート クラス メソッドのパフォーマンスの向上、JSON インポート アサーション、および Fetch API、Test Runner モジュール、Web Streams API などの実験的機能など) を使用して AWS Lambda 関数を作成できるようになりました。

Node.js 18 では、グローバル fetch API がデフォルトで利用可能です。実験的な機能の 1 つに fetch 関数が含まれており、fetch ポリフィルとサードパーティの HTTP パッケージが冗長になります。

// index.mjs 

export const handler = async(event) => {
    
    const res = await fetch('https://nodejs.org/api/documentation.json');
    if (res.ok) {
      const data = await res.json();
      console.log(data);
    }

    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    };
    return response;
};

実験的な機能は、NODE_OPTIONS 環境変数を介して有効化/無効化できます。

AWS Lambda は、Node.js の現在の長期サポート (LTS) バージョンをサポートしています。つまり、新しいバージョンを使用したい開発者は、関数を作成または更新するとき、または適切なマネージド ランタイム ベースを使用するときに、nodejs18.x のランタイム パラメータ値を指定する必要があります。画像。 さらに、Node.js 18 ランタイムは、Arm ベースの AWS Graviton2 または x86 ベースのプロセッサで実行される関数によってサポートされます。

以前は、AWS Lambda で利用可能な Node.js ランタイムは 16 で、2022 年 10 月中旬からメンテナンス LTS でした。今から 1 年後にサポートが終了します。


ソース: https://github.com/nodejs/release#release-schedule

Node.js 16 まで、Lambda の Node.js ランタイムには AWS SDK for JavaScript バージョン 2 が含まれていましたが、現在は Node.js 18 で AWS SDK for JavaScript バージョン 3 にアップグレードされています。したがって、Node.js 18 にアップグレードする開発者は更新できます。 SDK v3 を使用するための関数コード – 会社によると、推奨される方法です。 または、開発者は、SDK v2 と関数コードをデプロイすることで、既存のコードを更新せずに Node.js 18 ランタイムを使用できます。

クラウド コンサルタントの AppDev である Suraj Tripathi は、AWS Compute のブログ投稿で次のように説明しています。

SDK for JavaScript のバージョン 3 には、バージョン 2 に比べて多くの利点があります。最も重要なことは、モジュール式であるため、コードは必要なモジュールのみをロードすることです。 Lambda ランタイムに組み込まれたバージョンを使用するのではなく、関数コードを使用して SDK をデプロイすることを選択した場合、モジュール性によって関数のサイズも縮小されます。

加えて、 スティーブ・サンダース、ブートストラップ寄付の CTO、 つぶやいた:

AWS Lambda でノード 18 をサポート!

現在、AWS JavaScript SDK の v3 も含まれています。これは、それを使用している場合に朗報です。デプロイにバンドルするものが 1 つ減ります。

v3 SDK を使用する場合、開発者はたとえば、必要なモジュールのみをインポートできます。 ListBucketsコマンド、および S3Client のようなカスタマー サービス:

import { S3Client, ListBucketsCommand } from "@aws-sdk/client-s3";

Node.js 18 ランタイムのもう 1 つの変更点は、NODE_PATH 環境変数を介した ES モジュール解決のサポートが追加されたことです。 Lambda のランタイムは、ES モジュールをロードするときに NODE_PATH にリストされているフォルダーを検索します。これにより、AWS SDK を ES モジュールとして含めたり、Lambda レイヤーから ES モジュールをロードしたりすることが容易になります。

コミュニティと開発者は、Node.js 18 の AWS Lambda ランタイム サポートを歓迎します。 ジョン・ブレリエ、Allianz Trade のプリンシパル ソフトウェア エンジニア、 つぶやいた:

#NodeJS を他のバージョンよりも 18 倍速く出荷する @AWS ラムダ チームにおめでとう。 あと数ヶ月だと思っていました。

同様に、Reddit スレッドの回答者は次のように書いています。

良い! ロールアウトがノード 16 よりも速かったことに感謝します。

ただし、Lambda 用の Python の新しいバージョンもサポートされることを期待する人もいました。 Efi Merdler-Kravitz、AWS ヒーロー、 つぶやいた:

@jbesw Python 11のサポートはいつ見られますか?
ノードがすべてのアクションを取得するようです

最後に、AWS Lambda ドキュメントの Node.js プログラミング モデルには、Node.js 18 での関数の記述に関する詳細が記載されています。互換性の問題についてコードを確認します。

.

Leave a Comment

Your email address will not be published. Required fields are marked *