Serverless Express v5 (Beta) で Node.js 24 がサポートされたので AWS Lambda で動かしてみた

Serverless Express v5 (Beta) で Node.js 24 がサポートされたので AWS Lambda で動かしてみた

2025.12.29

こんにちは、製造ビジネステクノロジー部の若槻です。

Express をサーバーレス環境で実行できる Serverless Express で v5 (Beta) がリリースされ、Node.js 24 がサポートされました。

https://github.com/CodeGenieApp/serverless-express/releases/tag/v5.0.0-beta.1

AWS Lambda の Node.js ランタイムでも最新バージョンとして 24 がサポートされているので、これでベータ版ではありますが、Serverless Express を使っている実装でも Node.js 24 ランタイムを利用可能になりました。

今回は、Serverless Express v5 を実際に AWS Lambda 関数上で動かしてみました。

やってみた

パッケージインストール

Express v5 をインストールします。

npm install express@latest @types/express

Express v5 のサポートは2024年末にされています。

https://dev.classmethod.jp/articles/serverless-express-express-v5-lambda-proxy-integration-aws-cdk/

Serverless Express v5 (Beta) をインストールします。

npm install @codegenie/serverless-express@beta

ハンドラーコード

Serverless Express を Lambda 関数上で動かすハンドラーコード (TypeScript) です。

import serverlessExpress from "@codegenie/serverless-express";
import express, { Request, Response } from "express";

const app = express();

app.get("/hello", async (_: Request, res: Response): Promise<void> => {
  res.status(200).send({ message: "Hello, world!" });
});

export const handler = serverlessExpress({ app });
Express は ESM 非対応なので、必要に応じて esModuleInterop を設定します。
{
  "compilerOptions": {
    "esModuleInterop": true
  }
}

CDK コード

API Gateway REST API の Lambda プロキシ統合のリソースは AWS CDK で実装します。

import * as cdk from "aws-cdk-lib";
import * as apigateway from "aws-cdk-lib/aws-apigateway";
import * as lambda from "aws-cdk-lib/aws-lambda";
import * as lambda_nodejs from "aws-cdk-lib/aws-lambda-nodejs";
import { Construct } from "constructs";

export class SampleStack extends cdk.Stack {
  constructor(scope: Construct, id: string) {
    super(scope, id);

    /**
     * Lambda Function
     */
    const handler = new lambda_nodejs.NodejsFunction(this, "Handler", {
      entry: "src/handler.ts",
      runtime: lambda.Runtime.NODEJS_24_X, // Node.js 24 ランタイムを指定
    });

    /**
     * API Gateway REST API
     */
    new apigateway.LambdaRestApi(this, "RestApi", {
      handler,
    });
  }
}

上記をデプロイしてリソースを作成します。

動作確認

API を呼び出すと、期待通りのレスポンスが返りました。良さそうですね。

$ curl https://v9lnm7ytj7.execute-api.ap-northeast-1.amazonaws.com/prod/hello
{"message":"Hello, world!"}

破壊的変更

ドキュメントを見ると、v4 から v5 へのアップデートで破壊的変更がいくつかあるようです。

https://github.com/CodeGenieApp/serverless-express/blob/mainline/UPGRADE.md#from-4x-to-5x

まずサポートされる Node.js の最小バージョンが 24 になりました。22 以前でも使えないことは無さそうですが、v5 を使うなら確実に 24 以上を使った方が良さそうです。

そして、幾つかのメソッドやオプションの削除などが行われていますが、Serverless Express v4 の最新の使い方をしていれば問題無いように見受けられます。

おわりに

Serverless Express v5 (Beta) で Node.js 24 がサポートされたので AWS Lambda で動かしてみました。

v5 (Beta) がリリースされたのは12月初旬ごろだったので、GA は遅くとも2026年前半くらいにななるのでは無いでしょうか。今しばらく待ちましょう。

ちなみに標題と少しズレるのですが、そういえば Serverless Express の README にあまり詳しいサンプルコードが掲載されていないなあとソースコードを探っていると、サンプルコード集は下記にまとめられていました。

https://github.com/CodeGenieApp/serverless-express/tree/mainline/examples

Lambda プロキシ統合でのサンプルだと下記です。今後はこれを参考コードとして共有しても良さそうですね。

https://github.com/CodeGenieApp/serverless-express/tree/mainline/examples/basic-starter-api-gateway-v2-typescript/src

以上

この記事をシェアする

FacebookHatena blogX

関連記事