AWS выставил клиенту счёт на $1,7 млрд и обвинил баг «юнит-прайсинга»

Несколько часов 17 июля Cost Explorer от Amazon показывал владельцам почти пустых аккаунтов суммы больше ВВП большинства стран — один читатель наблюдал, как его смета перевалила за $190 трлн. Статус-страница AWS назвала это «неточными данными об ориентировочном биллинге» и уверяла, что клиентам ничего делать не нужно; тысячи всё равно что-то сделали.

Вкратце

Сам пост был простым: у кого-то ещё счёт AWS внезапно обзавёлся девятью-десятью лишними нулями? Сотни ответили «да» — от алерта на $286 млн до аккаунта с ровным счётом в $109 млрд.

Удивительнее всего не сам баг: AWS так и не разослала прямое уведомление. Пользователи узнавали, что их многомиллиардный счёт фиктивен, наткнувшись на одну строку, спрятанную на статус-странице AWS Health.

Собственный разбор AWS: баг «юнит-прайсинга», который не смогли откатить с первой попытки

17 июля консоль Billing and Cost Management AWS начала показывать сметы, никак не связанные с реальным потреблением: аккаунты, которые обычно тянули на пару долларов в месяц, внезапно оценивались в миллиарды. Собственный журнал инцидента AWS, который процитировал читатель, следивший за статус-страницей, показывает, что компания знала на самом деле:

«Мы продолжаем работать над устранением проблемы с ориентировочными данными о расходах и использовании в консоли Billing and Cost Management. Мы установили первопричину — сбой юнит-прайсинга в подсистеме расчёта ориентировочного биллинга — и работаем над исправлением. Отображаемые оценки не отражают реальное использование и реальные списания. От клиентов сейчас не требуется никаких действий.» — журнал инцидента AWS, процитированный читателем

Масштаб цифр никак не был связан с реальным потреблением: у одного читателя обычный алерт бюджета показал $2,8 млн, у другого один архив Glacier оценили почти в $242 млрд. Реальных счетов это не касалось — лента оценок просто оторвалась от настоящего конвейера учёта, который продолжал считать биллинг нормально под этим шумом. Затем AWS попробовала откат — статус-страница сообщила об этом прямо:

«Откат недавнего изменения не решил проблему, мы продолжаем прорабатывать несколько путей исправления. Обновление ориентировочных счетов пока приостановлено.» — читатель, следивший за статус-страницей AWS в реальном времени

Теория «байты вместо гигабайт», которая действительно объясняет цифры

Глубоко под волной паники нашёлся комментарий с правдоподобным объяснением, как биллинговая система может завысить цифры в миллиард раз:

«Похоже, GB потреблённого хранилища перепутали с Bytes потреблённого хранилища — отсюда ошибка в 2^30 раз.» — комментатор, разобравший арифметику пересчёта единиц

Гигабайт — это 2^30 байт, так что путаница единиц даёт почти ровно ту миллиардную инфляцию цифр, о которой все сообщали, и это совпадает с признанием самой AWS: сбой был в логике «юнит-прайсинга», а не в реальных системах учёта использования под ней.

«Если ты должен банку миллиард — это уже проблема банка». Один читатель раскрыл этот блеф

Тред так часто вспоминал старую шутку про долг и масштаб, что она превратилась в сквозной мем: должен немного — это твоя проблема, должен много — уже проблема кредитора. Один из ответов не оставил шутку без разбора:

«Эта шутка работает, только если ты реально создаёшь AWS издержки… Если тебе просто выставили счёт на пустом месте, это всё равно твоя проблема.» — комментатор, доведший логику шутки до конца

Живая вакансия AWS сделала шутку про «биллинг на вайб-кодинге» не такой уж шуткой

Несколько комментаторов полушутя предположили, что баг выкатил AI-агент для написания кода. Затем кто-то вместо догадок пошёл искать доказательства:

«Спорим, описание этой вакансии обновят до конца дня? «Software Development Engineer II, AWS Invoicing»… Наши платформы работают на генеративном AI, больших языковых моделях, графах знаний и агентных архитектурах, которые динамически собирают специализированных агентов под контекст.» — читатель, нашедший страницу найма команды биллинга Amazon

В собственных заметках AWS об инциденте причина не названа — только «юнит-прайсинг», так что связь остаётся косвенной. Но живое объявление о найме, описывающее агентный AI, который строит платформу биллинга, оказалось достаточным, чтобы шутка перестала звучать как шутка.

Защитный механизм, которого у биллинговой системы такого размера явно не было

За шутками один из ответов поставил конкретный инженерный вопрос:

«…меня немного удивляет, что это не сработало как автоматический предохранитель. Для такой не-реалтаймовой вещи, как биллинг, странно, что у них нет автоматического рубильника, который останавливает систему и шлёт алерт при скачке отклонений в счетах.» — инженер, описавший рубильник на основе отклонений для биллинговых систем

Инженер, который часть карьеры провёл по другую сторону этой арифметики, уже делал этот вывод на личном опыте:

«Одно время моя работа заключалась в том, чтобы снижать счёт нашего стартапа за AWS. Мне удалось оставить семизначную сумму у нас, а не отдать её AWS… «Well-Architected» — это ради баланса гиперскейлеров, а не вашего.» — инженер, срезавший семизначную сумму со счёта своего стартапа за AWS

AWS тратит немало усилий, убеждая клиентов через собственный фреймворк Well-Architected строить именно такое обнаружение аномалий, которого явно не было у её собственной панели биллинга.

Получайте такие разборы каждый день

Главные истории Hacker News — на email, в Telegram или RSS.

Следующая новость · 3 из 27 Читать дальше
🚀Tech

Лидерборд браузерной ATC-игры одиночки взломали за считаные часы

Соло-разработчик сделал браузерный оммаж культовой iPhone-игре 2009 года Flight Control — с рисованными траекториями полёта и живым лидербордом. Через несколько часов после выхода на Hacker News кто-то нашёл API для очков и начал постить по десять тысяч посадок в секунду.

★ 712 · 💬 142 · airport.apunen.com · 3 мин