Cloud

AWS Lambda Web Functions: Run Node.js Web Apps Natively

AWS Lambda Web Functions run unmodified Node.js web servers with 128 concurrent requests per environment and global routing.

15 October 2026  ·  5 min read  ·  Anand

AWS Lambda Web Functions: Run Node.js Web Apps Natively

AWS has announced Lambda Web Functions, a new way to run ordinary HTTP applications on Lambda. You no longer have to rewrite an Express or Next.js app as an event handler or wrap it in an adapter. You deploy the server as it is, listening on a port, and Lambda handles scaling, routing and billing. Some teams like the serverless operating model but have stayed away because their code is built around a web framework. For them, this removes one of the biggest obstacles.

Lambda now comes in three forms

With this launch, AWS describes Lambda as having three form factors, all isolated with Firecracker:

Form factor How it works Best suited to
Event Functions Event handler, one request per environment, wall-clock billing Queue consumers, event processing, calls from other AWS services
Web Functions HTTP server on a port, up to 128 concurrent requests per environment, active CPU billing Web apps, API backends, I/O-heavy HTTP workloads
MicroVMs Stateful sandboxes with a lifecycle you manage Untrusted or user-generated code

The classic Lambda model you already know is what AWS now calls Event Functions.

What is different about Web Functions

Many requests per environment

A classic Lambda environment handles one request at a time, so a spike in traffic means a spike in new environments and cold starts. A Web Function environment can serve up to 128 requests at once. During a burst, requests share environments that are already warm instead of each one waiting for a new one to start. That works well for server-side rendering, API backends and endpoints that stream AI responses, where most of the time goes to waiting on something else.

Billing on active CPU

CPU is charged only while your code is actually running. Memory is charged for as long as the environment exists. A request that spends most of its time waiting for a database or an upstream API therefore uses little billable CPU. The announcement does not give rates, so check the Lambda pricing page and model the cost against your real traffic before you commit.

One global URL

You can list several regions at deploy time. Lambda copies your code to each region and sets up latency-based routing automatically. AWS describes this routing as best-effort. Callers use a single URL ending in lambda-web.global.on.aws.

Trying it out

Your server must listen on the address Lambda provides in the AWS_LAMBDA_HTTP_ENDPOINT environment variable. In an Express app, for example, you can split that value into host and port:

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

When running locally, set the variable yourself:

AWS_LAMBDA_HTTP_ENDPOINT=127.0.0.1:3000 node index.js

Deployment uses the new lambda-web commands in the AWS CLI, so update the CLI first. To see the full flow with a sample app:

aws lambda-web deploy --name hello-world --hello-world

To deploy your own app to one region:

aws lambda-web deploy --name my-web-app --code ./my-app

This command bundles the source, creates the function, publishes an immutable revision, attaches an endpoint and returns an HTTPS URL. To deploy to several regions, add a region list:

aws lambda-web deploy --name my-web-app --code ./my-app --regions us-east-1,eu-west-1,ap-northeast-1

Running the same command again uploads a new revision and points the endpoint at it. For a canary release, turn off automatic deployment on the endpoint and split traffic between two revisions:

aws lambda-web update-web-function-endpoint --function-name my-web-app --endpoint-name dev --auto-deployment-mode Disabled --revision-weights '[{"revisionId": "<current-revision-id>", "weight": 90}, {"revisionId": "<new-revision-id>", "weight": 10}]'

Before you move a production app

  • Runtime: at launch only Node.js 24 (nodejs24.x) on Arm64 is supported. Any native npm dependencies need Arm64 builds, so test them before migrating.
  • Regions: available in US East (N. Virginia), US East (Ohio), US West (Oregon), Europe (Ireland) and Asia Pacific (Tokyo).
  • Shared state: with up to 128 requests in one process, module-level variables are shared between users. Code written for one request per environment, such as code that stores request data in globals, needs a review.
  • Sessions and files: traffic is spread across environments and regions, so keep sessions and uploads in shared storage rather than in memory or on local disk.
  • Database latency: your code may run in three regions while your database sits in one. VPC connectivity is supported, but measure the round trip to your data before turning on extra regions.
  • Caching and access: you can put CloudFront in front, cache static assets there, and attach origin access control so only your distribution can call the endpoint.
  • Rollback: revisions are immutable, so rolling back means pointing the endpoint at the previous revision.

How TechProvidence can help

TechProvidence helps businesses design and run workloads on AWS, from single EC2 servers to serverless and multi-region setups. We can review whether Web Functions suit your application, compare the cost with your current hosting, build the deployment pipeline and handle the migration with a tested rollback path. To discuss your project, contact us.

Source: AWS News Blog

Running into something similar?

We look after Linux servers, control panels and virtualization for businesses every day. If an update, vulnerability or outage here affects you, we can help.