Cost OptimizationMay 25, 20264 min read

How to Audit Your AWS Costs (Without a FinOps Team)

A step-by-step way to read your bill and know exactly where the money is going, no FinOps team required.

You open the AWS bill and it's a wall of numbers. Cost Explorer shows you a total, and it's higher than last month. That number on its own doesn't tell you why. It doesn't say which resource is responsible, or whether it's a real problem or something that happened once and stopped. An audit isn't a finance project or a certification. It's one sentence you can say out loud when you're done: I know what every line on this bill is.

You don't need a FinOps team to get there, and I'm not one myself. Industry surveys keep finding that organizations estimate close to a third of their cloud spend is wasted. Most of that comes from accounts nobody ever set up to be readable in the first place. Read the bill the right way and most of it stops being a mystery.

Step 1: Look at the trend, not the total

Open Cost Explorer, switch the granularity to daily, and extend the date range back three months. The total for this month barely matters on its own. The shape of the line does. A single sharp spike on one day usually means something ran once and stopped, a test environment left on overnight, a large one-time transfer. A line that climbs steadily week over week is a different kind of problem. Something is growing, and it keeps growing until you go find it.

Step 2: Group by service, then by region

Group Cost Explorer by service first. In most accounts, two or three services explain most of the spend, usually EC2, S3, or a database. Once you've found the service driving the increase, group that same service by region. This step catches something people miss constantly... the AWS console you use day to day only shows resources in the region you're currently viewing, but Cost Explorer isn't scoped that way. Grouping by region is often the fastest way to discover the spend is coming from a region you never open.

Data transfer is the line almost nobody understands, and it earns its own look. It's split across services rather than billed as one clean item, charged for moving data out to the internet, between regions, or between certain services in the same region. It's rarely the single biggest number on the bill, but it's the one most likely to surprise you, because there's no dashboard that adds it all up in one place.

Step 3: Tag everything, or the bill stays unreadable

Cost allocation tags are labels you attach to a resource, like project, environment, or owner, and they're what let Cost Explorer break a bill down by anything other than AWS's own service categories. You have to turn them on yourself, in the Billing console under Cost Allocation Tags, and it can take up to 24 hours before tagged spend starts showing up. Anything that was never tagged falls into a "No tag key" bucket, and in most accounts that untagged pile is bigger than anyone expects, because tagging is the first thing people skip when they're moving fast.

Free tier expiry is a smaller version of the same surprise. AWS gives new accounts free usage on specific resources for a limited time, and once that runs out, the same resources start billing at full price with no more than an easy-to-miss email as warning. If a bill jumped right around when the account's free tier ran out, that's usually the first thing worth checking.

Once your account is connected, Liberra has already indexed it, so you're not starting from Cost Explorer's blank slate. You can ask directly: "break down my costs by service" or "what changed since last month." Reads are instant and don't need approval, so there's no waiting on a scan to finish. It explains what it finds in plain English. Acting on any of it stays with you... writes need your approval before anything runs, and deletes are physically blocked in the code either way.

Founder, Liberra AI