All cheat sheets
Cost Governancecheat sheet

AWS Budgets

The one cost-governance feature to set up first: a threshold plus a notification that pings you before the bill lands. Forecasted-80% is the single most effective alert AWS offers; first two budgets are free.

Last reviewed: July 14, 2026

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

  1. Create an account-wide cost budget with forecasted-80%, actual-90%, actual-100% thresholds — the safety net.
  2. 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.
  3. Scope to the dimension you care about — by service, tag (per project/team, needs activated cost allocation tags), linked account, region, or usage type.
  4. Route alerts to an SNS topic that fans out to Slack/Teams, not email — email gets filtered and lost; a #cloud-costs message gets seen the same day.
  5. 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.

Run this audit with your AI assistant

Paste this into Claude, ChatGPT, or any agent that can run the AWS CLI with read-only credentials. It audits your account for exactly the waste this sheet describes — and changes nothing.

You are auditing an AWS account/Org's budget coverage. Use the AWS CLI
with READ-ONLY credentials. Do not create, modify, or delete anything —
report findings and recommended (unapplied) fixes only.

1. Current budgets: aws budgets describe-budgets — capture each budget's
   type (COST/USAGE/RI/SP), scope filters, thresholds, and notification
   subscribers. Flag accounts with ZERO budgets.
2. Top spenders: from Cost Explorer (ce get-cost-and-usage, 90 days,
   group by SERVICE and by LINKED_ACCOUNT) identify the top 3-5 services/
   accounts with no scoped budget — the actionable gaps.
3. Threshold quality: flag budgets using only ACTUAL thresholds (no
   forecasted-80% early-warning) and account-wide-only budgets with no
   per-service/per-tag scoping. Note accounts <6 weeks old where forecast
   isn't reliable yet.
4. Notification routing: flag budgets notifying only email (vs SNS ->
   Slack/Teams) and tag-based budgets where the tags aren't activated as
   cost allocation tags (untagged resources invisible).

Report a table: scope | budget type | thresholds | subscribers | gap/
recommendation (add forecasted-80%, add per-service, route to SNS, etc.).
Change nothing.
Works with any assistant that can run shell commands.

Want the guided version?

The AWS Budgets walkthrough covers this topic interactively — it asks about your setup, branches to what’s relevant, and quizzes you on the tricky parts. Free and anonymous.

Start the walkthrough