Skip to main content
Cloud DevOps Solutions
Get a quote Talk to an engineer

ClickOps & Cloud Setup

Cloud Billing Alerts and Cost Budgets by Account, Service and Tag

Billing alerts and budgets tell you about cloud spend while you can still act. We create monthly and forecast budgets per account, service and tag, add anomaly detection for sudden changes, activate cost allocation tags, and route alerts to the people who own the spend.

Key takeaways

  • Alerts based on forecasts catch problems before the month closes; alerts on actuals only confirm damage.
  • Budgets work best when each has an owner who can explain a change.
  • Cost allocation tags must be activated and enforced to be useful, and they are not retroactive.
  • Anomaly detection catches spikes that a fixed threshold would miss.
  • Alerts are the start; regular review turns visibility into savings.

The bill nobody was watching

Cloud spend fails quietly. A load test left running, a NAT gateway carrying terabytes it should not, a leaked key mining cryptocurrency: each looks fine in the console and horrifying on the invoice a month later. The pattern we see most often in console-built estates is that no one set up alerts at all, because the first month’s bill was small.

Budgets and alerts are cheap to set up and are among the first things we do in a cloud setup engagement. They also work with the account design in multi-account structure: account boundaries make spend attributable without any tagging at all, and tags add a finer view inside each account.

What good looks like

  • A budget exists for the organisation as a whole and for every account.
  • Forecast alerts fire before the month ends, with enough time to react.
  • Key services that tend to surprise (data transfer, NAT, logs, GPUs) have their own budgets.
  • Cost allocation tags are consistent, activated and enforced.
  • Anomaly detection watches for sudden changes.
  • Alerts reach someone who can act, and that person knows what normal looks like.
  • Spend is reviewed on a regular schedule.

How it works in practice

Billing foundations

In the management account, we enable Cost Explorer, turn on the preferences that allow member accounts to view their own costs if you want that, and set the alternate billing contact so invoices and notices reach finance. The root account hardening work includes an early budget, because a cost alarm is a useful tripwire for account compromise too.

Budgets as code

A monthly budget with actual and forecast notifications, in Terraform:

resource "aws_budgets_budget" "prod_monthly" {
  name         = "prod-monthly"
  budget_type  = "COST"
  limit_amount = var.prod_monthly_limit
  limit_unit   = "USD"
  time_unit    = "MONTHLY"

  cost_filter {
    name   = "LinkedAccount"
    values = [var.prod_account_id]
  }

  notification {
    comparison_operator        = "GREATER_THAN"
    threshold                  = 80
    threshold_type             = "PERCENTAGE"
    notification_type          = "FORECASTED"
    subscriber_email_addresses = var.finance_and_owner_emails
  }

  notification {
    comparison_operator        = "GREATER_THAN"
    threshold                  = 100
    threshold_type             = "PERCENTAGE"
    notification_type          = "ACTUAL"
    subscriber_email_addresses = var.finance_and_owner_emails
  }
}

The limit is a variable on purpose: we set it from what the account really costs, then tighten it as the estate stabilises. Alerting at 80 percent forecast and 100 percent actual is a start, and more granular steps can follow.

Tags that actually work

A tag is only useful if it is consistent. We agree a short list, usually team, environment, product and owner, and apply four rules. They are activated as cost allocation tags in the billing console, which takes effect from activation onward and does not backfill history. They are set by default at the Terraform provider level so that every resource carries them. They are validated by tag policies and Config rules. Untagged resources are reported to the owning team rather than silently tolerated.

provider "aws" {
  default_tags {
    tags = {
      team        = "platform"
      environment = "production"
      managed_by  = "terraform"
    }
  }
}

This is one of the quiet benefits of the Terraform approach: tagging stops depending on memory.

Anomaly detection

Cost Anomaly Detection creates monitors for services, linked accounts or tag values, and sends alerts when spend deviates from learned patterns. It catches the case where you are under budget overall but one service has jumped. We typically create an organisation-wide service monitor and one per production account, with alert thresholds expressed as an absolute amount so that trivial changes stay silent.

Beyond alerts

Alerts tell you something is wrong. Finding the cause uses Cost Explorer grouped by service, account, tag and usage type, and for detail the Cost and Usage Report queried with Athena. Savings then come from reviewing commitments, rightsizing and architecture choices. For container platforms, see our EKS cost optimisation guide. If you want that done regularly, our Managed DevOps work includes cost reviews.

Decisions and trade-offs

Budget per account or per tag? Per account is simplest and robust because it needs no tagging discipline. Add tag budgets where several teams share an account.

