Knowing only how much you spent on your AWS bill each month isn’t enough to provide the cost visibility you need to make cost-aware engineering and business decisions. It’s why AWS introduced tags. Tags enable AWS users to label their resources to track cost and usage in the vast AWS infrastructure.
The goal of tagging is to help you understand who, what, and why your cloud spend is changing. By doing this, you can pinpoint areas in your AWS cost and usage report where you can reduce unnecessary costs and maximize profitability.
However, AWS does not compute your resource consumption and associated costs based on all tags. This level of cloud cost visibility is only possible via AWS cost allocation tags.
We’ll explain what AWS cost allocation tags are and why they matter in this guide. We’ll then discuss whether you can skip endless tagging exercises and still gather accurate cost insight you can use to inform strategic decisions.
Table Of Contents
What Are Cost Allocation Tags In AWS?
AWS cost allocation tags are labels that you or AWS assign to resources to help you track your resource usage and costs. Cost allocation tags help identify similar departments, use cases, teams, etc., so costs can be grouped accordingly.
What are the types of AWS cost allocation tags?
There are two types of cost allocation tags:
AWS-generated cost allocation tags – Amazon Web Services or the AWS Marketplace ISV creates, defines, and applies these tags on your behalf. This means you have no control over these tags and can’t customize them. They have an “aws:createdBy” format.
You can apply and compute these tags when you create a new AWS resource that is supported.
AWS-generated cost allocation tags do not apply to all AWS services. Specifically, they apply to:
- AWS CloudFormation
- Amazon Elastic Compute Cloud (EC2)
- Amazon Elastic Beanstalk
- Amazon S3 Glacier
- Amazon ElasticCache
- AWS Data Pipeline
- Amazon Kinesis
- Elastic Load Balancing
- Amazon Relational Database Service
User-defined cost allocation tags – You create these custom tags to organize resource consumption and related costs according to your preferences. You create the tags using the AWS Tag Editor. By using the “user:” prefix, these tags can identify who created a specific resource, for example.
Here is an example of how the tags might appear in two Amazon EC2 instances (for example, Cost Center and Stack):
Yet there is more to AWS-generated and user-defined coat allocation tags.
How And When To Use AWS Cost Allocation Tags?
Cost allocation tag uses include seeing how much you spent on a particular AWS service or resource, such as EC2 instances or S3 buckets. Activating cost allocation tags in the Billing and Management Console lets you do this.
Only after activating both types of tags can you use them as usage and cost identifiers.
Cost allocation tags cannot track resource usage and costs for AWS services and resources created before they are activated — i.e., they cannot be backdated.
After activating the tags, AWS generates a cost allocation report that displays your usage and costs. The cost allocation report is a CSV file of your usage and costs, according to your chosen format. Owner, cost center, stack, and application names are among the most popular tags.
- Application shows the name of an application running on specific AWS resource(s).
- Owner helps identify which team or team member handles what specific resource.
- Cost center identifies which business department is using a particular resource.
- Stack helps organize usage and cost data according to the environment using a specific resource. This can include testing, development, and production.
If you use these tags, your cost allocation report might look like this:
The cost allocation report includes cost and usage data for all tagged and untagged resources from a specific billing period. If you wish to aggregate, report, and analyze the data with AWS cost monitoring tools like AWS Cost Explorer, AWS Cost & Usage Report (CUR), and AWS Budgets, you must enable the tools first.
With these tools, you can filter usage and costs across AWS environments based on how you named (tagged) them. As soon as an account manager activates a tag from their management account, that tag activates for all members.
There are also restrictions on who can access Cost Allocation Tags inside the Billing and Cost Management console. Access is restricted to a management account in an organization or single accounts that are not members of the organization.
AWS services require unique tag implementations. You can choose to work with each implementation individually. Or you can also use Tag Editor for user-defined cost allocation tags to ease the process.
But here is the thing. To make your usage and cost data meaningful to your use case, you must use a consistent set of tags. In addition, the more detailed reports you want, the more tags you need.
Many organizations find that this is time-consuming and can become complicated pretty quickly, which adds to the challenges of AWS tagging.
The Challenges Of AWS Cost Allocation Tags
Scaling an organization makes it hard to maintain a consistent tagging strategy. When you have more resources to track, you have to create more tags to keep up.
Inconsistencies may also occur if you merge with or get acquired by another company with a different tagging strategy. If a team member or account manager leaves or changes their role, your tagging strategy could also be affected.
For example, a new team member may tag a resource in lower case without realizing that another team member already tagged it in uppercase. If this occurs, the resource appears as two separate resources in your AWS billing reports, but it is a single resource that has been labeled twice. Simple mistakes like this can lead to inaccurate data for the entire billing period.
Additionally, whenever a member account moves to another organization, you have to reactivate all the cost allocation tags associated with that member account using the new management account.
But that’s not all. It’s possible to tag unmetered resources. However, they don’t appear in the AWS Cost Management suite. Billing and Cost Management does not decode or encode tags for you either. Suffice to say; tagging is a highly manual process.
Ultimately, it’s impossible to tag all AWS resources, supported or otherwise. For example, shared resources running in a multi-tenant environment can be difficult to tag. The difference in consumption between untagged and untaggable resources is nearly impossible to calculate as well.
You risk missing some useful cost and usage data if you don’t have another way to collect cost metadata. If that happens, you will have inaccurate cost forecasting and allocation data.
Yet it is not worthwhile to give up and return to slicing and dicing data in spreadsheets.
But is there a better way?
Is it possible to accurately track AWS resource consumption and costs even with messy tags or an imperfect tagging strategy?
Is There A Better Alternative To AWS Cost Allocation Tags?
AWS Cost Categories are one way to do this. However, Cost Categories work similarly to AWS tags — so both are extraordinarily complex systems. You can read about the similarities and differences between AWS Cost Categories and AWS Tags here.
So, is there a unique alternative to cost allocation tags?
By putting AWS costs in context, cloud cost intelligence provides a way to overcome the tagging barrier.
The most advanced AWS cloud cost intelligence solutions like CloudZero utilize this approach to capture every detail of your AWS cloud usage and costs, so you don’t:
- Overlook important information you shouldn’t miss, or;
- Mix up the data and lose track of what goes where.
Adding CloudZero to your AWS infrastructure allows you to ingest massive amounts of data, normalize the data, and connect it to the people, products, and processes that created that data.
Below is an illustration of what CloudZero can do with the data it ingests:
You can learn more about how CloudZero simplifies AWS cost allocation even with messy tags.
Better yet, see CloudZero in action for yourself and experience the power of cloud cost intelligence over endless tagging. Schedule a demo here.
Cost Allocation Tags Best Practices
Cost allocation tags follow many of the same best practices as regular AWS tags. However, a few relevant ones for cost allocation purposes include:
- Implement a consistent tagging strategy across departments, teams, and environments to correlate usage and costs with specific cost centers.
- Secure and protect sensitive information by not including it in tags. You can apply standard base-64 encoding to your tag.
- Tag your resources as soon as possible to collect data on cost and usage ASAP. Activate AWS generated and user-defined tags in the Billing and Cost Management console to make them work.
- Enable AWS Cost Explorer, AWS Cost and Usage Report, and AWS Budget for further cost allocation analysis.
- Null tag values do not appear in AWS Budgets or Cost Explorer.
- If the CloudTrail log for creating AWS cost allocation tags is too large, then the tag could fail to create them.
Switch To Cloud Cost Intelligence To Break The Tag Barrier
CloudZero’s approach lets you allocate 100% of your spending in hours instead of months. Moreover, CloudZero helps you organized spend for tagged, untagged, untaggable, and shared resources in multi-tenant architectures.
Most importantly, CloudZero helps you align AWS costs to the people, processes, and products that produce them, regardless of whether you use containers, Kubernetes, or a multi-tenant environment.
With CloudZero’s unit cost analysis, you can enable different teams to break down AWS costs and usage however they choose:
- Engineering can get cost per product, cost per feature, cost per environment, cost per dev team, cost per deployment, and more. These granular insights can help engineering teams understand how their architectural decisions, such as their code, affect the organization’s cloud spend and ability to compete in the market.
- Finance can track cost per customer or per tenant to determine how much they spend to support a particular customer. Based on this information, they can decide how to price their services to protect their margins or increase profitability on a specific contract.
- C-suite can look at cost of goods sold (COGS) to estimate the cost of onboarding a group of new customers the following month. In addition, executives can determine which types of customers or customer segments are most profitable to target similar customers for greater profitability.
- The board can use CloudZero to track the organization’s profitability, and hence its attractiveness to investors. They can then determine whether they need to enhance their gross margins to attract ideal investors.