AWS SAM CLI で AWS Lambda の Node.js 24 をデプロイしてみた
いわさです。
先日(2025 年 11 月 25 日)ついに AWS Lambda で Node.js 24 がサポートされましたね。
この AWS Lambda の Node.js 24 サポートですが、実は約 1 ヶ月前の 10 月 23 日には AWS の各ツールではなぜか対応版がリリースされていました。
例えば AWS CLI であれば 10 月 23 日の v1.42.58 でサポートされており、各種 SDK もそのタイミングで Lambda の Node.js 24 サポートが実装されています。
また、Slacklet や TreustOnCloud などサードパーティの AWS API 変更通知サイトでも 10月 24 日に Lambda API が Node.js 24 をサポートしたことを通知しています。
ただし、実際にはマネジメントコンソール上ではまだ Node.js 24 を使うことは出来ず、AWS CLI や SDK から関数を作成しようとしても Node.js 24 ランタイムの指定はサポートされていないというエラーが発生しつづけていました。
こんな形で CLI や SDK がなぜか先に対応して API としてはまだ使えないという謎な状況が続いていたのですが、AWS SAM CLI については先行で対応していませんでした。
そして 11 月 21 日のリリース v1.147.1 でついに Node.js 24 がサポートされています。
マネジメントコンソール側もサポートされているので、今回は私が Lambda 関数のデプロイに使っている SAM CLI をアップデートし、Node.js 24 テンプレートを使ったデプロイを行いました。

SAM CLI アップデート
私は普段 macOS(Arm64)で検証しています。
多くの方は以下からインストーラーリンクにアクセスしてインストーラーをダウンロードしてアップデートしていると思います。
罠がひとつあったのですが、昨日ブログを執筆した時点では SAM CLI の Latest がなぜか 1.146.0 を指している状態で、Node.js 24 ランタイムが指定できない状態でした。初めての事象でした。(本日時点では治っていました)
なので、GitHub のリリースページから直接最新版のインストーラーを取得しています。
検証用に旧バージョンへのロールバックを含めてバージョンを指定したインストーラを取得したい場合は GitHub のリリースページを使ってみてください。

バージョンは問題なしです。
% sam --version
SAM CLI, version 1.148.0
Node.js 24 ランタイムを指定する
AWS SAM CLI のバージョンアップが出来たので、あとはクイックスタートテンプレートを使って起動するだけです。
私の環境は ARM64 なので-a arm64を指定するか、デフォルトのx86の場合はコンテナを使ったビルドオプション--use-containerが必要です。
% sam init -a arm64
Which template source would you like to use?
1 - AWS Quick Start Templates
2 - Custom Template Location
Choice: 1
Choose an AWS Quick Start application template
1 - Hello World Example
2 - Data processing
3 - Hello World Example with Powertools for AWS Lambda
4 - Multi-step workflow
5 - Scheduled task
6 - Standalone function
7 - Serverless API
8 - Infrastructure event management
9 - Lambda Response Streaming
10 - GraphQLApi Hello World Example
11 - Full Stack
12 - Lambda EFS example
13 - Serverless Connector Hello World Example
14 - Multi-step workflow with Connectors
15 - DynamoDB Example
16 - Machine Learning
Template: 1
a
Use the most popular runtime and package type? (python3.14 and zip) [y/N]:
Which runtime would you like to use?
1 - dotnet8
2 - dotnet6
3 - go (provided.al2)
4 - go (provided.al2023)
5 - graalvm.java11 (provided.al2)
6 - graalvm.java17 (provided.al2)
7 - java25
8 - java21
9 - java17
10 - java11
11 - java8.al2
12 - nodejs24.x
13 - nodejs22.x
14 - nodejs20.x
15 - python3.9
16 - python3.14
17 - python3.13
18 - python3.12
19 - python3.11
20 - python3.10
21 - ruby3.4
22 - ruby3.3
23 - ruby3.2
24 - rust (provided.al2)
25 - rust (provided.al2023)
Runtime:
Node.js 24 の指定が出来るようになりました。
作成された SAM テンプレート上でもRuntimeにnodejs24.xが指定されていますね。
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
hoge1128nodejs
Sample SAM Template for hoge1128nodejs
# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
Globals:
Function:
Timeout: 3
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
CodeUri: hello-world/
Handler: app.lambdaHandler
Runtime: nodejs24.x
Architectures:
- arm64
Events:
HelloWorld:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
Path: /hello
Method: get
Outputs:
# ServerlessRestApi is an implicit API created out of Events key under Serverless::Function
# Find out more about other implicit resources you can reference within SAM
# https://github.com/awslabs/serverless-application-model/blob/master/docs/internals/generated_resources.rst#api
HelloWorldApi:
Description: "API Gateway endpoint URL for Prod stage for Hello World function"
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.${AWS::URLSuffix}/Prod/hello/"
HelloWorldFunction:
Description: "Hello World Lambda Function ARN"
Value: !GetAtt HelloWorldFunction.Arn
HelloWorldFunctionIamRole:
Description: "Implicit IAM Role created for Hello World function"
Value: !GetAtt HelloWorldFunctionRole.Arn
あとはsam buildとsam deployをします。
マネジメントコンソールを確認してみると無事 Node.js 24 ランタイムの関数が作成できていました。

さいごに
本日は AWS SAM CLI で AWS Lambda の Node.js 24 をデプロイしてみました。
各種ツールや API の対応タイミングがバラバラで、個人的にかなり混乱したこの Lambda Node.js 24 周りのアップデートでしたが、無事 SAM CLI 側もサポートされてひととおり落ち着いた感じです。
Node.js 24 が先に一部ツールなどでアップデートのアナウンスがされていたのにもかかわらず Python 3.14 や Java 25 だけが先に SAM CLI でサポートされて、Node.js 24 は使えない状況で困っていたのですが、ついに使えるようになって安心しました。
SAM CLI で Node.js 使っていた方は v1.147.1 以上にアップデートして使ってみてください。






