Why this matters
There’s an S3 charge that stays invisible in a normal storage cost review. AWS bills S3 object tags per tag, per hour, so the cost scales with how many objects you have, not how much data you store. It gets its own line item, which is easy to miss when you’re scanning storage spend.
It can sneak up on you. Tags get added in a dev environment to drive lifecycle rules, where object counts are small and the cost is nothing. But when that same code path reaches production and object counts climb from hundreds into the tens of millions, the charge you never really noticed becomes real.
This new feature came straight from a customer. While auditing their S3 lifecycle rules, they found the exact line item, saw that CloudZero already showed the cost in Explorer, and asked why there wasn’t an Optimize recommendation to catch it. Fair question. Now there is.
What we built
We added a new recommendation type to CloudZero Optimize that flags S3 buckets running up meaningful object-tag storage charges. This is net-new coverage. Because the charge disappears entirely once unused tags are removed, the recommendation reflects the full amount at stake, not a fraction of it.
How it works
When a bucket crosses the cost threshold, Optimize surfaces it alongside the estimated savings and a path to act. Before you act, it walks you through the question: are these tags doing a job? Some are vestigial and safe to delete, which is the common case and a quick win. Others are more critical, driving lifecycle rules or access conditions, so removing them would change behavior.
The recommendation asks you to confirm what writes the tags and whether any rules depend on them. When the tags need to stay, it points to the safe route, such as moving a tag-based lifecycle rule to a prefix-based one. This gives you savings without breaking anything downstream.
Find it now in the Optimize Catalog in the product.