Announced at re:Invent 2025 and in Sydney since June 2026: your function runs on EC2 instances you pick, with many requests per environment, while keeping Lambda's programming model, event sources and deploys. I haven't run it in production, so it's on my watch list.
It answers a real gap. A steady, high-volume function pays classic Lambda for every request's full wait; Managed Instances bill the machine instead, at EC2 prices plus 15%. But it gives up what makes Lambda Lambda: there's no scale to zero, three instances by default, and it throttles when traffic more than doubles within five minutes. So it's for a steady function, not a spiky one. The comparison with a container is in Lambda, Fargate or EC2?.
Use it when
- A steady function, about 30 requests in flight and up, that you want to keep as a Lambda: same events, same deploys.
- Node.js code that mostly waits: 64 requests per vCPU by default.
- Asynchronous and event-source work that needs up to 90 minutes.
Don't use it when
- Spiky traffic: it throttles when traffic more than doubles within five minutes.
- Small or idle functions: at least three instances by default, and no scale to zero.
- A plain HTTP service where a container is fine: Fargate is a little cheaper at the same load.
Pricing
The EC2 instances at normal EC2 rates, plus a 15% management fee on their on-demand price, plus $0.20 per million requests. Sydney: the fee on an m7g.large is $0.0153 an hour. Savings Plans and Reserved Instances cut only the EC2 part. At 50 requests in flight all day, about $560 a month on demand (about $382 with a 3-year plan), against about $1,883 on classic Lambda.
Gotchas, with fixes
Gotcha: The function needs at least 2 GB and 1 vCPU, and the instances run in your VPC.
Fix: Use public subnets where you can: a NAT gateway adds a fixed monthly cost.
Gotcha: Many requests share one environment, so module-level state is shared between them.
Fix: Keep handlers free of per-request globals before moving a function onto it.
Provisioning
Official Pulumi package · Official Terraform provider
A capacity provider (aws.lambda.CapacityProvider, Terraform aws_lambda_capacity_provider) attached to the function.
Instead, consider
- AWS Lambda Spiky traffic and anything small.
- Fargate services (always on) A steady HTTP service that doesn't need to stay a Lambda.
- Lambda Web Functions HTTP with many requests per environment, once in your region.
Worked examples
Sources
- Lambda Managed Instances
- Lambda Managed Instances scaling
- Lambda Managed Instances in more regions (June 2026)
- Lambda pricing
Last reviewed by Nicolas Dao