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