A Tagging Schema That Holds
coreintermediateA tag is a key-value label on an AWS resource. A tagging schema is the small, fixed set of keys every resource must carry, with the exact spelling and the allowed values written down. The schema is what makes tags useful — six keys applied everywhere beat forty keys applied inconsistently, because only the first can be queried.
Think of it as
Tags answer questions that AWS cannot answer for you: who owns this, which application is it part of, what happens if it breaks, who pays for it. Pick the questions first, then the keys. A key that answers no question anyone actually asks is a key that will drift.
What we're doing: Roll a schema out to an estate that is already running, without a freeze.
- 1
- AWS says this explicitly, and it is the opposite of how tagging is usually attempted — as one large retrospective project.
- 6
- Default tags in the IaC provider is the single highest-value change here, and it takes minutes.
- 12
- A published percentage per account turns tagging from a preference into a visible gap someone owns.
- 18
- Enforcement last, and narrow: a policy that blocks real work is switched off, and then there is no policy at all.
Why this works: Tagging fails as a big-bang project and succeeds as a ratchet. Stopping the growth of untagged resources costs one configuration change; backfilling by cost captures most of the value quickly; and enforcement only holds once compliance is already high. Each stage is useful on its own, which is what makes the sequence survive changing priorities.
Letting case and spelling vary
Wrong
Better
What you see: A cost report shows four environments where there are three, an automation that acts on `Environment=prod` silently skips half of production, and nobody notices because nothing errors.
Why: Tag keys and values are case sensitive, so these are four unrelated keys as far as every AWS API is concerned. The failure is silent in both directions — reports undercount and automation under-applies — which is exactly why tag policies exist to standardise case treatment.
- A table-style diagram of six required tag keys, each paired with the question it answers and an example value.
- Application: which product is this part of? Example, orders-api.
- Environment: can I safely change it? Example, prod.
- Owner: who do I page or ask? Example, team-payments.
- CostCenter: who pays for it? Example, cc-4417.
- DataClassification: what happens if this leaks? Example, confidential.
- ManagedBy: will a manual change be reverted? Example, terraform.
- A note below: keys and values are case sensitive, so Environment and environment are two different keys and split every report.
- A second note: never put personal or confidential data in a tag.
Six keys, their allowed values, and what breaks without them
Together
Remember: Six keys — Application, Environment, Owner, CostCenter, DataClassification, ManagedBy — each answering a real question, with fixed values and one casing. Keys and values are case sensitive, teams own resources rather than individuals, and nothing personal or confidential goes in a tag.
See also: what tags are used for · naming standards and guardrails first · cost tools and commitments · data classification

