New for AWS Lambda – 1ms Billing Granularity Adds Cost Savings
What I like about AWS Lambda is that it lets you run code without provisioning or managing servers, and you pay only for what you use. Since we launched Lambda in 2014, you have been charged for the number of times your code is triggered (requests) and for the time your code executes, rounded up to the nearest 100ms (duration).
Starting today, we are rounding up duration to the nearest millisecond with no minimum execution time.
With this new pricing, you are going to pay less most of the time, but it’s going to be more noticeable when you have functions whose execution time is much lower than 100ms, such as low latency APIs.
For example, let’s look at a simple web app that I have running. In the Amazon CloudWatch Logs, for each invocation there is a
REPORT line. To improve readability, I am breaking the
REPORT line into three lines here:
With 1ms billing granularity that becomes:
My application doesn’t have a lot of traffic, so let’s do a simple production scenario. Let’s say I have 100,000 users for a web/mobile app. I expect each user to call this function via the web/mobile app about 20 times per day. The duration of those invocations is on average 28ms. Each month, I should expect:
- 100,000 users * 20 invocations * 30 days = 60 million invocations.
Let’s estimate the costs in US East (N. Virginia). For simplicity, I am not considering the Lambda free tier.
The Lambda monthly request charges are unchanged:
- 60 million invocations * $0.20 per 1M requests = $12
To that, I have to add compute charges based on duration.
The Lambda monthly compute charges with the old 100ms rounded up pricing would have been:
- 60 million invocations* 100ms * 1G memory * $0.0000166667 for every GB-second = $100
With the new 1ms billing granularity, the duration costs are:
- 60 million invocations * 28ms * 1G memory * $0.0000166667 for every GB-second = $28
For this scenario, overall costs including request and compute charges are much cheaper ($40) than before ($112).
With this pricing, there is now more of an incentive to optimize the duration of functions even if it is already well below 100ms. Your engineering efforts can reduce costs even more.
If you increase memory to get more CPU power and speed up your functions, you now get the benefit of a lower billed duration below 100ms as well. That means that increasing performance and reducing latency is going to be cheaper than before.
We are applying 1ms billing granularity for duration, including when you have Provisioned Concurrency enabled, in all AWS Regions with the exception of those based in China starting with the December 2020 billing period. Regions in China will get the change from January.