AWS Cost Allocation Tags - Your first step in cost saving
by Yuval Oren, Co-Founder / CEO
If you’re looking to cut AWS Costs and don’t know where to start, this post will show you the first step you should take.
While it won’t immediately affect your bottom line, I promise, it will pay dividends later.
This is why we start all of our AWS cost cutting projects by working on a tagging strategy.
The problem with the AWS Cost Explorer
Looking at the Cost Explorer report can be, well, confusing.
You may see categories like “EC2 - Other” or “EU-Requests-Tier2” which don’t tell you much.
And worse, even when you do understand which service is causing that spike in cost, you can’t see which actual resource is responsible.
Here’s a simple example - The cost explorer shows you that EC2 Compute has a spike in cost this month. And you have hundreds of instances running at each given moment. Well, which project, or bunch of instances, is causing this spike?
And this is where cost allocation tags come in. When you have these tags in place, it adds a whole new dimension to the reports.
Tags in AWS
There are two types of tags in AWS:
- User Defined Tags
- AWS Generated Tags
Both tags are essentially key-value metadata associated with a resource.
User Defined Tags
These are the tags you add to a resource either on creation or later using the console, cli, or API.
An instance name, for example, is a tag.

You can add tags to every type of AWS resource, and that includes Snapshots, IAM Policies, S3 Buckets… Everything.
And you should tag everything (and I will repeat it until it gets old).
AWS Generated Tags
These are tags that AWS will automatically attach to resources you create.
For example, it will add a tag called createdBy that will include the ARN of the user who created it.
Different services will have specific AWS Generated tags.
Here are a few examples:
- aws:ecs:clusterName
- aws:cloudformation:stack-id
- aws:cloudformation:stack-name
- aws:eks:cluster-name
- aws:autoscaling:groupName
These tags are somewhat hidden and will mostly be relevant in CloudTrail and the Cost Explorer later.
AWS Cost Allocation Tags
So you may already have tags associated with your resources, but why can’t you see them in the Cost Explorer reports?
That’s because, by default, tags are not set as Cost Allocation Tags.
These are tags that are processed by the billing activities and later displayed there.
You actually have to go and explicitly set tags (both user defined and aws generated) as Cost Allocation tags.
And only after you do that, and from that point on, will this data start showing in the reports (well, there’s a way to fill in the last few months, but more on that later).
Activating Cost Allocation Tags
To designate a tag as a Cost Allocation Tag, you will have to go to the AWS Console → Billing → Cost Allocation Tags.
You will then see two tabs - one for User Defined Tags, and one for AWS Generated Tags.
Then, you can select the tags and click “Activate”. It will take a few hours or even a day, but from that moment on, these tags will start showing in the reports.
Well, that can be a bit annoying, isn’t it? Just because you set them as Cost Allocation tags, you can’t see past data?
That’s what the Backfill feature is for.
Want More Actionable AWS Cost Cutting Tips?
Download our free AWS Cost Optimization checklist to get started.
How to use the Cost Allocation Tags
Let’s assume that you created a few tags and the data started populating the reports.
You can now use it either as a Dimension or a Filter (or both) in the cost explorer reports.
For example, if you want to see the cost by the AWS Generated Tag createdBy, you can set it as the dimension:

And you can then use filters to see different service usage.
The same also goes for using filters. For example, using the Service or Usage Type dimensions and then filtering by the tag.
Backfill
AWS added this feature a while ago to help you salvage some of that data, so you don’t have to start from square one.
You can initiate a backfill for data up to 12 months ago. Which, for most cost-saving purposes, is fine.
Note that it could take days or even a week to finish, so be patient.

A few best practices
Where should you start? Here are a few ideas and things we try to incorporate in our cost-cutting projects.
1. Tag Everything
Really. Just do it. And don’t overlook things like EBS volumes, Snapshots, etc. Especially on resources that tend to remain when deleting other resources.
If you are using IaC, then make sure to look at tags as part of your code reviews.
Oh, and I should be more clear - not every tag should be set as Cost Allocation Tags. But every resource should have Cost Allocation Tags.
2. Basic tags you should add
Here are a few tags we like to add for each project:
- Environment - dev/staging/production - use this tag to indicate which environment this resource belongs to.
- Owner - We use email addresses as values for this one. The owner tag allows you to see which engineers are spending too much money and may not be cost aware. By using email, you can later set up a few automations that can be helpful.
- Project - This is handy to track different initiatives.
- Customer - If you are running a multi-tenant environment and have dedicated resources for different customers, this is essential. It allows you to know how much a customer costs you, which is crucial for setting prices and negotiation.
There are many more tags that you can add depending on your setup, but if you want to hit the ground running, these will do.
Whatever you do, try to keep it consistent.
3. Review your tags
After a while, there will be some drift with your tagging strategy. You may add new tags that may be relevant, but forget to set them as Cost Allocation Tags.
So, take the time - set a scheduled reminder in your calendar to go over the Cost Allocation Tags and see if you need to make any modifications.
4. Automate
To ensure that tagging doesn’t fall through the cracks, add automation around it.
You can create an auto-tagging lambda with a combination of AWS services to catch resources without the proper tags.
Or maybe write a Cursor (or any other LLM-enabled tool you are using) that includes your Cost Allocation tags and instructions to verify that each element has tags.
Terraform Cloud and Enterprise can help you enforce tagging as well.
These guardrails are important, especially if your team is not cost-aware and would rather focus on other things.