TL;DR: A budget is just a threshold + a notification rule — but the ping arrives before the bill lands, which is the whole point. If you set up one cost-governance feature in your entire account, set up Budgets. The single most effective alert AWS offers is a forecasted-80% threshold: it fires when the trajectory is bad, days before you'd hit the actual number. First two budgets per account are free.
The numbers
- Four types: Cost (dollar threshold — 95% of teams), Usage (quantity, e.g. TB through CloudFront), Reservation (RI coverage/utilization), Savings Plan (SP coverage/utilization).
- Actual vs forecasted: actual = reactive (fires after damage); forecasted = proactive (fires on trajectory). Good default: forecasted at 80%, actual at 90%, actual at 100%.
- Forecasting needs ~5 weeks of history — lean on actual thresholds in a new account until a baseline exists.
- Cost: first 2 budgets/account free, then $0.02/budget/day (~$0.60/mo each) — 5 budgets ≈ $1.80/mo. Stop treating the count as a constraint.
- Field examples: a per-service EC2 forecasted-80% budget caught a forgotten p3.8xlarge overnight instead of after a ~$770 weekend; per-linked-account $100 sandbox budgets + Budget Actions took "oops I left X running" incidents to zero.
Do this
- Create an account-wide cost budget with forecasted-80%, actual-90%, actual-100% thresholds — the safety net.
- Add per-service budgets for your top 1–3 spenders (usually EC2/RDS) set just above typical monthly cost — a "RDS budget exceeded" alert beats a generic account alert you have to go hunting behind.
- Scope to the dimension you care about — by service, tag (per project/team, needs activated cost allocation tags), linked account, region, or usage type.
- Route alerts to an SNS topic that fans out to Slack/Teams, not email — email gets filtered and lost; a
#cloud-costsmessage gets seen the same day. - Review monthly — bump the number as the account grows so stale always-tripping budgets don't become noise.
Gotchas
- Alerts aren't real-time — expect up to ~8 hours from spend to alert; for minute-by-minute detection use Cost Anomaly Detection or CloudWatch billing alarms.
- Forecast goes weird near month boundaries — an early-month deployment amplifies the forecast; tune the forecasted threshold a little loose.
- Tag-based budgets only see tagged resources — untagged EC2/RDS simply doesn't appear, a hole you can drive a truck through unless tagging is enforced.
- Credits, refunds, and taxes are excluded by default — toggle deliberately depending on whether the budget should track "what you owe" or "gross."
Skip this if
- Nothing — every account should have at least the free two budgets. But Budgets alone is an alarm with no diagnostic: pair it with Cost Anomaly Detection for ML-based spike detection on things you didn't think to budget, AWS Cost Explorer for the "what actually happened?" investigation after an alert, and Budget Actions when the ceiling is a hard rule rather than a soft signal.