AWS Lambda 用の node.js ベースイメージを使っていたところ、 node のバージョンが古いことに気が付きました。
背景は覚えていないのですが、 Docker Hub に上がっている AWS Lambda ベースイメージ amazon/aws-lambda-nodejs:22 を Dockerfile で使用しており、
これが古くなっているようです。
node.js が古い
amazon/aws-lambda-nodejs:22 イメージの node.js のバージョンを確認してみます。
v22.12 1 以上がほしかったのですが、ぎりぎり足りていません。
$ docker run --rm --entrypoint '' amazon/aws-lambda-nodejs:22 node --version
v22.11.0
https://hub.docker.com/layers/amazon/aws-lambda-nodejs/22
最新の node.js バージョン
現時点での node.js v22 系の最新は 22.22.1 でした。
22.11.0 は1年以上前なのでだいぶ古いですね・・・。
| バージョン | リリース日 |
|---|---|
| v22.22.1 | 2026-03-05 |
| v22.11.0 | 2024-10-29 |
ECR の方は最新
Lambda のベースイメージは ECR の方にも配置されているので確認してみます。
こちらは 22.22.1 と、 22 系の最新バージョンとなっていました。
$ docker run --rm --entrypoint '' public.ecr.aws/lambda/nodejs:22 node --version
v22.22.1
https://gallery.ecr.aws/lambda/nodejs
今回はこちらを使うように Dockerfile を書き換えることで問題解決できました。
Docker Hub 側に amazon/aws-lambda-nodejs:24 がない
問題は解決しましたがちょっと気になったので、
Docker Hub 側の amazon/aws-lambda-nodejs リポジトリの色々なタグを pull し、
中に入っている node.js のバージョンを見てみました。
なぜか 22 はあるのに 24 というタグは存在しないようです。
$ docker run --rm --entrypoint '' amazon/aws-lambda-nodejs:24 node --version
Unable to find image 'amazon/aws-lambda-nodejs:24' locally
docker: Error response from daemon: manifest for amazon/aws-lambda-nodejs:24 not found: manifest unknown: manifest unknownただ、 22-x86_64 や 24-x86_64 というようなタグは更新されているようです。
メジャーバージョンのみのタグはもう更新されていないのでしょうか。
$ docker run --rm --entrypoint '' amazon/aws-lambda-nodejs:22-x86_64 node --version
v22.22.1
$ docker run --rm --entrypoint '' amazon/aws-lambda-nodejs:24-x86_64 node --version
v24.14.0特別な理由がなければ ECR のイメージを使おう
AWS のドキュメントや、なんなら Docker Hub の Overview ページも
public.ecr.aws/lambda/nodejs を使う例が書かれているので、
こだわりがなければ ECR Public Registry に上がっているベースイメージを使うのが良いと考えられます。
Footnotes
-
Vite がサポートしているバージョンがそれだったため
↩Vite 8 requires Node.js 20.19+, 22.12+
https://vite.dev/blog/announcing-vite8