クラウド
PR

Lambda Web Functionsとは?Next.jsもそのまま【2026年10月】

Lambda Web Functionsとは?Next.jsもそのまま【2026年10月】
IT Picks編集部

2026年10月12日(米国時間)、AWS は Lambda Web Functions を発表しました。Express・Hono・Next.js などの Node.js の Web サーバーを、書き換えずにそのまま AWS Lambda で動かせる新しい形の Lambda です。

AWS Lambda が Lambda Web Function を発表
AWS Lambda が Lambda Web Function を発表

これまでの Lambda は「イベントを受け取って処理する関数」が基本で、Web アプリは API Gateway や関数 URL などを通して、1リクエストずつ処理する形でした。Web Functions は、ふだん手元で動かしている HTTP サーバーを、そのまま Lambda に載せる——という位置づけのサービスです。

この記事はこんな人向けです

  • Express・Hono・Next.js などの Node.js の Web アプリや API を、サーバーを管理せずに AWS で動かしたい
  • これまでの Lambda 関数(関数 URL・Lambda Web Adapter)と何が違うのかを知りたい
  • 料金・使えるリージョン・制限を、公式の情報で確かめてから試したい

Lambda Web Functionsとは?一言でまとめると

一言でいうと、ポートで待ち受ける普通の Web サーバーを、サーバーの管理なしで動かせる Lambda です。AWS の発表では、次の特徴が挙げられています。

  • アダプターなしで動く:Express や Hono などを、アダプターやカスタム設定なしで使える
  • 1つの環境で複数のリクエストを同時に処理:ブログによると、1つの実行環境で最大128の同時リクエスト
  • 使った CPU 時間で課金:DB や外部 API の応答を待っている間の CPU 時間には課金されない
  • HTTPS の URL が付く:証明書の管理は Lambda が行う

今回の発表で、AWS は既存の Lambda 関数の名前を「Lambda Event Functions」に変えました。名前だけの変更で、既存の関数のコード変更や再デプロイは不要です。Lambda は次の3つの形になります。

形 向いている用途(AWS の説明) 処理のしかた 課金
Event Functions(従来の Lambda 関数) イベント処理、キューの処理、ほかの AWS サービスからの呼び出し イベントを受け取るハンドラー。1環境で1リクエスト リクエスト数と実行時間
Web Functions(新しい形) Web アプリ、API、SSR、ストリーミング ポートで待ち受ける HTTP サーバー。1環境で複数リクエスト リクエスト数とアクティブな CPU 時間・メモリ
MicroVMs 信頼できないコード・利用者が書いたコードの実行 状態を持つ隔離された環境 インスタンス秒

※ 2026年11月2日時点(AWS News Blog・AWS Lambda 料金ページ)。

3つとも、同じ Firecracker(AWS の軽量な仮想化技術)で分離されています。AWS は、非同期の処理は Event Functions、利用者向けの API や SSR は Web Functions——のように組み合わせる使い方を紹介しています。

従来のLambda関数・関数URL・Web Adapterとの違い

Lambda 開発者ガイドは、これまでの Lambda(Event Functions)で Web アプリを動かす方法を、次のように説明しています。

  • API Gateway・Application Load Balancer・Lambda 関数 URL を通して Web や API のリクエストを処理する
  • 既定では、1つの実行環境が一度に1つのリクエストだけを処理する

そのうえで、「標準の Web サーバーから HTTP を直接処理するには Lambda Web Functions を使う」と案内しています。

Lambdaの従来のEvent FunctionsとWeb Functionsの違いを比べた図
AWS News Blog・Lambda 開発者ガイド・AWS Lambda 料金ページ(2026年11月2日確認)をもとに IT Picks 編集部が作成

また、ランタイムのドキュメントには 「AWS Lambda Web Adapter など、イベントを HTTP に変換するアダプターは不要」 と書かれています。アプリはフレームワークの標準のルーティングやミドルウェアで、HTTP リクエストを直接処理します。

