Community Cost and Usage Report Documentation
Tags: aws, devops, sql, opensource
Published: 2022-09-06 13:10:34

If you haven’t seen any of my previous posts, I’ve been sharing the work I’ve been doing with the [Developer’s Guide to AWS Costs](https://github.com/getstrake/developer-cost-guide) on Github. This project shares with SQL code developers can run on their own Cost and Usage Report to learn what exactly is driving costs in their AWS environment.

I’m always looking for feedback on the project and input on our roadmap in the [GitHub discussions](https://github.com/getstrake/developer-cost-guide/discussions). Give us a ⭐️  if you like what you see!
<hr/>

## CUR Documentation

This week, I added a file to the Developer’s Guide to AWS Costs on GitHub with the goal of building out a more in-depth version of AWS’ cost and usage report data dictionary with input from the developer community. 

Right now, this has the very eloquent name: [Cost and Usage Report Documentation](https://github.com/getstrake/developer-cost-guide/blob/main/00 - Cost and Usage Report/cur_documentation.md).


![Gif of Morgan Freeman saying 'Fancy'](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j4luxgkd61qh1i5huezv.gif)

One of the most frequent questions I’ve gotten about the project is ‘how do you know what these fields mean?’.  Unfortunately, the answer has multiple parts:

1. There is some decent documentation from AWS.
2. There are some great authors out there that dive into the specifics of AWS Services. I’ve learned a lot from these folks!
3. I’ve been analyzing CUR data for years.. and there are some issues you only learn by messing them up many times 😃

With this documentation, the goal is to build out definitions and sample values for each of the 200+ fields in the cost and usage report. While this documentation will never be ‘complete’, an engineer can reference the documentation to understand the values they are finding in their own billing data. This should remove a lot of guesswork from understanding AWS costs and save your engineers precious time!
<hr/>

## The Best Place to Start

In the table below you’ll see there are 7 groups of billing fields. Since there are over 200 fields in total, I decided to start with the Bill, Identity, and Pricing categories to help ground users in the data that describes the CUR itself and AWS’ pricing model.

| Field Category | Status |
| --- | --- |
| Bill | Up to date |
| Identity | Up to date |
| Pricing | Up to date |
| Line Item | Not Started |
| Product | Not Started |
| Reservation | Not Started |
| Savings Plan | Not Started |

If you want to see the documentation as it stands today, check out [the file here](https://github.com/getmacroscope/developer-cost-guide/blob/main/00 - Cost and Usage Report/cur_documentation.md). Below I’ve added two example fields from the documentation to give an idea of the types of detail I starting with.
<br>

### bill/BillingEntity

This is the seller of the services you are being billed for. This can be different from the invoicing entity. There are three possible values for this field:

1. AWS - Amazon Web Services sells the AWS services.
2. AISPL - Amazon Internet Servies Pvt. Ltd which is the local reseller for AWS services in India.
3. AWS Marketplace - the AWS Marketplace is the billing entity for any third-party software purchased in the AWS Marketplace.

**Sample Values**
`AWS Marketplace`
`AWS`
<br>

### pricing/PurchaseOption

Purchase option is for reservations and savings plans. There are only three options for purchase reservations that can be populated here.

**Sample Values**
`All Upfront`
`Partial Upfront`
`No Upfront`
<hr/>

## Thank you!

This is just a start, with much more detail to come. Check out [GitHub](https://github.com/getstrake/developer-cost-guide) if you’d like to contribute to the project or have questions about anything we’ve shared. Look forward to working with all of you on this project in the future!