The editorial emphasizes that AWS Health Status has confirmed the Estimated Charges metric is returning inaccurate values while actual resource consumption is unaffected. There is no security compromise or runaway workload — it's purely a reporting layer bug, likely tied to the ongoing Cost Explorer/BCM console consolidation.
The editorial argues the blast radius isn't the dashboard itself but the CloudWatch alarms customers built on top of AWS/Billing EstimatedCharges. Those alarms feed PagerDuty, Opsgenie, Slack, and in aggressive setups auto-shutdown Lambdas — meaning a reporting glitch can trigger real production incidents and outages.
The original poster surfaced the issue with a $1.7B estimated bill against under $5 of usage, prompting a wave of similar reports. Community speculation in the HN thread and linked r/aws discussion points to the recent Cost Explorer / Billing and Cost Management console migration as the probable trigger.
On the morning of July 18, an AWS customer opened a Hacker News thread with a screenshot every cloud engineer has had a nightmare about: an estimated month-to-date bill of $1,700,000,000. Their actual usage? Under five dollars. The post — currently the #1 story on HN with 1,169 points — quickly turned into a support group as other accounts reported the same phantom numbers, ranging from thousands to billions of dollars against workloads that barely register on a personal free-tier account.
AWS Health Status has since confirmed the issue: the Estimated Charges metric surfaced through the Billing console and CloudWatch is returning inaccurate values, and actual resource consumption is unaffected. The linked Reddit thread on r/aws ("help my bill skyrocketed from around 5 cents per…") shows the same pattern — accounts with trivial baselines seeing five-, six-, and in extreme cases ten-figure estimates. There is no evidence of a security compromise, no runaway Lambda loop, no misconfigured S3 lifecycle policy behind these numbers. It's a reporting layer bug.
The timing is unfortunate. AWS pushed a set of billing console updates earlier this quarter as part of the ongoing Cost Explorer / Billing and Cost Management (BCM) consolidation, and community speculation on both HN and the r/aws thread points at that migration as the likely culprit. AWS has not — as of this writing — published a formal root cause, only an acknowledgment on the health dashboard.
On its face, this is a display bug. Nobody is actually being charged $1.7B, and AWS will not send anyone to collections over a Cost Explorer glitch. But the second-order effects are where senior engineers should pay attention.
The real blast radius is automation. A meaningful percentage of AWS customers wire `AWS/Billing EstimatedCharges` into CloudWatch alarms, which then fan out to PagerDuty, Opsgenie, Slack webhooks, and — in more aggressive setups — auto-shutdown Lambdas that terminate EC2 instances or revoke IAM keys when a threshold is breached. If your budget alarm fires at $100 and the metric jumps to $1.7B, every downstream automation is going to assume the worst. There are already reports in the thread of Slack channels lit up with billing alerts and at least one team that triggered an incident response before someone thought to check the health dashboard.
The second concern is trust in the primitive itself. Billing signals are one of the few metrics AWS provides that customers treat as authoritative — you don't second-guess your bill the way you might second-guess a p99 latency graph. When that primitive becomes unreliable, teams start building compensating controls: parallel FinOps tools, third-party cost dashboards (Vantage, CloudZero, Zesty), or homegrown pipelines that pull raw CUR data and compute estimates independently. That's expensive complexity, and it's the kind of complexity that gets introduced during incidents and never removed.
There's also a communication problem: AWS's status page acknowledged the issue, but the console itself continued serving the bad numbers with no in-line warning banner for hours. A junior engineer who doesn't check status.aws.amazon.com religiously — which is to say, most of them — would have no way to know the number they're staring at is fiction. Contrast this with how Stripe or GitHub handle similar issues: a dashboard banner appears within minutes, in the exact surface where the misleading data lives. AWS's split between console and health dashboard is a longstanding UX gap, and today made it expensive.
Worth noting: this is not the first billing-metric incident. AWS had a similar EstimatedCharges glitch in 2021 that inflated estimates by orders of magnitude for a subset of accounts, and there have been smaller Cost Explorer data-freshness issues throughout 2024 and 2025. The pattern suggests the billing pipeline — which fans in data from every AWS service, applies pricing rules, and re-computes estimates on some cadence — is one of the more fragile surfaces in the platform, precisely because it's downstream of everything.
Three concrete things to do today, in order of urgency.
First, silence billing-triggered automations. If you have CloudWatch alarms on `AWS/Billing EstimatedCharges` that page humans or take destructive action (shutting down instances, revoking access, sending customer notifications), disable them until AWS marks the incident resolved. The `aws cloudwatch disable-alarm-actions` command is your friend. Don't delete them — you'll forget to put them back.
Second, verify against Cost and Usage Reports, not the console. The CUR data (delivered to S3 on a schedule) is generated by a different pipeline than the Estimated Charges metric and is not affected by this incident. If you actually need to know your MTD spend right now, query the latest CUR partition in Athena. This is the moment to appreciate that having CUR set up as boring plumbing pays off during exactly this kind of incident.
Third, decouple your budget alarms from the estimated-charges metric long term. A more robust setup runs a scheduled Lambda that queries CUR every few hours, computes an independent estimate, and publishes a custom CloudWatch metric that your alarms watch — which insulates your on-call rotation from AWS billing-console bugs. It's ~50 lines of Python and a Glue table. For high-spend accounts, this is the difference between a display bug being a curiosity and being an incident.
For teams running FinOps at scale, this is the kind of event that justifies the third-party spend on Vantage or CloudZero — not because those tools have magic data, but because they run independent pipelines against CUR and won't inherit AWS's console bugs. If your CFO has ever asked why you pay for a cost dashboard when AWS provides one for free, today is the answer.
Expect AWS to post a formal root cause within a week and a small credit gesture for affected accounts (they usually do). The more interesting question is whether this accelerates the ongoing shift where FinOps teams treat AWS's own billing console as one signal among many rather than the source of truth. It probably should — the billing pipeline is the fan-in point for the entire platform, and the more services AWS ships, the more fragile that pipeline becomes. If your team's cost governance depends on numbers appearing correctly in a single AWS console, today was a reminder to add a second source.
URL already posted: https://health.aws.amazon.com/health/status<p>I've got an estimated bill for $1.7 BILLION over this month. Normal usage is < $5.<p>Obvs have created an
→ read on Hacker NewsI got 3 consecutive emails warning that my budget crossed its $18 threshold. Opened it up: cost was 78 million. Thought it was a phishing attempt, logged into my actual account, and... still 78 million. EMOTIONAL DAMAGE.
It's crazy enough this will be fixed soon.Years ago I found an actual hidden error in my bill. (This was early 2010s). The system was calculating the EC2 reservation savings incorrectly for some of my servers. I was crunching all their detailed usage data on a regular basis in an 18 tab spreads
Apparently what used to be `GB of storage consumed` is confused with `Bytes of storage consumed`, leading to a cool off by 2*30 error.> You're right to question my calculation. The MCP server failed to connect when I tried to look up the field definition. I guessed instead of validating. Thi
Woke up to a billing alarm email. Thought I had leaked my AWS keys accidentally and somehow run up 437 billion dollars of charges. Joke's on them though, I don't have 437 billion dollarsAnyways I didn't need coffee. That produced an adrenaline release unlike any I've experienced
Top 10 dev stories every morning at 8am UTC. AI-curated. Retro terminal HTML email.
Ive dealt with this error at AWS. It’s a unit error. In my case we _meant_ to charge like 5¢/GB, but missed the unit (GB), and then the billing system defaults to bytes. 5¢ per Byte of data transferred meant some customers were seeing MM bills within hours. Got paged by support around 2am, had