0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS Lambda Tips】Node.js 18から22へのバージョンアップ手順まとめ

Posted at

はじめに

Lambda関数のランタイムに設定しているNode.jsのバージョンアップ方法を紹介する。本記事では、例としてNode.js 18以前からNode.js 22への変換のポイントについても併せて紹介する。

【参考】Node.jsのサポート期間

Node.js 18以前のバージョンは、2025年4月でサポート切れとなっている。AWSのLambda関数のランタイムとしてもセキュリティサポートの対象外となるので対応を推奨する。

動作確認環境

  • バージョンアップ前
    • Node.js 14、16、18
  • バージョンアップ後
    • Node.js 22

方法

AWSのコンソールを使用する方法を紹介する。

特定のランタイムのLambda関数を抽出

検索欄のフィルタで、ランタイムを特定できる。

image.png

今回は、Node.js 14、16、18をランタイムとして利用している関数を抽出するので、以下のように設定する。

image.png

Lambda関数のコードの修正

変更したいLambda関数を選択して、「コード」のタブを押す。

image.png

「コードソース」からコードを修正する。

コードを修正する前に、バージョンを発行しておくことを推奨する。バージョン発行についてはこちらの記事を参照。

Node.js 14、16からNode.js 22に変更する際のポイントとして以下がある。

  • CommonJSからECMAScript(ES Module, ES2015)に変更
  • AWS CDKをv3にバージョンアップ

CommonJSからECMAScript(ES Module, ES2015)に変更

Nodeのバージョン18以上のLambdaでは、デフォルトファイルの拡張子がmjsに変更されている。そのため、モジュールのインポート方法を変更し、index.jsファイルのファイル名をindex.mjsに変更する。詳細は、こちらの記事を参照。

以下にコード修正の例を示す。

CommonJSを使う例(Node.js 14/16)
// index.js
const AWS = require('aws-sdk');

exports.handler = async (event) => {
  const s3 = new AWS.S3();
  const result = await s3.listBuckets().promise();
  
  return {
    statusCode: 200,
    body: JSON.stringify(result.Buckets),
  };
};

上記のコードをNode.js 22で動作するように、ES Moduleスタイルに変更する。
コード修正が完了したら、index.jsのファイル名をindex.mjsに変更する。

ES Moduleを使う例(Node.js 22)
// index.mjs
import { S3 } from 'aws-sdk';

export const handler = async (event) => {
  const s3 = new S3();
  const result = await s3.listBuckets().promise();
  
  return {
    statusCode: 200,
    body: JSON.stringify(result.Buckets),
  };
};

変更前

image.png

変更後

image.png

最後に、Deployボタンを押して、コードの修正を反映する。

Lambda関数のランタイムを修正

コードの修正が完了したら、ランタイムを修正する。

変更したいLambda関数「コード」のタブの下の方にある、「ランタイム設定」の「編集」ボタンを押す。

image.png

Node.js 22を選択して、保存ボタンを押して完了。

image.png

テストなどを実施して正しく動作すれば成功。動作しない場合は、CloudWatchのログを確認すると良い。

「モニタリング」タブから、「CloudWatchログを表示」ボタンを押すとCloudWatchのログを確認できる。詳細はこちらの記事を参照。

image.png

まとめ

Lambda関数のランタイムに設定しているNode.jsのバージョンアップ方法を紹介した。例としてNode.js 18以前からNode.js 22への変換のポイントについても併せて紹介した。Node.jsのサポート切れでバージョンアップする際に参考にしてほしい。

参考

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?