Analyzing AWS Billing Issues
If you’re running software on AWS, then each month you’ll end up troubleshooting AWS billing issues.
This last month, my AWS bill for one of our internal accounts was higher than expected. Surprise, surprise!
I started to investigate the issues by navigating to my previous months bill from the Billing & Cost Management Dashboard by selecting the Bills section of the menu, highlighted in red.
To start this process on your own AWS account, click here.
When I click on Bills, the following view defaults to the current month in the Date combobox, so you will want to pick the previous month. The bill that I’m investigating is November 2019, also highlighted in red.
This specific AWS account has very little traffic on it. We used the account as a staging area for one of our clients that required Kubernetes. The staging area ran in US West (Oregon) and US East (Ohio) so effectively all of the services in these regions should be turned off.
CloudWatch AWS billing issues
Let’s start with the first item on the list, CloudWatch. CloudWatch is turned on at the EC2 instance level. The majority of the CloudWatch charges are coming from Oregon, the region that is no longer required, so I should be able to eliminate this cost by disabling the CloudWatch monitoring.
To disable the CloudWatch monitoring, I can follow the instructions to Enable CloudWatch monitoring here, and turn off CloudWatch.
To start, I’ll open a new tab to display the AWS EC2 instances in Oregon by clicking on Service from the navigation bar, and then right mouse clicking on EC2, and opening this url in a new browser tab.
The EC2 region will display. I’ll want to ensure that I’m pointing to the right region, Oregon, highlighted in orange. Next, I’ll click on the Running Instances 1 highlighted in red.
I’ll select the running instance, click on the Action menu, select CloudWatch Monitoring, and select Disable Detailed Monitoring.
Hmm, that’s interesting Disable Detailed Monitoring is turned off. I suppose this isn’t a problem after all, but why was I being billed?
DynamoDB AWS billing issues
The next service charge on our invoice was for DynamoDB. Let’s take a closer look and see if we can terminate these costs for good!
DocumentDB is Amazon’s version of MongoDB. We use DocumentDB to store unstructured data in a JSON format.
In November of 2019, our DocumentDB bill was entirely out of US West (Oregon), which is one of the areas that we should no longer be billed for. A quick glance at our DocumentDB in US West (Oregon) displays that we should no longer be charged for DocumentDB in December of 2019.
The next big ticket item are our EC2 Instances. For November 2019, more than 50% of the spend was on EC2 instances.
In the previous section, we deleted the micro EC2 instance, but have we deleted everything? A quick trip to the VPC dashboard, shows that we have 2 NAT Gateways still up and running.
Are we being charged for these? It’s probably not worth the risk, so we’ll delete them.
We also notice that we’re being bill for an ELB. On the EC2 Instances view, scroll down to the Elastic Load Balancing section to delete the ELB.
We’re using Amazon’s Elastic Container Service for Kubernetes (K8S). I believe that we’ve already blown the EKS way, so we’ll confirm.
Skipping ahead, we notice that we have a t2.medium MySQL RDS instance that is still running. We’ll blow this away as well.
Last, but not least, AWS is charging us for a number of Hosted Zones. These Hosted Zones were leveraged by our Kubernetes setup.
We’ll navigate to Route 53 to blow away these Hosted Zones for US-West-2. Deleting Hosted Zones via the Admin interface is painful as you can only single select.
At this point, we’ve hopefully cleaned up our problematic Oregon (US-West) zone. Continue to go through your other problems and check back in during every billing period.
AWS Billing Experts
Need some additional help? Reach out to us and we can point you in the right direction!
You might also like…
What is Amazon EC2? – Elastic Compute Cloud
Data Lake vs Data Warehouse on AWS
Top 25 AWS Services List (Q4 2020)
Joel Garcia has been building AllCode since 2015. He’s an innovative, hands-on executive with a proven record of designing, developing, and operating Software-as-a-Service (SaaS), mobile, and desktop solutions. Joel has expertise in HealthTech, VoIP, and cloud-based solutions. Joel has experience scaling multiple start-ups for successful exits to IMS Health and Golden Gate Capital, as well as working at mature, industry-leading software companies. He’s held executive engineering positions in San Francisco at TidalWave, LittleCast, Self Health Network, LiveVox acquired by Golden Gate Capital, and Med-Vantage acquired by IMS Health.