Serverless Operations, inc

>_cd /blog/id_2c4zg71no

title

AWS Lambda Web Functionsとは?Lambda Web Adapterとの違いと使い方を解説

AWS Lambda Web Functionsは2026年10月12日に発表された、Lambdaの新しい実行形態です。

https://aws.amazon.com/jp/blogs/aws/announcing-aws-lambda-web-functions-for-fast-consistent-web-app-performance-anywhere/

Express、Hono、Fastify、Next.jsといった普通のWebサーバーを、イベントハンドラーに書き換えずにそのままLambdaで動かせます。

これに伴い従来のイベント起動型Lambdaを Web Functionsとの対比でEvent Functionsと呼ぶようになりました。

また過去以下の記事で紹介したステートを保持できる Lambda MicroVMs を合わせてLambdaはこれで3モードを具備することになりました。

https://serverless.co.jp/blog/q_jbc6mp3a/

環境変数 AWS_LAMBDA_HTTP_ENDPOINT に待ち受けアドレスを入れておきサーバーはそこで待ち受けます。起動はローカルと同じ node index.js で動きます。

リリース時点で東京リージョンに対応していますがまだ対応環境が限定されており、ランタイムはNode.js 24(Arm64)のみとなっています。

それ以外にも最近はLambdaのアップデートが続ています。

AWS Lambda がコンテナベース関数で SnapStart をサポートしたのでやってみた

https://serverless.co.jp/blog/mg55x-8pn79/

AWS LambdaがAmazon S3 Filesの直接読み取り設定をサポートしたのでやってみた

https://serverless.co.jp/blog/qqh7_nye3e/

AWS Lambda の「自己管理型 S3 コードストレージ」を使ってみた — 東京リージョンで REFERENCE モードを試す

https://serverless.co.jp/blog/n9u3zz9nl3/

AWS LambdaがAvailability Zone metadataをサポートしました

https://serverless.co.jp/blog/9e6of5401tzk/

AWS Lambdaの新しい選択肢AWS Lambda Managed Instanceとは?実際にEC2を起動して動かしてみた

https://serverless.co.jp/blog/q9iar9xn6v57/

さすがAWSといったところです。

LWA (Lambda Web Adaptor) との違い

Lambdaには従来Webフレームワークを動作せるためLWAというものが用意されていました。

AWS Lambda Web AdaptorがGAしたので触ってみる

https://serverless.co.jp/blog/zk3qigvmd_6/

AWS Lambda Web Adapter × SnapStartでコールドスタートを改善する

https://serverless.co.jp/blog/v2x79gmkf/

EC2上でLambda関数を動作させる特殊モードであるLambda Managed Instance を除くと今回のアップデートであるWeb Functionsとの違いは以下の通りです。

観点

LWA + 通常Lambda

Web Functions

同時実行

1環境1リクエスト

1環境で最大128

Managed Instance の場合は、1環境で複数リクエストを処理するモードが備わっていますが、EC2料金の115%分が発生し続けることを考えると少し選択肢としては特殊といえます。

1環境で最大128リクエストを処理できるWeb Functionsの方がよりWebサーバ的な利用ができるといえます。

さっそくやってみる

まずAWS CLIをバージョンアップします。

curl -o awscliv2.zip https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip && unzip -o awscliv2.zip && sudo ./aws/install --update

関数を作成します。

aws lambda-web deploy --name my-web-app --hello-world
Creating starter application in ./my-web-app ...
Creating deployment package ...
Preparing Amazon S3 bucket ...
Preparing AWS IAM execution role ...
Uploading deployment package ...
Creating Lambda Web Function ...
Waiting for endpoint to become active (timeout 600s) ...
Waiting for endpoint to become active (state Pending, 0s elapsed, timeout 600s) ...
Waiting for endpoint to become active (state Pending, 5s elapsed, timeout 600s) ...
https://s6zb63f18rn3gwy0.9dy.lambda-web.us-west-2.on.aws
Console: https://us-west-2.console.aws.amazon.com/lambda/home#/web-functions/my-web-app

ではアクセスしてみます。

curl https://s6zb63f18rn3gwy0.9dy.lambda-web.us-west-2.on.aws/
{"message":"Hello from Lambda Web!","path":"/"}

無事Web Functionsの作成が完了しています。

以下の内容でデプロイされています。

~/my-web-app$ more server.ts
// Minimal AWS Lambda Web Function HTTP server.
//
// You can replace this with any code or framework that starts an HTTP server.
import http from 'node:http';

// Lambda sends requests to port 3000. Set LOCAL_PORT for local development.
const port = Number(process.env.LOCAL_PORT ?? 3000);

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'content-type': 'application/json' });
  res.end(JSON.stringify({ message: 'Hello from Lambda Web!', path: req.url }));
});

server.listen(port, () => {
  console.log(`listening on port ${port}`);
});

Written by
編集部

亀田 治伸

Kameda Harunobu

  • Facebook->
  • X->
  • GitHub->

Share

Facebook->X->
Back
to list
<-