All cheat sheets
Cost Governancecheat sheet

AWS Cost Categories

A free rules engine that re-bundles tags, services, and accounts into the stakeholder-friendly dimension your CFO actually reads — and can proportionally split shared costs across consumers — without re-tagging a single resource.

Last reviewed: July 14, 2026

TL;DR: Tags answer "what does this resource belong to?"; Cost Categories answer "what does my org want to see?" It's a free rules engine — think SQL CASE WHEN for billing — that maps raw spend into a custom dimension (like BusinessUnit) by matching on tags, services, accounts, or regions, and re-bundles messy tag values into clean stakeholder buckets. You change no tags and move no resources; the new dimension just shows up in Cost Explorer, Budgets, CUR, and QuickSight. Its killer feature: proportionally splitting shared costs across consumers, which is what makes real chargeback possible.

The numbers

  • Free — no per-category charge.
  • Four rule sources: tag key/value (most common), service, linked account, and region/usage-type/charge-type — combined with AND/OR; first matching rule wins, unmatched falls to your default (Unallocated).
  • Three split methods: proportional (by consumers' relative cost of another dimension), fixed (e.g. 50/30/20), or even. Pick the defensible one, not the most precise.
  • Worked example — $13,500/mo of shared infra (central RDS $8k + NAT $3k + monitoring $2.5k) split proportionally by each team's compute spend gives every team a true cost-of-ownership number and finally puts data behind "should we right-size the shared RDS?"
  • Field examples: 14 messy Team values collapsed into a 3-row CFO report in 45 minutes, untouched 18 months; a media company's $25k/mo analytics platform allocated by per-team S3 reads made 2 of 6 teams optimize hard once cost was visible.

Do this

  1. Start with one category answering one stakeholder question — usually BusinessUnit or Team; prove it out a quarter before adding a second.
  2. Write 3–8 rules covering your top ~80% of spend, and always define an Unallocated/Shared default so you never end up with null.
  3. Use Inherited Value rules (BusinessUnit = tag:Project) instead of one rule per value — new projects flow in automatically, a big maintenance win.
  4. Add split-charge rules for shared infrastructure — the one thing nothing else does cleanly; proportional-by-usage is the usual choice.
  5. Publish the rules to anyone whose cost they appear in, wait ~24 hours for backfill, and wire the dimension into a Cost Explorer report + a budget to prove it end-to-end.

Gotchas

  • It's reporting, not enforcement — categories don't block anything (use SCPs for that) and operate on cost line items, not per-resource.
  • ~24-hour update cadence — no real-time recalculation; same billing-pipeline lag as everything else.
  • A large Unallocated bucket breeds fairness complaints — tighten rules until the top spend is covered.
  • Tag-based rules need activated cost allocation tags, and newly-defined categories have no baseline for ~14 days (matters for anomaly monitors on them).
  • Don't build 5 interlocking categories on day one — start with one; add a second (Environment or WorkloadType) only when it answers a distinct question.

Skip this if

  • Each team just needs to see their own real-rate spend and you can group by a single existing tag — plain Cost Allocation Tags + Cost Explorer may be enough (tags are the prerequisite either way).
  • You need audit-grade financial allocation joined with your own data — Cost and Usage Reports + Athena/Snowflake is the heavier tool. Downstream, categories feed AWS Budgets and AWS Cost Explorer so every report inherits the dimension.

Run this audit with your AI assistant

Paste this into Claude, ChatGPT, or any agent that can run the AWS CLI with read-only credentials. It audits your account for exactly the waste this sheet describes — and changes nothing.

You are auditing an AWS account/Org's Cost Categories setup. Use the AWS
CLI with READ-ONLY credentials. Do not create, modify, or delete
anything — report findings and recommended (unapplied) fixes only.

1. Current state: aws ce list-cost-category-definitions +
   describe-cost-category-definition — capture each category, its rules,
   rule ordering, default (Unallocated) value, and any split-charge
   rules.
2. Unallocated leakage: from Cost Explorer grouped by the category,
   measure the % of spend landing in the default/Unallocated bucket —
   flag categories where it's large (rules don't cover the top 80% of
   spend).
3. Shared-cost allocation: identify shared-services accounts (central
   RDS, NAT, monitoring) whose cost is NOT split across consumers via a
   split-charge rule — the main chargeback gap.
4. Maintainability: flag hardcoded per-value rules that an Inherited
   Value rule (BusinessUnit = tag:Project) could replace; flag >2-3
   interlocking categories (unmaintainable) and tag-based rules where
   tags aren't activated as cost allocation tags.

Report a table: category | rule count | % Unallocated | split-charge
present? | maintainability notes | recommendation. Change nothing.
Works with any assistant that can run shell commands.

Want the guided version?

The AWS Cost Categories walkthrough covers this topic interactively — it asks about your setup, branches to what’s relevant, and quizzes you on the tricky parts. Free and anonymous.

Start the walkthrough