AWS 27 Oct 2025  ·  2 min read

Are Your AWS Lambda Functions Leaking Money? The Hidden Cost of CloudWatch REPORT Logs

Are Your AWS Lambda Functions Leaking Money? The Hidden Cost of CloudWatch REPORT Logs
Are Your AWS Lambda Functions Leaking Money? The Hidden Cost of CloudWatch REPORT Logs 27 Oct 2025
TL;DR — Every AWS Lambda invocation emits START, END, and REPORT log lines to CloudWatch — ~262 bytes per call that you’re billed for regardless of your application code. At 1M invocations/day that’s ~$4/month per function just for system logs. The fix: switch to JSON log format and set systemLogLevel to WARN, which suppresses START/END lines and stops the waste in two lines of config.

If you’re running AWS Lambda, you probably assume you only pay for the logs your own code explicitly writes. But what if I told you that every single Lambda invocation generates a report log in CloudWatch, even if your function’s code is completely silent?

And yes, you are being charged for every single one.

Take a look at your CloudWatch logs for any Lambda function. You’ll see these three lines for every execution:

  • START RequestId: ...
  • END RequestId: ...
  • REPORT RequestId: ... Duration: X ms Billed Duration: Y ms Memory Size: Z MB Max Memory Used: W MB

These REPORT logs are system-level INFO logs generated by the Lambda service itself. While they’re useful for debugging, in high-traffic production environments they just become expensive noise.

The $4/Month Cost You Didn’t Know You Had

These START, END, and REPORT logs total about 262 bytes of data per invocation. At 1,000,000 executions/day and $0.50/GB ingestion in us-east-1: ~$4/month per function, just for logs you probably aren’t even using. Scale that to 50 functions and that’s $200/month.

The Solution: Suppress the System Logs

Set the system log level to WARN or ERROR. This suppresses START, END, and REPORT logs while still allowing your application logs to come through. The Catch: This feature only works if your Lambda function’s log format is set to JSON.

For AWS CDK (TypeScript)

loggingConfig: {
  logFormat: lambda.LogFormat.JSON,
  systemLogLevelV2: lambda.SystemLogLevel.WARN,
},

For AWS CLI

aws lambda update-function-configuration 
--function-name MyFunction 
--logging-config '{"LogFormat": "JSON", "ApplicationLogLevel": "INFO", "SystemLogLevel": "WARN"}'

(ApplicationLogLevel controls your code’s log level; SystemLogLevel controls the Lambda service’s logs.)

A Simple Change for Real Savings

This is one of the easiest cost-saving changes you can make. By adding two lines of configuration, you can eliminate a constant, unnecessary data stream and reduce your CloudWatch bill every month.