AWSCost

AWS cost · cost allocation tags

You cannot cut an AWS bill you cannot read: cost allocation tags

Every other cost fix starts with the same question: where is the money going? On an untagged account you genuinely cannot answer it. Cost Explorer will tell you EC2 is your biggest line, but not whether that is production carrying the business or a staging environment nobody switched off. The spend is real; the attribution is missing. Cost allocation tags are how you get it back - and they are free. This is not a cost cut on its own. It is the thing that makes every other cut findable.

Cost allocation tags label resources by environment, service, team, and project, so AWS can break the bill down by each. They are free, and they are the enabler for every other cost cut - without them you can see that a service costs money, but not which part of it to fix. Tag consistently, activate the tags in Billing, and the bill becomes readable.

Which tags actually matter?

Four tags cover most of the value - keep the set small and apply it everywhere:

TagExample valuesWhat it unlocks
Environmentprod / staging / devsplit production from the cheap-to-cut rest
Service / appapi / worker / websee which service actually drives spend
Team / ownerpayments / datagive each cost a person who can answer for it
Projectmigration-2026track a temporary effort and shut it off after

Why does untagged spend hide so well?

Because the default bill is organized by what AWS sells, not by what you run. AWS groups costs by service - EC2, RDS, S3 - which tells you nothing about which environment or team is behind each. A staging setup and a production one both show up as “EC2,” blended into one number. Tags are the only thing that splits that number along the lines you actually make decisions on. Without them, the biggest, easiest cut - non-production spend - is invisible inside the total.

How do I set it up and find what is untagged?

Apply your four tags consistently, then activate them under Cost Allocation Tags in the Billing console so they show up in Cost Explorer. The other half of the job is the untagged long tail - the resources escaping the breakdown. This lists resources that carry no tags at all, so you know exactly what to go label:

# resources with no tags - the ones escaping your cost breakdown
aws resourcegroupstaggingapi get-resources \
  --query 'ResourceTagMappingList[?length(Tags)==`0`].ResourceARN' \
  --output text | tr '\t' '\n'

Once the bill is readable by environment, the fastest win it usually exposes is non-production spend - which is exactly what Multi-AZ dev databases and staging left running overnight are made of.

Cannot tell which part of your bill to cut first? Connect your account read-only and see what it is wasting, in real dollars.

Connect your AWS

The role can only read - Get, Describe, List, nothing else. Read the exact permissions before you deploy it, and delete the stack whenever you want.

Frequently asked questions

What are AWS cost allocation tags?+

Key-value labels on resources - like Environment=prod or Team=payments - that AWS can break your bill down by. Once activated, they turn a single lump sum into spend you can group by service, environment, team, or project in Cost Explorer and the Cost and Usage Report.

Why can I not see what is costing me money on AWS?+

Because untagged resources all land in one undifferentiated bill. Without tags, Cost Explorer can show you spend by service, but not which team, app, or environment inside that service is responsible. You see that EC2 costs a lot; you cannot see that 60% of it is a staging environment nobody needs running.

Do cost allocation tags cost anything?+

No. Tagging resources and activating cost allocation tags is free. The only cost is the small effort to apply a consistent set of tags. Given that tags are what make every other cost cut visible and targetable, they are the highest-leverage free thing in AWS cost management.

How do I set up cost allocation tags?+

Apply a consistent set of tags to your resources (Environment, Service, Team, Project), then activate them as cost allocation tags in the Billing console under Cost Allocation Tags. After activation they begin appearing in Cost Explorer and the Cost and Usage Report - note that activation is not retroactive, so the sooner you do it the more history you build.

Which cost allocation tags should I use?+

Start with four: Environment (prod/staging/dev), Service or app, Team or owner, and Project. Environment alone often pays for itself by exposing how much non-production spend is hiding in the total. Keep the set small and consistent - a few tags applied everywhere beats a dozen applied unevenly.

How do I find untagged resources?+

Use the Resource Groups Tagging API to list resources and filter for those with no tags. It gives you the inventory of what is escaping your cost breakdown, so you can go tag it. Fixing the untagged long tail is what makes the tags trustworthy enough to act on.

Related cost breakdowns

More AWS cost breakdowns