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 (2)
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!