AWS Budget Notifications for Discord Channels
Publish date: 2025-07-31
Overview
Send AWS Budget Alerts straight to a Discord channel that you have Webhook Integration permissions for. The budget_type is COST and the time_unit is MONTHLY. Users can provide:
budget_threshold
limit_unit
limit_amount
For example, setting a monthly budget of $20 USD and wanting to be alerted when it's forecasted to go over 70% of the budget, you'd set:
limit_unit = "USD"
limit_amount = 20
budget_threshold = 70
Three secrets are needed in /secrets.auto.tfvars:
And one last non-secret config variable in /terraform.auto.tfvars:
AWS_REGION: Primary region to deploy to
Demo
The Problem
Wanted to create an extra method of delivery for AWS Budget alerts - as sometimes I don't check my email urgently enough. And one time the alert ended up in "junk" mail. So this is an approach to remedy that :)
Approach
Learning Terraform, so decided to automate the infra and deploy as a module on Public Registry. The architecture is simple enough, all it creates is a budget alert that sends notifications to an SNS topic, and that triggers a Lambda to hit the Discord channel webhook URL with the message.
This is the model tree:
.
├── modules
│ ├── budgets
│ │ ├── outputs.tf
│ │ ├── terraform.tf
│ │ └── variables.tf
│ ├── iam
│ │ ├── datasource.tf
│ │ ├── outputs.tf
│ │ ├── terraform.tf
│ │ └── variables.tf
│ ├── lambda
│ │ ├── function
│ │ │ ├── main.py
│ │ │ └── requirements.txt
│ │ ├── datasource.tf
│ │ ├── outputs.tf
│ │ ├── terraform.tf
│ │ └── variables.tf
│ └── sns
│ ├── datasource.tf
│ ├── outputs.tf
│ ├── terraform.tf
│ └── variables.tf
├── LICENSE
├── main.tf
├── providers.tf
├── README.md
├── secrets.example.auto.tfvars
├── terraform.auto.tfvars
└── variables.tf
Architectural Design
Key Outcomes
- Automated budget alerts to a channel on Discord
- Tagged resources using AWS Tags, helps track spending, logs, and resource lookup.
- Allows the user to set different budget variables like
limit_amount, limit_unit, budget_threshold, and AWS_REGION.