Making sure you don't overspend on AWS is a perennial challenge for many software companies. To help make sure you don't surpass your budget, AWS offers billing alerts, which send you an alert when your costs have reached a certain threshold. This can be a handy way to keep your costs in check, but can take some time to set up and will cost you some extra money. This article will help you understand how AWS billing alerts work, how you can set them up, and how you can decide if it makes sense to use them or try a different solution.
About AWS Billing Alerts
AWS billing alerts are enabled through Amazon CloudWatch, the AWS service dedicated to monitoring all activities across your AWS account. In addition to billing alerts, CloudWatch provides infrastructure for monitoring applications, collecting metrics, logs, and other metadata, and detecting aberrant activity in your AWS usage.
AWS billing alerts are a subset of a more general product known as the AWS CloudWatch Alarms. AWS CloudWatch Alarms is a general system which allows you to set up notifications based on predefined events or activity within your AWS services and account(s). Cloudwatch provides a variety of metrics based on which you can schedule your alarms. For example, you could create an alarm to notify you when the CPU Utilization of a running instance surpasses 85%. You can also create compound expressions to threshold metrics. For example, you could create an alarm that notifies you when your instance’s CPU usage surpasses 85% AND your total monthly EC2 bill goes over $100. You can also set alarms based on usage anomalies detected by CloudWatch, Load Balancer Latencies, Storage Throughputs, and EC2 Autoscaling Events. You can learn more about CloudWatch metrics here.
In order to generate notifications based on billing alerts, CloudWatch integrates with Amazon SNS, the AWS service dedicated to pub/sub based messaging. When you create a billing alert, you will configure a component known as an AWS CloudWatch alarm which monitors your usage as well as an SNS endpoint that sends you an email notification when the alarm is triggered. Alerts can be created for an entire AWS account or for a particular AWS service. When configuring alarms, it’s important to settle on an alarm resolution. Standard resolution alarms capture their associated metric (such as cost) every 60 seconds, whereas high resolution alarms operate with a 10 second granularity.
Cost of AWS Billing Alerts
As with everything AWS, billing alerts come at a marginal cost. AWS has a free tier that provides 10 alarms and 1,000 email notifications per month. This may be sufficient for smaller businesses. For larger businesses, additional resources may be needed. In this case, you’ll be looking at $0.10 per standard resolution alarm metric and $0.30 per high resolution alarm metric. For the SNS portion of the service, you will incur a charge of $0.06 for every 100,000 HTTP notifications and $2.00 for every 100,000 email notifications.
AWS Billing Alerts Value and Limitations
AWS billing alerts can be a helpful tool to make sure you don’t surpass your total budget for a particular service or your overall AWS spend. However, they also have their limitations. For example, when you’re using many AWS services across multiple development teams, it can be difficult to anticipate and set a rule for every billing scenario. However, if your costs are fairly static, it can be a good minimum control to put in place. Here's a list to consider:
Billing Alerts Value
Billing Alerts Limitations
Good way to ensure you don’t surpass your total budget for a particular service
Requires you to manually set each rule, which can be challenging to scale
Wide selection of metrics on which to base alarms
Requires investigation about source of spend
Simple to set up a single alert
Only shows you alerts for the total cost of a service, not by dev team or product.
Creating your own Billing Alert
We’ll now walk you through creating a billing alert so that you can familiarize yourself with the process.
In the upper right hand corner, make sure your AWS region is set to US East (N. Virginia). This is the region where all billing data is stored.
Step 3: Create an Alarm
Click on “Alarms” in the left side panel and in the dashboard that pops up click on the orange button that says “Create Alarm”.
Step 4: Select a Metric
In the panel that pops up, click the button that says “select metric”. This will pop up a window that allows you to choose which type of service you’d like to use. Select “Billing”.
Step 5: Select the Service
In the next window, you can choose to either base the alarm off a given service’s charges or the Total Estimated Charge on your account. We will set an alarm for our EC2 charges, so click “By Service”.
On the next step, mark the checkbox next to the specific service(s) you’d like to monitor. We’ll choose Amazon EC2.
Step 6: Select the Time Period
Next you’ll want to set the time period that the alarm will be active for. You can choose anything from 10 seconds to an entire day. The interface will also show a graph which plots your current usage in blue against the alarm threshold in red. If the blue line crosses the red at any point during the selected time period, the alarm will activate.
Step 7: Set the Threshold
Next, set the threshold over or under which the alarm will ring. We’ll set our alarm to activate if our EC2 charges exceed $10 within the next 6 hours. You can also use the anomaly detection panel to specify a band around your usage outside of which you’d like the alarm to activate.
Step 8: Create a Notification
Next you’ll want to create a notification using Amazon SNS. You just click “create new topic”, give it a name, and enter the email you’d like to be notified at into the box.
Step 9: Add a Description
Now you can create a name and description that will help you to remember what trigger is set for your alarm.
Step 10: Preview and Create
A final page will now open which summarizes and displays your alarm’s settings as you’ve created them. If everything looks good, you can click “Create Alarm” to have your alarm set.
CloudZero: Hands Free Billing Alerts
CloudZero offers an alternative to AWS Billing Alerts that require virtually no setup. CloudZero implements machine learning to automatically detect unusual changes in your cloud spend and alert you well before you hit your budget. In addition, you'll get deep, granular insight into your costs—presented in a way designed for engineering teams.
See for Yourself
CloudZero is the first platform to put cloud cost data in the hands of engineers in a format that is useful and timely for their efforts. To learn more about CloudZero’s cloud cost optimization capabilities, get started here.