違いをまとめると、次のとおりです。

項目 Event Functions(関数 URL など) Web Functions
コードの形 イベントを受け取るハンドラー ポートで待ち受ける HTTP サーバー
同時リクエスト 既定は1環境で1つ 1環境で複数(上限の既定64、最大128)
課金の考え方 リクエスト数と実行時間(GB 秒) リクエスト数とアクティブな CPU 時間・メモリ
対応言語 多数 Node.js のみ

なお、関数 URL や Web Adapter との機能の細かい比較は、AWS の公式の発表・ドキュメントには載っていません。既存の関数 URL の構成をどうするかは、上の違いと自分のアプリの性質で判断することになります。

対応フレームワークとランタイム:Node.js 24だけ

2026年11月2日時点で、Web Functions が対応しているのは Node.js だけです。

項目 内容(AWS の発表・開発者ガイドより)
ランタイム Node.js 24(nodejs24.x)
アーキテクチャ Arm64(ローンチ時。ブログより)
フレームワーク HTTP サーバーを起動するものなら可。例は Express・Hono・Fastify・Next.js・Koa・React Router
入口のファイル 既定は index.js(AWS_LAMBDA_NODEJS_ENTRYPOINT で変更)
デプロイの形式 .zip

Java・Python・.NET などを使う場合、開発者ガイドは Event Functions か MicroVMs を使うよう案内しています。

アプリ側で必要なのは、環境変数 AWS_LAMBDA_HTTP_ENDPOINT のホストとポートで待ち受けることだけです。開発者ガイドのサンプルは、次のような形です。

const [host, port] = (process.env.AWS_LAMBDA_HTTP_ENDPOINT || 'localhost:3000').split(':');
app.listen(port, host);

手元では環境変数が無いので、localhost:3000 で動きます。同じコードが手元でも Lambda でも動くのがポイントです。

Hono は、開発者ガイドに hono と @hono/node-server を使った API と静的ファイルのサンプルがあります。

Next.js は注意が必要です。standalone モードの Next.js は、待ち受けの住所を HOSTNAME と PORT という独自の環境変数から読みます。そのため開発者ガイドは、index.js で AWS_LAMBDA_HTTP_ENDPOINT からこの2つを設定してから、サーバーを起動するよう案内しています。

料金:待ち時間のCPUには課金されない

料金ページによると、Web Functions の料金はリクエスト数・アクティブな CPU 時間・メモリ・データ転送で決まります。計算は 1ms 単位です。

項目 単価(米国東部(バージニア北部)・Arm)
アクティブな vCPU $0.0000276944/vCPU 秒
メモリ $0.0000036667/GB 秒
リクエスト $0.30/100万リクエスト
データ転送 AWS の標準のデータ転送料金

※ 2026年11月2日時点(AWS Lambda 料金ページの料金例の単価)。東京など、ほかのリージョンの単価は料金ページでリージョンを選んで確認してください。

ポイントは2つです。

  • CPU は「実際に計算している時間」だけ:DB の応答を待っている間は、CPU をほとんど使わない
  • メモリは「実行環境がある間ずっと」:リクエストとリクエストの間の待ち時間も含まれる

料金ページには、毎月の料金の例が載っています(実行環境が常に1つだけ動いている想定。無料利用枠とデータ転送は除く)。

例 月のリクエスト 1リクエストの時間(うち CPU) メモリ 月額
SSR の Web アプリ 1,500万 150ms(40ms) 約500MB $25.78
I/O の多い API 1,000万 200ms(50ms) 約300MB $19.61
LLM のストリーミング 500万 3,000ms(200ms) 約512MB $33.94

LLM のストリーミングの例では、1リクエストが3秒開いていても、課金される CPU は 200ms 分です。料金ページは、待ち時間が長い処理ほど、アクティブ CPU 課金の効果が大きいと説明しています。

なお、Web Functions に無料利用枠がどれだけあるかは、料金ページに明記されていません(Event Functions は月100万リクエストと40万 GB 秒)。

