A CLI tool to visualize AWS cost and usage data
Tags: aws, go, awscommunitybuilder
Published: 2023-02-27 11:58:36

[ccExplorer](https://github.com/cduggn/ccExplorer) is a CLI tool I created to make it easier to surface AWS cost and usage data in human readable formats (like table, csv, chart, and HTML)and which can be used to easily sort results in descending order by cost or date. 

It doesn't replace the cost explorer capabilities provided by the [AWS CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ce/get-cost-and-usage.html) but instead focuses on providing more convenient output formats which enables the user to quickly reason about data without having to traverse a YAML or JSON tree.

## CostAndUsage Queries
Where possible `ccExplorer` uses the same nomenclature as the `AWS CLI` when naming command line options. Queries use the `groupBy` or `filterby` flags to specify the dimensions and/or tags used when fetching cost and usage data and when outputting results. 

By default results are sorted by cost in descending order. The following command exports results to stdout and groups by SERVICE and OPERATION. The `-l` flag is used to exclude discount, credit and refund information to get a true sense of costs. 

`ccExplorer get aws -g DIMENSION=SERVICE,DIMENSION=OPERATION -p stdout -m MONTHLY -l
`

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/08e51jz1j5rhdd1ppofz.jpg)

## Cost Allocation Tags
`ccExplorer` makes it easy to surface costs associated with custom cost allocation tags. For example:

- Surface S3 Bucket Costs
`ccexplorer get aws -g DIMENSION=SERVICE,TAG=BucketName -f SERVICE="Amazon Simple Storage Service" -l`
- Surface DynamoDB Table Costs
`ccexplorer get aws -g DIMENSION=SERVICE,TAG=DynamoTableName -f SERVICE="Amazon DynamoDB" -l`


## Print Formats
`ccExplorer` supports output formats including CSV, chart, and HTML. HTML reports are generated using [OpenAI](https://openai.com/api/) and the `GPT-3` completions API. In order to use this feature the end user must supply an OPEN AI API KEY. The resulting HTML report includes the top 10 costs in descending order. Results also include cost optimization hints for each of the highest costing resources. Note: The HTML output type does not support queries which include the LINKED_ACCOUNT dimension type, which would require sending sensitive account information to GPT-3. The HTML output type is still very experimental and subject to changes. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5jctzqu28rq93x0sgkxl.jpg)

## Conclusion
At the outset I was hoping to build something that could quickly surface high level data about the resources I was using. I quickly discovered that `ccExplorer` was also deepening my knowledge across other facets of AWS including usage and operation types. I was able to pinpoint the cost implication of specific resources including S3 buckets and DynamoDB tables. This has helped me to better reason about the workloads I manage and ultimately eliminate inefficiencies. 

`ccExplorer` is still very much a work in progress but I hope you find it useful. Suggestions and feedback are welcome.