How tight? Very tight budgets cause alert fatigue; very loose ones miss problems. We start generous, then tighten after two or three months of data.

Automatic enforcement? Budget actions that stop resources suit sandboxes. In production, we alert humans.

Pre-deployment estimates. Tools such as Infracost show cost changes in pull requests, which prevents some surprises before they exist.

When not to over-engineer. An early-stage product with a small, predictable bill needs one budget, one anomaly monitor and a monthly glance, not a finance operations function.

What a first review usually finds

When we look at spend for the first time in a console-built estate, the same few themes recur. Idle resources are common: unattached volumes, old snapshots, load balancers with no targets and development databases running around the clock. Data transfer is the next theme, particularly traffic through NAT gateways and between availability zones that nobody planned. Logging is a third: verbose application logs or flow logs sent to a premium tier at a volume no one reads. Finally, there is often an absence of commitment planning, where steady production workloads pay on-demand prices because nobody owns the decision. Budgets and anomaly alerts do not fix these, but they make them visible, which is the point at which fixing them becomes a normal engineering task rather than a finance surprise.

Common failure modes

  • Alerts to a departed person’s inbox. Use distribution lists and chat channels.
  • Tags activated late. Months of history remain unattributed.
  • Forgetting data transfer and support. They hide in “other” categories.
  • Credits masking reality. Promotional credits hide the true run rate until they expire. We budget on gross usage as well.
  • No owner. An alert everyone receives is one nobody answers.

Delivery and handover

We deliver budgets, monitors and tag rules as code, a one-page description of who owns each alert and what to do when it fires, and a template for the monthly review. For multi-account setups, the same module creates a budget automatically for each new account.

How to tell it is working

  • A deliberate test (a temporary expensive resource in a sandbox) triggers an alert quickly.
  • Every account shows a named owner and a budget.
  • Tag coverage on cost reports is high and rising.
  • Nobody learns about a cost spike from the invoice.

To go through your current spend and alert setup, book a consultation.

References

How we deliver it

  1. 01

    Enable the billing foundations

    Cost Explorer, billing preferences and access for finance and engineering are switched on from the management account.

  2. 02

    Agree a tagging scheme

    A small set of tags, such as team, environment and product, is defined, activated as cost allocation tags and enforced at creation.

  3. 03

    Create budgets

    A total organisation budget plus budgets per account, key service and tag group, each with actual and forecast alerts.

  4. 04

    Add anomaly detection

    Cost Anomaly Detection monitors services, accounts and tags and alerts on unusual spend.

  5. 05

    Route notifications

    Alerts go to owners through email, chat and, for urgent spikes, on-call, never to an unread shared inbox.

  6. 06

    Set a review rhythm

    A monthly review compares spend to budget and decides what to fix, commit to or accept.

Tools and technologies

AWS BudgetsAWS Cost ExplorerAWS Cost Anomaly DetectionCost Allocation TagsAWS Cost and Usage ReportAmazon SNSTerraformAzure Cost ManagementInfracost

Frequently asked questions

How do I set up billing alerts in AWS?
Use AWS Budgets from the management account. Create a monthly cost budget with alert thresholds on both actual and forecasted spend, and send notifications to an email list or an SNS topic. Add budgets per member account, and enable Cost Anomaly Detection for spikes. We define all of this in Terraform.
Why are my cost allocation tags not showing in reports?
Tags must be activated as cost allocation tags in the billing console before they appear in cost reports, and activation is not retroactive. Resources must also carry the tag. Without enforcement at creation, coverage stays patchy, so we pair activation with policy that requires the tags.
Can budgets stop spending automatically?
AWS Budgets can trigger actions, such as applying an IAM or service control policy or stopping specific instances, when thresholds are crossed. These are blunt tools and can disrupt production, so we use them mainly on sandbox accounts and prefer alerts with human decisions elsewhere.
What is the difference between budgets and cost anomaly detection?
A budget compares spend to a number you chose. Anomaly detection learns normal patterns and flags unusual deviations, such as a service tripling overnight, even if you are inside budget. They catch different problems, so we use both.
How does this work on Azure?
Azure Cost Management lets you set budgets at management group, subscription or resource group scope with alert thresholds and action groups. Tags and cost analysis views provide allocation. Anomaly alerts are available too. The design principles of owner-based budgets, forecasts and enforced tags are the same.

Talk to an engineer about aws billing alerts

Book a free 30-minute call. We review your current setup and tell you honestly whether and how we can help.

Written by Saddique Khan, DevOps / SRE / Cloud Consultant Engineer. Last updated 2026-10-08.