If you don't have an account already, the first step in this process is to sign up for a new AWS account. If you already have an AWS account where you plan to set up these budgets, this can be skipped.
At the time of writing, the AWS account sign up page looks like the following:
You will want to select the yellow-ish Create a Free Account button on this page.
The AWS website will guide you through the account creation process until you reach the last step, which should look something like this:
In this case we are doing things with a small budget, so we will be selecting Basic support - Free as our support plan.
Select the Complete sign up button.
At this point you have now created a new AWS account.
Once you have finished setting up access to your new account, you will be prompted to log in as your new root user. You will want to go ahead and do that now with the root credentials that you just established. This user has full access to your account, so we know you will not run into permissions issues with this account.
If you already have an AWS account, make sure to log in with an account that has sufficient permissions to deal with account billing.
NOTE: Normally I would not advocate for doing anything as the root user, but the scope of this article isn't intended to cover setting up of an IAM account, but that is something I would advise doing as soon as you have a chance, as well as MFA.
Why a Zero-Spend Budget? AWS provides a lot of services under their free tier. If you are just getting started with AWS and are planning to only use free tier services, this report will alert you as soon as you have spent any money (above $0.01) in a given month (for this account). Once you know you have started incurring costs, you can log into your account and figure out where the spend is coming from.
In this case, we are going to select the default Use a template (simplified) as the Budget setup at the top.
Then we will use the default Zero spend budget as the template.
Next, we will give this new budget a name that gives it some meaning. In my case, it is for my new personal non-prod account, so I will give it a title that reflects that fact (e.g., "AWS Zero-Spend Budget for Non-Prod Account"). This is important because the name of the budget will come through if you get any alerts, so it will help you identify the account:
In the above image, you will notice that there is also a place to enter email addresses. You will want to enter at least one email address into that text area, and make sure it is an email address that you monitor on a regular basis. You don't want to miss the alert notification (if one is sent).
Now we can go ahead and select the orange Create budget button. This will create the basic zero-spend budget with an alert in place. Once created, it will bring you to a page like the following:
At this point your Zero-Spend Budget has been created and you will get alerted if you have spent more than $0.01 in the given month.
NOTE: Normally I would advocate for doing most setup within your AWS account through Infrastructure as Code (IaC), but in this case, these reports are so easy to set up through the console, I would only advise using IaC if you are a corporation deploying at scale (which is not the focus of this article).
The Zero-Spend Budget is useful for letting you know you have went over the AWS free tier offerings, but in many cases it is unavoidable to incur at least some minor costs when using the AWS cloud. Because of this, you should set up a secondary budget that alerts you when you are reaching, and then when you have reached, some amount you feel is reasonable for a given month.
In my case, for the account that I just created, I do expect to incur some minor charges with Route53 and possibly CodePipeline. I don't expect these to go over $50.00 a month in the short-term; so for now, that is what I am going to set my monthly budget at.
From the Budgets overview page, select the orange Create budget button again.
This will again bring you to the Create budget page:
You can see in the above image that, in the case, we have again selected Use a template (simplified) as the Budget setup and under the Templates section, we have selected the Monthly cost budget template.
For the budget name, you will again want to give it a title you will recognize (if you get an alert) and a title that differentiates it from the Zero-Spend Budget. In my case, I named this new budget "AWS Monthly Cost Budget for Non-Prod Account".
For the budgeted amount, I have set it to $50.00, since I feel that is currently a realistic budget for this account to stay within (during a given month). I actually expect it to be far lower, but an alert on this amount would let me know that something is trending much higher than anticipated.
You will again want to set your list of email recipients to any email address or addresses that you are likely to monitor for these alerts.
Once you have set these values, you can go ahead and select the Create budget button.
You will again be brought back to the budget overview page:
At this point your Actual Cost Budget has been created and you will get alerts at the following levels:
Setting up billing budgets that will alert you when your spending has went over what you anticipated is crucial for personal and small business accounts. Without these budgets in place, you could miss a spike in spending that results is a large AWS bill. It is easier to try to reduce spending when you know it is trending higher than anticipated instead of trying to get some kind of cost reduction on your bill (once the services have already been consumed and money has been spent).
This is the first post in my "Blog on a Budget" series because I built my blog, on a small budget, using AWS services as the hosting solution. So the first step is setting up an account and knowing that you are staying within budget 😀
For those that are interested in the details of what was just set up, I might do a follow-up blog post where I break out the details of what was just created by these budget templates.