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.

What’s changed exactly?

This blog post from AWS breaks it down quite a bit more, but essentially there are two major changes to CloudWatch Logs for Lambda: 

  1. Tiered pricing for CloudWatch Logs: We used to get a flat rate for logging, now it’s tiered based on usage. This is great news for those heavily logging out of Lambda, and no real change for those that are not.
  2. New logging destinations: In addition to CloudWatch Logs, you can now send Lambda logs directly to S3 or Firehose. Sounds like a great way to bypass the CloudWatch Logs tax, but alas it is not free.

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!

Cheaper*

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).

New logging destinations

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:

  • Long-term compliance archiving: S3 with lifecycle policies is far more cost-effective for retaining logs that might be needed for regulatory requirements
  • Advanced analytics: Sending logs directly to S3 makes it easier to run Athena queries or use AWS Glue for log analysis at scale
  • Third-party observability integration: Firehose can stream logs directly to Datadog, Splunk, New Relic, or Sumo Logic without intermediary Lambda functions
  • Custom processing pipelines: For organizations with specific log enrichment or filtering needs, direct Firehose delivery provides a more reliable starting point

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.

What took so long?

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.

How much will I save in May after this change?

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)

What does this mean for you?

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:

  • Review your log levels: Now might be a good time to review what you are logging and consider dropping back to just warning log level to save some money.
  • Evaluate the new destinations: If you have an existing CloudWatch to S3 forwarder, this direct to S3 integration may be a better option
  • Adjust budget forecasts: Since this could have a material impact for heavy lambda users, look at your budget for the rest of this year and make adjustments accordingly

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. 

  • Did you have problems running our Python code? If so, feel free to create a Github issue, let us know at [email protected] or hit us up on Bluesky!
  • Are you confused as to how your CloudWatch Logs bill got so large? The Duckbill Group specializes in helping companies reduce their AWS bills. If you’re concerned about maximizing your discounts across AWS services, reach out to learn how we can help.
  • We’ll be discussing this topic Thursday at 10:00am PDT over on Duckbill’s weekly drop-in clinic. Join us.
Group 3 Group 9 Asset 20 Asset 21