Lambda Logs Just Got a Whole Lot Cheaper*


On May 1st, AWS announced a significant change to how Lambda function logs are priced in CloudWatch. Instead of the previous flat rate model where you paid $0.50 per GB regardless of volume, they’ve introduced a tiered pricing structure so you save the more you use it. One downside is that any custom-written CloudWatch Log reports will need to be updated, which is great for me since I have written Duckbill’s comprehensive CloudWatch Logs analyzer—ugh.
To state the obvious, this is a welcome change that I think has been long overdue. Many of the large enterprises I’ve worked with are running Lambda at scale and have struggled to balance comprehensive logging (for troubleshooting and visibility) or reducing that logging to control costs. This changes that equation a bit, so let’s take an in-depth look at how this change will look for you based on your usage patterns.
This blog post from AWS breaks it down quite a bit more, but essentially there are two major changes to CloudWatch Logs for Lambda:
I want to stress this is ONLY for logs created by a Lambda function and not for application logs generated outside of those lambda functions.
Because the first tier is priced the same as the old CloudWatch Logs flat rate ($0.50 per GB for Standard Logs in us-east-1), then there really is no downside for customers for this change. If you are a heavy user of it and were to generate 60TB of Lambda logs monthly in a given account, your costs would drop from $30,000 to $12,500—a 58% reduction!
There are a couple of ways this change will not meaningfully change your AWS bill. First, if you are using less than 10TB per month of Lambda logs in an account, you will in effect see no change. I also highlighted “in an account” for a reason, this new pricing change is bound within an AWS account, so if you are a large enterprise with multiple AWS sub-accounts, you can’t count usage across all of those sub-accounts.
As an example, if Account A is logging 8TB to CloudWatch Logs, and Account B is logging 2TB to CloudWatch Logs, both accounts will be charged the first tier rate of $0.50 per GB (in us-east-1). While it may seem like a good idea to co-locate as many Lambda functions as you can in an AWS account to take advantage of this change, there are many other factors you would need to consider (such as Lambda usage limits, security posture, etc).
I’m a bit conflicted on the new logging destinations for Lambda functions. On the one hand, I’m excited that S3 and Firehose are now supported. The ability to send logs directly to these destinations eliminates the need for complex Lambda-based forwarders built to export logs from CloudWatch to other systems—certainly a cost saving and operational burden removed.
The new log destinations do unlock several use cases:
I just wish the pricing was less than sending to CloudWatch Logs directly, as it may encourage teams to fully integrate Lambda logs into their observability platforms. Hopefully the pricing for this will change over time if enough customers ask for it.
Many other AWS services (Amazon Cognito logs, Amazon MSK broker logs, etc) have used this pricing tier for a while, which they refer to as Vended logs. You can see a list of them here, but the same tiered pricing applies to all of these Vended logs. I suspect that Lambda logs were initially excluded because they are almost entirely customer-generated content, where you have control over what and how much is logged. You can still put just about anything into a CloudWatch Log group, but you still have to pay to get it back out using something like Live Tail, OpenSearch, or CloudWatch Logs Insights, so it doesn’t necessarily hurt AWS to have you pushing lots of logs if they can charge you.
As I was exploring this change, it dawned on me that we could use some AWS API calls to figure out how much your bill will change from April (before the price change) to May. I present to you, CloudWatchCashBack—my quick Python tool to estimate how much you will save in May based on your April usage of CloudWatch Logs!
Just follow the README file and you can generate a report that will look something like this:
CloudWatch Logs Cost Analysis
===========================
Region: us-east-1
Total GB Ingested: 42,095.08 GB
- Standard Storage: 42,095.08 GB
- Infrequent Access: 0.00 GB
Old Pricing Total Cost: $21,047.54
New Pricing Total Cost: $11,209.51
Cost Difference: $-9,838.03
Percentage Change: -46.74%
Daily Breakdown:
---------------
2025-04-01: Old: $629.28, New: $359.19, Diff: $-270.09, Usage: 1,258.56 GB (Standard: 1,258.56 GB, IA: 0.00 GB)
2025-04-02: Old: $592.31, New: $351.80, Diff: $-240.52, Usage: 1,184.63 GB (Standard: 1,184.63 GB, IA: 0.00 GB)
2025-04-03: Old: $677.47, New: $368.83, Diff: $-308.64, Usage: 1,354.94 GB (Standard: 1,354.94 GB, IA: 0.00 GB)
2025-04-04: Old: $619.86, New: $357.30, Diff: $-262.55, Usage: 1,239.71 GB (Standard: 1,239.71 GB, IA: 0.00 GB)
2025-04-05: Old: $841.35, New: $400.80, Diff: $-440.54, Usage: 1,682.69 GB (Standard: 1,682.69 GB, IA: 0.00 GB)
2025-04-06: Old: $685.76, New: $370.48, Diff: $-315.27, Usage: 1,371.51 GB (Standard: 1,371.51 GB, IA: 0.00 GB)
2025-04-07: Old: $721.96, New: $377.73, Diff: $-344.24, Usage: 1,443.93 GB (Standard: 1,443.93 GB, IA: 0.00 GB)
2025-04-08: Old: $620.83, New: $357.50, Diff: $-263.33, Usage: 1,241.66 GB (Standard: 1,241.66 GB, IA: 0.00 GB)
2025-04-09: Old: $621.21, New: $357.57, Diff: $-263.63, Usage: 1,242.41 GB (Standard: 1,242.41 GB, IA: 0.00 GB)
2025-04-10: Old: $651.58, New: $363.65, Diff: $-287.93, Usage: 1,303.16 GB (Standard: 1,303.16 GB, IA: 0.00 GB)
2025-04-11: Old: $658.98, New: $365.13, Diff: $-293.85, Usage: 1,317.96 GB (Standard: 1,317.96 GB, IA: 0.00 GB)
2025-04-12: Old: $553.01, New: $343.94, Diff: $-209.08, Usage: 1,106.03 GB (Standard: 1,106.03 GB, IA: 0.00 GB)
2025-04-13: Old: $589.36, New: $351.20, Diff: $-238.15, Usage: 1,178.71 GB (Standard: 1,178.71 GB, IA: 0.00 GB)
2025-04-14: Old: $616.53, New: $356.64, Diff: $-259.89, Usage: 1,233.05 GB (Standard: 1,233.05 GB, IA: 0.00 GB)
2025-04-15: Old: $575.86, New: $348.50, Diff: $-227.35, Usage: 1,151.71 GB (Standard: 1,151.71 GB, IA: 0.00 GB)
2025-04-16: Old: $611.29, New: $355.59, Diff: $-255.70, Usage: 1,222.59 GB (Standard: 1,222.59 GB, IA: 0.00 GB)
2025-04-17: Old: $717.70, New: $376.87, Diff: $-340.83, Usage: 1,435.40 GB (Standard: 1,435.40 GB, IA: 0.00 GB)
2025-04-18: Old: $714.00, New: $376.13, Diff: $-337.86, Usage: 1,428.00 GB (Standard: 1,428.00 GB, IA: 0.00 GB)
2025-04-19: Old: $610.92, New: $355.52, Diff: $-255.40, Usage: 1,221.84 GB (Standard: 1,221.84 GB, IA: 0.00 GB)
2025-04-20: Old: $687.97, New: $370.93, Diff: $-317.04, Usage: 1,375.93 GB (Standard: 1,375.93 GB, IA: 0.00 GB)
2025-04-21: Old: $833.33, New: $400.00, Diff: $-433.33, Usage: 1,666.65 GB (Standard: 1,666.65 GB, IA: 0.00 GB)
2025-04-22: Old: $767.34, New: $386.80, Diff: $-380.54, Usage: 1,534.68 GB (Standard: 1,534.68 GB, IA: 0.00 GB)
2025-04-23: Old: $767.75, New: $386.88, Diff: $-380.87, Usage: 1,535.50 GB (Standard: 1,535.50 GB, IA: 0.00 GB)
2025-04-24: Old: $790.52, New: $391.44, Diff: $-399.09, Usage: 1,581.05 GB (Standard: 1,581.05 GB, IA: 0.00 GB)
2025-04-25: Old: $752.29, New: $383.79, Diff: $-368.50, Usage: 1,504.58 GB (Standard: 1,504.58 GB, IA: 0.00 GB)
2025-04-26: Old: $1,015.47, New: $418.21, Diff: $-597.26, Usage: 2,030.95 GB (Standard: 2,030.95 GB, IA: 0.00 GB)
2025-04-27: Old: $854.63, New: $402.13, Diff: $-452.50, Usage: 1,709.26 GB (Standard: 1,709.26 GB, IA: 0.00 GB)
2025-04-28: Old: $785.81, New: $390.50, Diff: $-395.32, Usage: 1,571.63 GB (Standard: 1,571.63 GB, IA: 0.00 GB)
2025-04-29: Old: $720.58, New: $377.45, Diff: $-343.13, Usage: 1,441.16 GB (Standard: 1,441.16 GB, IA: 0.00 GB)
2025-04-30: Old: $762.59, New: $385.85, Diff: $-376.73, Usage: 1,525.17 GB (Standard: 1,525.17 GB, IA: 0.00 GB)
For everyone running Lambda functions at scale, there’s really nothing to do but enjoy the savings, but there are a few things you should always look at in regards to CloudWatch Logs:
The bottom line is that this is a customer-friendly move from AWS that directly addresses concerns with running Lambda at scale. The only thing I wish AWS would do is combine sub-accounts usage so customers won’t try and jam more Lambda functions into a single AWS account just to save logging costs, but otherwise this should be seen as AWS listening to customer feedback about their pain points regarding CloudWatch Logs.