提供リージョン:東京で使える

2026年11月2日時点で、Web Functions を使えるのは次の5つのリージョンです。アジアパシフィック(東京)が含まれています。

  • 米国東部(バージニア北部)
  • 米国東部(オハイオ)
  • 米国西部(オレゴン)
  • アジアパシフィック(東京)
  • 欧州(アイルランド)

大阪リージョンは、発表時点のリストに入っていません。最新の一覧は、AWS の「リージョン別の AWS 機能」のページで確認できます。

複数のリージョンで動かす場合は、エンドポイントの種類を選びます。

種類 動かす場所 URL ルーティング
HomeRegion 1つのリージョン リージョンごとのドメイン —
MultiRegion 複数のリージョン 1つのグローバルなドメイン 近いリージョンへ自動(ベストエフォート)
PerRegion 複数のリージョン リージョンごとのドメイン 自分で管理(Route 53・CloudFront など)

エンドポイントの種類とリージョンは、作った後から変えられません。変えるときは、新しいエンドポイントを作って移行します。

始め方:コマンド1つでHTTPSのURLが出る

AWS の手順は、AWS CLI と マネジメントコンソール の2通りです。

AWS What's Newの「AWS Lambda が Lambda Web Function を発表」の発表ページ
2026年11月2日時点(出典:AWS「AWS Lambda が Lambda Web Function を発表」)

① AWS CLI で試す

aws lambda-web コマンドを含む AWS CLI バージョン2 が必要です。aws lambda-web help が動けば使えます。

  1. サンプルを作ってデプロイする:aws lambda-web deploy --name my-web-app --hello-world
  2. 出力された URL にアクセスする:https://〜.lambda-web.us-east-1.on.aws のような URL が返る
  3. 自分のアプリを出す:aws lambda-web deploy --name my-web-app --code ./my-web-app

1回目のデプロイでは、コードを置く S3 バケットと、ログ用の IAM 実行ロールが自動で作られます(すでにあれば再利用)。dev という名前のエンドポイントができ、2回目以降のデプロイでは同じ URL のまま新しいリビジョン(コードのスナップショット)に切り替わります。

注意したいのは、サンプルのエンドポイントは既定で認証なしという点です。誰でもアクセスできるため、制限したいときは --auth-type IamAuth を付けます。

複数のリージョンに出すときは --regions us-east-1,eu-west-1,ap-northeast-1 のように指定します(ブログの例)。新しいリビジョンに90%・10% のようにトラフィックを分けるカナリアリリースもできます。

② コンソールで試す

  1. Lambda コンソールの左のメニューで 「Web Functions」 を選ぶ
  2. 「Create Web Function」 を選び、関数名を入れる(コードは「Hello World template」のままで可)
  3. エンドポイントの名前を入れ、種類は Home-Region、認証は アプリ側の認証 か IAM 認証 を選ぶ
  4. 「Create Web Function」を押し、エンドポイントが Active になったらドメインにアクセスする

制限・注意点:WebSocketは使えない

ドキュメントに書かれている主な制限をまとめます。多くは引き上げできません。

Lambda Web Functionsの主な制限をまとめた図
Lambda 開発者ガイド(クォータ・HTTP・ネットワーク・ランタイム。2026年11月2日確認)をもとに IT Picks 編集部が作成
項目 内容
言語 Node.js 24 のみ
実行環境のサイズ 2 vCPU・メモリ 2GB で固定
リクエストのタイムアウト 既定 30秒(3〜900秒)
サーバーの起動 10秒以内に待ち受けを始める
デプロイパッケージ 512MB(解凍後)
WebSocket 非対応(一方向なら server-sent events)
HTTP HTTP/1.1(HTTP/1.0 は拒否)。HTTPS(443)だけ
独自ドメイン・WAF CloudFront を前に置く
ランタイムの更新 自動でパッチ。特定のバージョンに固定できない

