So, AWS Lambda Web Functions just came out, and I'm super excited about them.
What are they? Well, you can now ship Express, Hono, or React Router with no Lambda-specific adapters or wrappers.
Let me show you how I got this demo set up with CDK.
λ: https://cxrj1w1j65n0k7ss.p7v.lambda-web.us-east-2.on.aws (this may not live forever but the code should)
⚠️ DISCLAIMER: The code we are about to see is written with L1 CDK constructs. The L2 constructs are being tracked via this PR.
First, let's look at the server code I have in Express. I've omitted the bulk of its logic for brevity.
Here, you can see that it's an Express.js server binding to a port.
import express from "express";
const [hostname, rawPort] = (
process.env.AWS_LAMBDA_HTTP_ENDPOINT ??
`127.0.0.1:${process.env.PORT ?? "3000"}`
).split(":");
const port = Number(rawPort);
export const app = express();
export const server = app.listen(port, hostname, () => {
console.log(`Spinning Lambda is listening on http://${hostname}:${port}`);
});
I can run the code locally with pnpm dev.
Now, let's look at the CDK stack used to deploy this function.
export class SpinningLambdaStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
// code bucket stuff omitted
const webFunction = new CfnWebFunction(this, "WebFunction", {
functionName: `${this.stackName}-web`,
// many props omitted for brevity
});
const revision = new CfnWebFunctionRevision(this, "WebFunctionRevision", {
functionName: webFunction.ref,
// many props omitted for brevity
});
const endpoint = new CfnWebFunctionEndpoint(this, "WebFunctionEndpoint", {
functionName: webFunction.ref,
// many props omitted for brevity
});
}
}
Now for deployment. I'm using the new AWS experience, so I have a project dedicated to this demo.
I grab some credentials for my account with aws login. I need to do a one-time setup to bootstrap CDK with npx cdk bootstrap.
Once that's done, I can run pnpm deploy to ship it.
Then it's live 🚀!
Share this on X/Twitter, and it should render as an embed:
https://cxrj1w1j65n0k7ss.p7v.lambda-web.us-east-2.on.aws/embed
Full repo:
https://github.com/sboult/lwf-three-js
As always, happy coding 😉!
Follow AWS for more articles like this.
Follow me for all things tech!


Top comments (3)
cdk for a lambda web function is a nice middle ground, infra as code without dragging api gateway along.
yeah and you can choose to add either APIGW or Cloudfront later as well!
keeping the gateway optional is the point. start with the function, add the front door when you need it.