Skip to content

Blog

AWS Lambda Request Timeline

Samuel Johnson

Have you ever thought you understood the timeline of a request in AWS Lambda only to stare at your logs and traces and find out that you didn't? The official documentation has diagrams that look pretty, but don't convey everything that is important. In this post I'll present the infographic I use to understand what Lambda is doing and what is and isn't in the logs.

Coldstarts with the AWS Javascript 3.502 SDK

Drift car without doors

In November 2023, I noticed Lambda coldstarts were 40 ms - 300 ms slower because they unnecessarily loaded the SSO credentials provider. I cut a GitHub issue which was closed with wontfix. Fast forward to January 29, version 3.502 of the AWS JavaScript SDK was released to lazy load non-essential credentials providers. This is a big win, but you can still squeeze out more performance. In this post I'll show you how to make your coldstarts 35 ms faster.

2023 year in review

A long tail

I'm writing this year in review because it takes discipline, something I don't have. Also, reflecting on oneself allows you to ask the hard questions like "What does my tail look like and is it acceptable?"

Why I'm spicy about Lambda coldstarts

Spicy Coldstart

Big coldstart will try anything. It’s bikeshedding. Git gud. Negligible at scale. Use the AWS SDK v3. Read this blog. Just use provisioned concurrency.

But the truth is, we aren’t holding it wrong and coldstarts aren’t all your fault. In this post, I fail to stay frosty. In fact I get spicy, and make the case that we shouldn’t lay off the pepper until we stopped getting blamed for AWS’s coldstart problem.

Done before the bass drops

Rossy B

Are you ready to make your AWS accounts go BRRR? Announcing the Speedrun done before the bass drops competition. A fun competition where you'll be using Speedrun blocks to complete the most insane thing you can before the bass drops at 90 seconds and everyone loses their minds. I'm accepting submissions any time between now and 01/15/2024 11:59:59 PM PST.

The Global Query

Logtopus

When I was oncall in a previous life, I found myself repeatedly needing to run AWS CloudWatch Logs Insights queries across multiple accounts and regions. I banged together a script one afternoon and kept finding new uses cases for it. In this post, I've recreated it and brought it to life with Speedrun.

Totally async EventBridge

Man entering the backdoor

I'm a big fan of the CloudWatch Embedded Metrics Format. It lets you write metrics to the lambda log without the overhead of a service call. Alas, there is no Embedded EventBridge Format, you need to make a sync call to EventBridge to put events onto the bus. Can we make it more asynchronous? In this post, I'll describe a back door to publishing events to EventBridge by just writing JSON to the lambda log.

Optimizing lambda coldstarts

Lambo kicking it into 6th gear

You thought you could just set some flags and your node.js lambda function would be bundled, tree-shaken, minified and go from ice cold to glowing hot in milliseconds? My sweet summer child. I thought that too, but then I analyzed the bundle, pored over some traces and realized how wrong I was. What follows is the rabbit hole I went down to optimize my lambda coldstarts.

Logging for scale

Beavers with chainsaws

How to log Hello World is taught, but how to log something useful isn't. Too often, developers add logging until their code works, then they forget about it. In this post I'll teach you how to instrument your code with request logs so when you have millions of users and production is going sideways, you know exactly what is going on.