※ 2026年11月2日時点(Lambda 開発者ガイド)。

アカウントの上限も、リージョンごとに決まっています。1エンドポイントあたり毎秒1万リクエスト、アカウント合計で毎秒10万リクエスト、vCPU は 2,000 個(1環境 2 vCPU)です。超えると HTTP 429 が返ります。

もう1つ大事なのが、1つのプロセスで複数のリクエストを同時に処理する点です。開発者ガイドは、重い同期処理を書くとほかのリクエストも止まること、リクエストごとのデータをグローバル変数に入れないことを注意点に挙げています。1リクエスト1環境だった Event Functions の感覚で書くと、ハマりやすいところです。

CloudFront と組み合わせる場合、OAC(origin access control)を使うと、自分の CloudFront からだけ呼べるようにできます。AWS の暗号まわりの最近の動きは、こちらでもまとめています。

あわせて読みたい
AWS耐量子TLS、Aurora・CloudFrontで拡大【2026年10月】
AWS耐量子TLS、Aurora・CloudFrontで拡大【2026年10月】

IT Picks的な所感

今回の発表は、「Lambda で Web アプリを動かすための工夫」を、AWS 自身が正式な形にしたものだと思います。これまでは Web Adapter などを組み合わせていた部分が、aws lambda-web deploy の1行と、ポートで待ち受ける普通のコードで済むようになりました。

特に大きいのは、手元で動くコードがそのまま動くことと、待ち時間に CPU 料金がかからないことです。DB や外部 API、LLM の応答を待つ時間が長いアプリほど、料金の考え方が変わります。Vercel など、Next.js をそのまま置ける他社のサービスと比べる選択肢が1つ増えたと言えるでしょう。

一方で、今は Node.js 24 だけ・2GB 固定・WebSocket 非対応と、割り切った作りです。メモリは実行環境がある間ずっと課金されるので、アクセスが少ないのに環境が残る使い方では思ったほど安くならない可能性もあります。料金の上限の決め方は、Vercel の記事でまとめた考え方が参考になります。

あわせて読みたい
Vercelの高額請求を防ぐには?予算と自動停止の設定【2026年版】
Vercelの高額請求を防ぐには?予算と自動停止の設定【2026年版】

AWS のほかのサービスの無料枠と比べたい場合は、こちらもあわせてどうぞ。

あわせて読みたい
クラウド無料枠を比較:AWS・GCP・Azure・OCI【2026年版】
クラウド無料枠を比較:AWS・GCP・Azure・OCI【2026年版】

まとめ

AWS Lambda Web Functions のポイントをまとめます。

  • 発表日:2026年10月12日(米国時間)
  • 何か:ポートで待ち受ける Node.js の Web サーバーを、アダプターなしで動かす新しい Lambda
  • 従来の Lambda:「Lambda Event Functions」に改名(コード変更・再デプロイは不要)
  • 対応:Node.js 24(nodejs24.x)・Arm64。Express・Hono・Fastify・Next.js など
  • リージョン:バージニア北部・オハイオ・オレゴン・東京・アイルランド
  • 料金:リクエスト数+アクティブな CPU 時間+メモリ+データ転送(バージニア北部は 100万リクエスト $0.30)
  • 始め方:aws lambda-web deploy --name my-web-app --hello-world
  • 主な制限:2 vCPU・2GB 固定、WebSocket 非対応、独自ドメインは CloudFront 経由

Node.js で Web アプリを作っているなら、まずは --hello-world のサンプルを東京リージョンで出してみて、自分のアプリの CPU とメモリの使い方を確かめるところから始めるのがおすすめです。

ABOUT ME
IT Picks 編集部
IT Picks 編集部
ITツール・Webサービス紹介メディア
IT Picks 編集部。VPS・クラウド・AIツール・SaaSを中心に、実際に検証した情報を届けるITメディアです。「本当に使えるか」を基準に、初心者からエンジニアまで役立つ記事を制作しています。
記事URLをコピーしました