|
Two weeks ago, I gave you the biggest serverless announcements pre-re:Invent (see here). So here are the biggest serverless announcements during re:Invent 2025. Lambda Managed InstancesHere’s the official announcement. A common pushback against Lambda is that “it’s expensive at scale” because: 1) Each execution environment can only process one request at a time, wasting available CPU cycles while you wait for IO response. 2) Paying for execution time is less efficient when handling thousands of requests per second, especially given the above. Lambda Managed Instances address these concerns. You keep the same programming model with Lambda and the same event triggers. But instead of your function running in a shared pool of bare metal EC2 instances, you can now instruct AWS to use EC2 instances from your account instead. Importantly, AWS still manages these EC2 instances for you, including OS patching, load balancing and auto-scaling. It gives you more control and flexibility, e.g. what instance types to use (but no GPU instances) and the memory-to-CPU ratio. See this post for my more in-depth coverage of this new feature. Lambda Durable FunctionsHere’s the official announcement. This is my favourite announce from re:Invent 2025 :-) Lambda Durable Functions use a replay mechanism similar to how reState works and how I implemented durable execution on Lambda for a client project. The basic idea is simple – you can add checkpoints along the execution and the Lambda service will re-invoke your function from the start and skip over previously executed checkpoints when:
Here’s a handy visualization from the official documentation. In addition to the usual Lambda function timeout (max 15 mins), Durable Functions also have a “execution timeout” for the total duration of a durable execution which can span over multiple invocations. The max execution timeout is 1 year. Durable functions can be invoked both synchronously and asynchronously. However, for synchronous invocations, the max execution timeout is limited to 15 mins. Whereas asynchronous invocations can have execution timeout of up to 1 year. Durable functions also work with all event source mappings. But ESM-triggered invocations are also limited to a max execution duration of 15 mins. Additionally, Durable Functions support DLQs, but they DO NOT support Lambda destinations. Durable Functions blur the line between Lambda and Step Functions. I’m still organizing my thoughts on how to choose between them, but off the top of my head, these are areas where I think Step Functions wins over Lambda Durable Functions:
The replay mechanic also has some interesting failure modes and gotchas. More on that in another post! Or, you can learn all about them in my next Production-Ready Serverless workshop ;-) S3 Vectors goes GA with better scale and performanceHere’s the official announcement. S3 Tables support intelligent-tiering and replicationHere’s the official announcement. CloudFront supports mutual TLS authenticationHere’s the official announcement. And a lot of AI-related announcements, such as Nova 2 models. |
Join 17K readers and level up you AWS game with just 5 mins a week.
Step Functions is often used to poll long-running processes, e.g. when starting a new data migration task with Amazon Database Migration. There's usually a Wait -> Poll -> Choice loop that runs until the task is complete (or failed), like the one below. Polling is inefficient and can add unnecessary cost as standard workflows are charged based on the number of state transitions. There is an event-driven alternative to this approach. Here's the high level approach: To start the data migration,...
Lambda Durable Functions comes with a handy testing SDK. It makes it easy to test durable executions both locally as well as remotely in the cloud. I find the local test runner particular useful for dealing with wait states because I can simply configure the runner to skip time! However, this does not work for callback operations such as waitForCallback. Unfortunately, the official docs didn't include any examples on how to handle this. So here's my workaround. The handler code Imagine you're...
Lambda Durable Functions is a powerful new feature, but its checkpoint + replay model has a few gotchas. Here are five to watch out for. Non-deterministic code The biggest gotcha is when the code is not deterministic. That is, it might do something different during replay. Remember, when a durable execution is replayed, the handler code is executed from the start. So the code must behave exactly the same given the same input. If you use random numbers, or timestamps to make branching...