AWS Billing Alerts and Budgets for Your Costs
Amazon Web Services may be the ultimate DevOps solution, but it comes at a (sometimes surprising) cost. At a time when budgets are under unprecedented stress, it’s never been more important for engineers to manage costs. While you might be able to request a refund for a one-time surprise, you should have systems in place to prevent these problems from occurring in the first place.
The good news is that AWS makes it easy to create billing alerts through AWS Billing Alerts and even provides a more in-depth budgeting solution through AWS Budgets. After tagging your resources, it’s easy to measure your costs and usage across teams, projects and other metrics.
Let’s take a look at how to create basic AWS billing alerts and AWS Budgets, as well as some best practices to keep in mind to effectively manage your AWS costs. In this article, we’ll cover the following:
- AWS Billing Alerts and AWS Budgets Overview
- AWS Billing Alerts via CloudWatch Setup
- AWS Budgets Setup
- CloudForecast’s AWS Cost Management Report
- **Get the Most Out of AWS Budgets and CloudForecast AWS Cost Management **
AWS Billing Alerts and AWS Budgets Overview
AWS provides two methods to monitor AWS costs and detect AWS cost anomalies within your daily/weekly or monthly budgets, AWS Billing Alerts and AWS Budgets. Both has it’s pro’s and con’s and has it’s own use case:
AWS Billing Alerts
AWS Billing Alerts is an older feature released in 2012 that leverages Amazon Cloudwatch alarm and metrics to monitor charges and Amazon SNS to send email alerts. It was AWS first attempt to provide proactive alerting and alarms on your total AWS charges or a specific AWS service. The feature is relatively basic when it comes to pure costs/budgeting and there isn’t a way to setup in-depth budget monitoring with the filters you have in Cost Explorer.
On the flip-side, since it is uses CloudWatch, you can create an alarm that correlates between RDS CPU utilization and it’s total monthly budget. The same can be applied across many other CloudWatch metrics.
Released 7 years later in 2019, AWS Budgets builds upon AWS billing alerts and is integrated into Amazon’s billing dashboard. Overall, it provides a better and more robust way to monitor your AWS costs. All the dimensions you are familiar with in Cost Explorer can be developed into monitoring daily / weekly or monthly AWS Budgets via email. In addition, AWS Budgets gives you a way to trigger specific event if a threshold is reach through “Budget Actions”.
AWS Billing Alerts via CloudWatch Setup
Amazon makes it easy to create basic AWS billing alerts using CloudWatch. If the estimated overall total exceeds a certain threshold, CloudWatch will trigger a message that is sent through the Simple Notification Service (SNS).
Start by enabling AWS billing alerts:
- Open the Billing and Cost Management Console.
- In the navigation pane, choose Billing Preferences.
- Select Receive Billing Alerts.
- Choose Save preferences.
Next, create your AWS billing alert:
1. Open the CloudWatch Console.
2. In the navigation pane, choose Alarms > Create Alarm.
3. Step 1: Specify metric and conditions: Under conditions, define the threshold value you want an Alarm to be triggered
4. Step 2: Configure Actions: Define the notification and determine who the notifications should be sent to if the threshold
5. Step 3: Name and Description: Add in Alarm name and Description
7. Choose Create Alarm.
You can view the status of your billing alerts by clicking Alarms in the navigation pane in the CloudWatch console, as well as edit them by choosing Actions > Modify and delete them by choosing Actions > Delete.
AWS Budgets Setup
Billing alerts are great for solo developers or small projects that have minimal costs, but larger projects with larger teams may have variable monthly budgets for individual AWS services. AWS Budgets is designed to address these issues. AWS budgets are also more straight forward use-case to define budgets than AWS Billing Alarms.
Download our Checklist of Key Billing Metrics to Watch to ensure that you’re tracking the right metrics to measure and understand your AWS costs.
Start by creating a new AWS Budget:
- Open the AWS Budgets Console.
- Choose Create a budget.
- Choose Cost budget.
- Fill in the Budget details.
- Create up to five Alerts for each budget.
- Click Create to add the budget.
Example AWS Budgets Setup - Source: Amazon AWS
We recommend creating different budgets for different teams, projects or AWS services. You can customize budgets by services, linked accounts, tags, regions and other metrics, as well as adjust the charge type to include specific costs.
When building alerts, you can create alerts that are triggered when actual and/or forecast costs exceed a monthly amount or when they exceed certain thresholds (e.g. 80% usage). We recommend current cost, forecast cost and 80% usage alerts.
CloudForecast’s AWS Cost Management Report
AWS Budgets and AWS Billing Alerts is an excellent way to ensure that costs are in-line across different teams, projects and services. The problem is that you have to choose between a lot of noise (e.g. daily alerts) or the risk of receiving alerts when it’s too late.
Overall, the concept of these two feature makes sense if you’re creating a few budgets to track a few items. However, there are a few areas where AWS budgets lacks, which makes it difficult for a larger organization with multiple engineers and engineering teams. Here are a few items we’ve found lacking:
- Setting budgets up properly can be time consuming with all the dimensions and filtering.
- Notifications can be noisy. Each budget created = one email sent daily. If you create 30 budgets, that’s 30 emails sent daily.
- The email sent does not provide much information if a budget is triggered.
- Your engineers will need to spend time digging into Cost Explorer if there were an alert. This can be time consuming for your engineers, which will often lead to inactivity or action.
- AWS Forecasts is not entirely accurate with inclusion of fixed costs.
If you’re looking to get your engineering team to own their own costs and quickly detect areas of over-run, AWS Budgets will be difficult to leverage. It does not scale well and will be a lot to manage after a certain point. To address these gaps, we built CloudForecast to help you avoid these problems and scale with your organization size.
Our Daily AWS Cost Management Report alert you of any cost anomalies or possible overruns that need your immediate attention (before it’s too late) and integrate with Slack (where engineers prefer). It all starts in the subject line and and a set of simple emojis (sunny, cloudy or stormy) to quickly let you know if your costs is flat or if there is an overrun in costs. We also provide frequency alerts to lessen the noise. That way your engineers are ONLY receiving reports and data if there is a significant increase.
Slack Daily Cost Report - Source: CloudForecast
You can customize these alerts based on product, region, cost allocation tag or sub-account and select different recipients for different reports. In less than 30s, your team can read these reports, understand what’s happening with AWS costs and take ownership of their AWS costs.
We also simplify reporting for CFOs and C-level executives. Rather than spending hours building custom reports, we automatically generate monthly Excel reports that provide a high-level monthly overview of your AWS costs.
Monthly Financial Reports - Source: CloudForecast
Start your free trial and simplify your cost management for just $99 per month.
Get the Most Out of AWS Budgets and CloudForecast AWS Cost Management
AWS Budgets and CloudForecast both require some setup in order to get the most out of your billing alerts.
Cost allocation tags are the single most critical part of understanding and managing your costs. These user-generated key-value tags enable you to categorize different AWS resources by team, project or other arbitrary measures.
Cost Allocation Tags Example - Source: AWS
We have already written a detailed blog post that shows you how to create tags, but there are a few critical best practices to keep in mind:
- Use a cross-functional team to identify tag requirements based on usage (e.g. engineer-defined) and business (e.g. cost-defined) goals.
- Create required and conditionally-required tags for new AWS resources to enforce naming standards and ensure that everything is tracked.
- Constrain tag values where possible with the AWS Service Catalog to avoid values that may throw errors when you’re trying to aggregate them.
- Implement a tag governance process focused on ensuring the proper tagging of resources and constantly remediate untagged resources to avoid things slipping through the cracks.
Aside from cost allocation tags, you should ensure that alerts are sent to the appropriate channels. CloudForecast automatically integrates with Slack, but AWS Budgets may require some extra setup.
The Bottom Line
AWS Budgets and AWS billing alerts can help ensure that your AWS costs don’t spiral out of control. After tagging your resources, you can create budgets for different teams, projects or other metrics with alerts sent out via email.
If you’re looking for simpler reporting, greater insight and more convenient alerts, CloudForecast’s daily cost management reports get you up to speed in less than a minute and alert you to potentially problematic cost trends before it’s too late.