Everything we know about catching AWS cost spikes, in one place: how the free AWS service works and how to configure it well, what it will never tell you, and what to do in the ten minutes after an alert. Written from the payer accounts we watch every day.
Updated 24 September 2026 · 11 min read · by the TruCost.Cloud FinOps team
AWS Cost Anomaly Detection is a free feature of AWS Cost Management. It learns the normal daily spend pattern of each thing you ask it to watch, flags a day whose spend is well outside that pattern, and sends an alert. There is no threshold to invent: the model builds the expectation from your own history and adjusts as your spend grows, including weekly and seasonal patterns.
Three facts shape everything else in this guide:
Across the payer accounts we watch, the same handful of causes explain almost every anomaly worth acting on:
One cause looks like an anomaly and is not: tiered pricing resetting on the first of the month. Services such as GuardDuty, CloudWatch and S3 requests charge a higher rate for the first units each month and a lower rate after a threshold. On the 1st, the rate jumps back to the top tier, spend per unit rises by as much as 95 percent, and every anomaly detector on the market flags it. Usage has not changed. If your alerts cluster on the 1st and 2nd, check the rate before the resource.
You create monitors. Each monitor watches one dimension and builds a separate baseline for every value in that dimension:
Team.Before November 2025, the account, tag and category dimensions were custom monitors: you listed the values to watch, and you had to add new accounts or new tag values by hand. The limit is one service monitor plus 500 custom monitors per account (Cost Management quotas). That is fine for a ten-account organization and unmanageable for a three-hundred-account one.
In November 2025 AWS extended managed monitors, previously available only for the services dimension, to linked accounts, cost allocation tags and cost categories. A managed monitor tracks every value in its dimension automatically, up to the top 5,000 values by cost, and picks up new accounts, new tag values or new category values as soon as they start incurring cost. Each value gets its own baseline; one alert threshold applies across them.
What that means in practice:
Team=ai is monitored from its first dollar. Nobody edits a monitor when the org chart changes.Our advice for anyone migrating: create the managed monitor, keep the existing custom monitors running in parallel for a month, compare what each catches, then retire the custom ones you no longer need. The managed monitors deep dive has console screenshots and the CLI calls for each dimension.
The whole thing takes fifteen minutes in the management account.
Team), or Cost categories (pick the category). If you have not decided how ownership works in your organization, read the cost allocation guide first; the monitor is only as good as the tags or categories behind it.For the CLI, a managed tag monitor is one call:
aws ce create-anomaly-monitor --anomaly-monitor '{
"MonitorName": "Team monitor",
"MonitorType": "DIMENSIONAL",
"MonitorDimension": "TAG",
"MonitorSpecification": { "Tags": { "Key": "Team" } }
}'
Replace TAG with LINKED_ACCOUNT (no specification needed) or COST_CATEGORY (with "CostCategories": { "Key": "BusinessUnit" }) for the other dimensions; the field reference is in the CreateAnomalyMonitor API documentation. The setup deep dive walks through every field of the subscription form with screenshots.
The failure mode is not missing anomalies. It is an inbox full of anomalies that nobody owns. Three rules fix most of it:
Team, the alert already names the team. Use SNS plus a small Lambda, or Amazon Q Developer in chat applications (the service formerly called AWS Chatbot), to post it into that team's channel rather than a shared one.An alert is a question, not an answer. The routine we run:
Automated remediation is possible (SNS → Lambda that stops tagged non-production instances, or an EventBridge rule on the anomaly event) and worth doing for the narrow cases you have already seen twice. Do not automate stopping things you have not diagnosed once by hand.
Every useful anomaly alert ends with a name: the team, application or environment that owns the spend. The AWS service can only give you that name if the resource carries it, either as a cost allocation tag or through a Cost Category rule. Untagged spend is detected, but it is attributed to nobody, and it is the spend most likely to be waste. Before you rely on a tag-based monitor, measure how much of your bill actually carries the tag; below 80 percent, fix tagging first or use the linked-account dimension instead. The cost categories guide shows how to build categories that map accounts and tags to business units, which is the dimension most organizations end up monitoring.
| AWS Cost Anomaly Detection | Resource-level tools (for example TruCost.Cloud) | |
|---|---|---|
| Granularity | Service, account, tag or cost category | The instance, table, bucket or endpoint that caused the change |
| Ownership | Alert goes to a list | Alert routed to the resource's owner, with a ticket if wanted |
| Explanation | Top contributing service, account, region, usage type | What changed on the resource: usage, price tier, new deployment |
| Response tracking | None beyond the assessment field | Open, assigned, resolved, with the saving checked against the next bill |
| Timing | About three evaluations a day | Same data cadence (from the Cost and Usage Report), hourly on services that report hourly |
| Cost | Free | Part of a paid platform |
AWS's own Cost Anomaly Detection FAQ is candid about the scope: monitors, alerts and root-cause analysis by the dimensions of the bill. The honest summary from the FinOps best-practices article: the AWS service is enough to tell you that EC2 spend jumped 30 percent this week, and not enough to tell you which instance, Auto Scaling group or forgotten dev environment did it. The gap is the investigation time, which is where the money actually goes.
TruCost.Cloud works from the Cost and Usage Report, so it sees the same spend the AWS service sees but at the resource. Each finding names the resource, what changed on it (usage, price tier, a new deployment), and the owner it belongs to under your allocation rules, and it is routed to that owner with an optional Jira ticket. Every finding has a status (open, assigned, resolved, or suppressed when the spike was expected) and the saving from a fix is checked against the following bill rather than estimated. The sensible setup is both: AWS's managed monitors as the free organization-wide net, and resource-level detection on the accounts where a spike has to be fixed the same day. See Anomaly Radar on the platform page.
Yes. There is no charge for monitors, alert subscriptions or root-cause analysis. It requires Cost Explorer to be enabled, which is free; only programmatic Cost Explorer API calls are billed.
Monitors evaluate roughly three times a day as billing data arrives, so a spike is typically flagged the same day or the next morning. It is not real-time monitoring.
Budgets alert when spend crosses a threshold you set. Anomaly detection alerts when spend deviates from the pattern it has learned, with no spend limit to maintain. Use Budgets for limits and slow drift, anomaly detection for surprises.
Managed monitors, previously available only for AWS services, now cover linked accounts, cost allocation tags and cost categories. One managed monitor tracks every value in its dimension automatically (up to the top 5,000 by cost) and includes new accounts, tag values or category values as they appear. A management account can have one managed services monitor plus one managed monitor for accounts, tags or categories.
Member accounts can create the AWS services managed monitor only. Monitors for linked accounts, cost allocation tags and cost categories are created in the management account.
A combined threshold: impact of at least $100 and at least 40 percent above expected spend. The dollar floor keeps small accounts quiet, the percentage keeps large accounts from alerting on normal variance. Review after 30 to 45 days and adjust per subscription.
No. Root-cause analysis shows the top contributing service, account, region and usage type. Finding the specific instance, table or bucket needs Cost Explorer resource-level views (EC2 only) or a tool that works from the Cost and Usage Report.
Tiered pricing. Services such as GuardDuty, CloudWatch and S3 requests charge a higher rate for the first units each month, so the rate jumps back to the top tier on the 1st and spend per unit rises even though usage is flat. Check the rate before you investigate the resource.
The articles this guide draws on, each on one narrower question.

AWS Cost Anomaly Detection is free and worth switching on today. This guide covers setup, alert design, its limits, and what resource-level anomaly detection ad…

Discover how the new AWS Managed Monitors for linked accounts, cost allocation tags, and cost categories revolutionize Cost Anomaly Detection in 2025. Learn ben…

Discover 6 proven AWS FinOps best practices to improve cloud cost allocation, governance, and unit economics — and maximize your AWS cloud ROI with actionable s…

Learn how AWS cloud cost visibility improves FinOps success, reduces cloud waste, enhances financial accountability, and helps organizations optimize AWS spendi…

Learn how to organize and allocate AWS costs using AWS Cost Categories. Discover step-by-step methods to group by region, use ANY/ALL operators, split shared co…
Thirty minutes with a FinOps engineer, on your AWS data if you like. No slideware.
Tell us a little about your AWS setup and we will come back within one business day — or pick a slot straight away.