CloudWatch log groups that never expire
With no retention policy, CloudWatch Logs defaults to keeping data forever — and billing storage forever.
What this problem is
Every CloudWatch log group has a retention setting, and its default value is "never expire". Anyone creating a log group without setting it — which includes virtually every log group created automatically by Lambda, ECS, API Gateway or VPC Flow Logs — is asking for perpetual storage without realising it.
The cost has two parts: ingestion, billed once per gigabyte that arrives, and storage, billed every month on everything that has ever arrived. You pay ingestion either way; storage is what accumulates. A service producing a gigabyte of logs a day accumulates three hundred and sixty-five gigabytes a year, and in year two is still paying for year one's.
The question that settles it is how long those logs are genuinely consulted. Application logs tend to be useful for weeks — past that, anyone who needs them will look somewhere else. Logs that must be kept for years to satisfy a regulator have a better home: exported to S3 in a cold storage class, they cost a fraction of the price.
How we detect it
We list log groups across every enabled region with DescribeLogGroups, which reports each group's configured retention policy and the volume of data stored. The ones showing no retention set are the ones that never expire.
- Log groups that never expire
What it costs
CloudWatch Logs storage runs about $0.03 per GB-month and ingestion about $0.50 per GB (us-east-1). Five hundred accumulated gigabytes cost close to $15 a month, indefinitely.
Public AWS list prices, us-east-1, subject to change. The figure in your report is computed against your resources in your regions.
How it appears in the report
An illustrative example, with invented resources and figures. In the report each finding carries the real resource, its region, and the fix command where a safe one exists.
Does your account have this?
The scan is read-only and shows you what it found before you pay for anything.
Run a free scan