Suspended или terminated — у вас есть окно на восстановление и эвакуацию, но действовать нужно в первые 24-48 часов. Ниже — чек-лист, механика 90-дневного окна и как забрать S3, EC2, RDS. И контакт NIXadmin для срочной помощи, если сами не успеваете.
Работали с 20+ подобными случаями. Данные забирали в каждом.
Что мы делаем в первый час после звонка
hello@nix-admin.ru · ответ в течение 2 часов в рабочие часы, до 4 часов в нерабочие
Что случилось
Первый шаг — прочитать формулировку в письме от AWS. От этого зависит план и запас времени.
Услуги приостановлены (EC2 stopped, RDS unavailable), но физически данные на дисках AWS. Обычно первая стадия — биллинг не прошёл, подозрительная активность, ToS-нарушение. Console вход может быть частично доступен.
Что можно
AWS формально закрыл аккаунт. EC2-инстансы удалены (кроме detached EBS-volumes), большинство ресурсов освобождено. Забрать можно только то, что физически осталось: S3-бакеты, EBS-снапшоты. Действовать нужно быстро.
Что делать
Есть промежуточное состояние past-due — счёт не оплачен, но аккаунт ещё работает. Обычно AWS даёт 15-30 дней, потом переводит в suspended. Если вы в past-due — у вас ещё есть время эвакуироваться без стресса.
Чек-лист первых 24 часов
Порядок важен: сначала фиксируем состояние и открываем канал связи с AWS, потом хватаемся за данные. Не наоборот.
Полный скриншот письма и любых текстов в консоли AWS — точная формулировка (suspended / terminated / restricted), дата, причина. Пригодится и для support-кейса, и для нас, если вы позже позвоните.
С машины разработчика или CI, где хранятся ключи, попробовать простую команду:
aws sts get-caller-identity aws s3 ls aws ec2 describe-instances --max-results 5
Если возвращают данные — вы «в дамках»: у вас есть рабочий канал для эвакуации даже если консоль недоступна. Если AccessDenied / ExpiredToken / Sign in required — только через Support.
Через AWS Console → Support → Create Case. Категория Account and Billing → Account Suspended/Terminated. Текст на английском, вежливый, конкретный. Если ваш Support Plan — Business или Enterprise, ответ в течение 1-24 часов; на Basic может занять недели.
Subject: Account <12-digit account ID> suspended/terminated — request data recovery access Hello AWS Support, Our account <ID> was suspended/terminated on <date>. We understand the concerns and are working on resolution. Our team needs read-only access to retrieve customer data as required by data-protection regulations we are subject to. Specifically: - Read access to S3 buckets: <list of bucket names or 'all in account'> - Access to RDS snapshots: <names or 'all'> - Access to EBS snapshots: <list> We commit to using this access only for data extraction, within the 90-day window. Please confirm what steps are required. Thank you, <your name>
Пока AWS раздумывает, что делать с вашим кейсом, тащим всё, что можем, локально или в новый бакет (в другом облаке):
# зеркалим в локальный диск (быстро, но нужен объём) aws s3 sync s3://your-bucket/ ./local-copy/ --request-payer requester # лучше — сразу в целевое хранилище через rclone rclone copy aws-src:your-bucket selectel-dst:your-bucket --transfers 32 --checkers 16
Если RDS-инстансы ещё работают (в suspended иногда работают, в terminated — нет), сразу дампим:
pg_dump -h your-rds.abc.eu-west-1.rds.amazonaws.com \
-U your-user -d your-db \
-Fc -Z 9 -f your-db.dump
# для MySQL:
mysqldump -h your-rds.abc.eu-west-1.rds.amazonaws.com \
-u your-user -p your-db \
--single-transaction --routines --triggers | gzip > your-db.sql.gz
Если RDS уже недоступен, а у вас есть snapshot — экспортируем в S3 через AWS Console (RDS → Snapshots → Export to S3). Работает даже в suspended-состоянии.
Виртуалки не скачаешь напрямую, но EBS-снапшоты можно экспортировать как VMDK через VM Import/Export, а дальше конвертировать в формат Selectel/YC. Или проще — снять снапшот, поднять новую VM в другом облаке из чистого образа + залить нужные данные из бэкапа.
Часто это самое ценное — API-ключи от третьих сервисов, приватные ключи, пароли БД. Экспортируем всё пока IAM живой:
aws secretsmanager list-secrets --output json > secrets-list.json aws ssm get-parameters-by-path --path / --recursive --with-decryption > params.json # KMS-ключи не выгрузить, но список — обязательно: aws kms list-keys > kms-keys.json
KMS-ключи сами по себе не забрать, но можно расшифровать всё, что зашифровано ими, пока ключи ещё активны. После terminated они умирают — все зашифрованные данные становятся мусором.
Как забрать данные
| Сервис AWS | Как забрать | Работает в suspended? | В terminated? |
|---|---|---|---|
| S3 | aws s3 sync / rclone в другой облачный бакет |
Да (если IAM) | Иногда (через Support) |
| RDS PostgreSQL / MySQL | pg_dump / mysqldump напрямую через endpoint |
Да, если инстанс running | Нет |
| RDS Snapshots | RDS → Snapshots → Export to S3 → sync к себе | Да (workflow работает) | Только через Support |
| DynamoDB | Export to S3 (native), затем скачать. Или scan через SDK | Да | Нет |
| EC2 (сама VM) | EBS snapshot → VM Import/Export → VMDK | Да, но долго | Нет (VM удалены) |
| EBS Volumes / Snapshots | Attach к другой VM или CreateSnapshot + copy | Да | Detached — часто остаются |
| ElastiCache Redis | RDB backup → export to S3 → sync | Да | Нет |
| Secrets Manager | aws secretsmanager list/get с расшифровкой |
Да, если IAM | Нет |
| Systems Manager Parameter Store | aws ssm get-parameters-by-path |
Да | Нет |
| CloudWatch Logs | Export to S3 (Console или API) → sync | Да | Нет |
| Lambda код | aws lambda get-function --function-name X, ZIP лежит в S3 |
Да | Нет |
| Route 53 (DNS) | aws route53 list-hosted-zones + list-resource-record-sets → JSON |
Да | Записи могут остаться до истечения регистрации |
Практика: если у вас работающие IAM-ключи, вытащить типовой стек (5-20 бакетов + 3-5 БД + пара lambda + secrets) за 24-48 часов реально. Основное узкое место — пропускная способность вашего канала на S3.
Таймлайн 90 дней
День 0-3
Аварийное окно
Проверить IAM, открыть support case, начать s3 sync и БД dumps. Параллельно — созвон со своей командой + подрядчиком. Заказать целевую инфру в Selectel/YC. Цель — забрать 80% критичного за первые 72 часа.
День 3-14
Стабилизация
Разворачиваем зеркало в новом облаке, поднимаем прод-сервисы, переключаем DNS. К концу этого окна ваш бизнес должен работать на новой инфре. AWS оставляем «на случай» ещё на 2-4 недели.
День 14-45
Хвосты
Догоняющие данные — логи, старые бэкапы, редко-используемые бакеты. Support-кейсы обычно отвечают в этом окне, иногда дают временный read-only доступ. Собираем всё, что «нужно на всякий случай».
День 45-90
Окно закрывается
Последняя проверка: точно ли всё вытащили? После 90 дней AWS обычно удаляет физические копии окончательно. Аудитим что забыто, финализируем инвентарь. После — старый аккаунт можно забыть.
Аварийная помощь
Опыт с 20+ аварийных миграций. За первый час — соберём звонок, оценим состояние, начнём тянуть данные. За 3-7 дней — восстановим работу сервисов на Selectel/YC.
Разовый аварийный проект
от 250 тыс. ₽
За неделю авральной работы для команды 5-15 сервисов.
С контрактом на поддержку
0 ₽ за миграцию
Retainer 60К+/мес × 6 мес → аварийные работы включены. См. основной оффер.
Ответ в течение 2 часов в рабочие часы, до 4 часов в нерабочие · NDA до раскрытия доступов
FAQ
Suspended — аккаунт заморожен, инстансы остановлены, но данные ещё физически есть на дисках AWS. Обычно этап 1: биллинг не прошёл, подозрительная активность, ToS violation. В этом состоянии есть шанс восстановить доступ через support case и билинг-fix, а даже без восстановления — 90-дневное окно на скачивание данных. Terminated — аккаунт закрыт окончательно: EC2-инстансы удалены (кроме detached EBS-volumes), большинство ресурсов освобождены. Забрать можно только то, что физически осталось: S3-бакеты, EBS-снапшоты (если были). Действовать нужно быстро.
Реально, если действовать в первые 48 часов. Первым делом открывайте support case — если у вас Basic Support (бесплатный), доступа к человеку почти нет; если Developer или Business — реагируют. Параллельно проверяйте, работают ли ваши IAM access keys. Если да — s3 sync, aws ec2 create-snapshot, mysqldump/pg_dump всех БД через RDS endpoint. Если IAM ключи заблокированы вместе с root — только через AWS Support, и это может занять 2-6 недель.
Формально AWS не «блокирует по геолокации», а применяет ToS-политики: платёжный адрес РФ, платежи через посредников без Anti-Money-Laundering compliance, IP от российских дата-центров в системных логах, домены .ru в тикетах поддержки. Часть кейсов — «false positive» от автоматических систем; часть — точечные блокировки после проверки Trust & Safety. Восстановить можно, но время неизвестно, работать в это время нельзя. Правильная стратегия — не спорить, а быстро эвакуироваться.
AWS попытается списать несколько раз, потом переведёт аккаунт в past-due и заморозит услуги. Обычно даётся 30 дней после первого fail-charge, но может быть меньше при подозрениях. Пока не в suspended — успеваете добавить рабочую карту (иностранную через доверенное юрлицо) или начать эвакуацию. Как только услуги остановлены — spot-инстансы и preemptible первыми, а S3 и EBS ещё живут, забирайте.
Да, это правильный сценарий: пока AWS ещё частично доступен (даже в suspended можно скачивать), поднимаем зеркало в Selectel/Yandex Cloud. Синхронизируем S3, реплицируем БД (логическая репликация или дампы), пересоздаём VM из snapshot-образов. За 3-7 дней при команде из 2-3 DevOps можно восстановить работу на новом провайдере. Мы делаем это регулярно как «rescue migration».
Зависит от объёма и срочности. Аварийные работы (24/7 в первую неделю, все руки на палубу) — 250-500 тыс. ₽ разово для команды 5-15 сервисов. Если параллельно заключаете контракт на DevOps-поддержку от 6 месяцев — миграция бесплатно (даже аварийная), см. основной оффер. Часто самый быстрый вариант: наш dev-контракт, миграция вечером, работа с утра.