Tracking costs within one AWS account

I have what I'm sure is a very common problem. Our company has many projects and groups working for different clients. We do a lot of our development work in the cloud and deploy our solutions there.

We have a VPC set up that isolates projects from each other in their own subnet and that VPC is getting a hardware VPN connection back to HQ.

We need to keep track of the cost run up by every project. The way I currently implement this is by providing my own tools for starting and stopping instances which log which user (and thus which project) to bill the instance too. This works okay for BoxUsage costs but not for other costs.

I could create a separate account for each project and use consolidated billing, this I think would allow me to pay once but track costs per "project", but I would then not be able to share common resources (like bring account B's running instances inside the same VPC).

Does anyone have any suggestions?


As of Aug 21, 2012, AWS supports cost allocation billing based on tags.

You can tag resources from these services:

  • S3 buckets
  • EC2 Instances
  • EBS volumes
  • Reserved Instances
  • Spot Instance requests
  • VPN connections
  • Amazon RDS DB Instances
  • AWS CloudFormation Stacks

Basically, you tag your resources and then configure AWS billing reports by telling it which tags are meaningful for your cost allocation. Your billing reports will then add a new column for each tag you configured and you can sort/filter by those values.

More information: http://aws.typepad.com/aws/2012/08/aws-cost-allocation.html


You can't. AWS doesn't have any (useful) ability to track costs like that. The advice I got from someone who works at one of the big AWS resellers is to screenscrape and monitor the bejesus out of everything yourself, and use that to apportion costs. Or, yeah, consolidated billing (that's what we do for our customers). VPNs are cheap, so having separate VPCs with their own VPNs back to the hivemind should be fine.