Split a CloudWatch Logs bill into ingestion, archived storage and Logs Insights data scanned, and compare log classes.
CloudWatch Logs has three meters and ingestion almost always dominates, because it is priced roughly sixteen times higher per GB than a month of storage. Logs Insights bills on data scanned, so a broad query over a month of logs costs real money even when it returns three lines — narrowing the time range and the log group is the cheapest optimization available. Prices vary by region and by log class, so confirm the current figures before budgeting. Debug logging left on in production is one of the most common surprise line items in AWS: a chatty Lambda printing a full request payload can generate more CloudWatch cost than the compute it was logging about.
CloudWatch Log Cost
cost = ingested GB × ingest price + (daily GB × retention days × compressed share) × storage price + queries × GB scanned × query price.
Retention footprint
steady-state stored GB = daily ingest × retention days × compressed share — dropping retention cuts this linearly.
cost = ingested GB × ingest price + (daily GB × retention days × compressed share) × storage price + queries × GB scanned × query price. CloudWatch Logs has three meters and ingestion almost always dominates, because it is priced roughly sixteen times higher per GB than a month of storage. Logs Insights bills on data scanned, so a broad query over a month of logs costs real money even when it returns three lines — narrowing the time range and the log group is the cheapest optimization available. Prices vary by region and by log class, so confirm the current figures before budgeting.
Debug logging left on in production is one of the most common surprise line items in AWS: a chatty Lambda printing a full request payload can generate more CloudWatch cost than the compute it was logging about.
This calculator takes 10 inputs: Log data ingested per day, Log class, Retention period, Archived size as a share of ingested, Logs Insights queries per month, Data scanned per query, Standard ingestion price per GB, Infrequent Access ingestion price per GB, Archived storage price per GB-month, Logs Insights price per GB scanned. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
It roughly halves ingestion price, which is the dominant meter, at the cost of Live Tail, metric filters, subscription filters and some Insights features. It fits high-volume logs you keep for audit or occasional debugging, not the logs your alarms are built on.
It only reduces the storage meter, which is usually a small slice. If ingestion is 95% of your bill, cutting retention from 90 to 30 days barely moves the total — reducing log volume or moving to Infrequent Access does.