AWS Emulator: локальная копия 200+ сервисов AWS, которую написали ИИ-агенты

AWS выпустила AWS Emulator — локальный эмулятор AWS API, который запускается на ноутбуке, dev-сервере или в CI. AWS CLI и SDK обращаются к нему вместо облака: аккаунт AWS не нужен, платы за сервисы нет. Необычная деталь в другом — весь код эмулятора написали и проверили автономные ИИ-агенты.

Для разработчиков и кодинг-агентов это быстрый и бесплатный цикл проверки против API, повторяющих формы AWS. Ресурсы живут в памяти и исчезают при остановке процесса.

Что внутри: 438 моделей API и 200+ сервисов

Эмулятор собран из 438 моделей AWS API и покрывает более 200 сервисов, по одному Rust-крейту на сервис. Запускается на Linux x86_64/aarch64 (пакеты RPM или Debian) либо в Docker на macOS и Windows с лимитом памяти 2 GiB. Сборка из исходников требует 100 ГБ свободного места.

Точность измеряется публичным набором тестов. В релизе v1.0.322 проходят 24 243 из 42 857 оценённых тестов — 56,6%, ещё 80 пропущено. На уровне отдельных шагов результат выше: 49 810 из 68 007 (73,2%). Сквозные сценарии между сервисами проходят хуже — 2 752 из 6 569 (41,9%).

Лучшие результаты показывают AWS KMS (93,9%, 291 из 310 тестов) и Amazon SQS (89,8%). Среди основных сервисов: S3 — 79,1%, DynamoDB — 77,3%, SNS — 73,9%, Lambda — 46,4%, EC2 — 41,5%. Хуже всего AWS CloudFormation — 15,8% (414 из 2 612 тестов).

По документации о точности лучше всего совпадают control-plane API. Поддержка data-plane, CloudFormation, Terraform и CDK зависит от сервиса. Нереализованные операции возвращают HTTP 501 NotImplemented. Тесты лежат в наборе aws-emulator-evaluation-suite, включая падающие.

Как ИИ-агенты писали эмулятор

Проект начался с промпта для Kiro: примерно за 15 минут тот выдал работоспособный эмулятор Amazon SQS. Дальше AWS разделила работу между тремя командами агентов:

  • Test writers строят сценарии по публичным моделям Smithy API и проверяют каждый против настоящего AWS.
  • Issue finders прогоняют эти тесты против эмулятора и заводят задачи на провалы.
  • Fixers берут по одной задаче и присылают патч.

Каждый патч проходит merge gate: сборка, код-ревью, безопасность и точность. Несколько security-агентов дополнительно проводят состязательные проверки. По словам Matthew Goldberg, сотни параллельных агентов исправляют тысячи задач в день. Конвейер релизов работает на AWS Developer Tools, репозиторий агентов — CodeCommit, до GitHub код доходит последним.

Как запустить

В README описаны четыре пути:

  1. Linux — поставить RPM или Debian-пакет и запустить aws-emulator.
  2. macOS/Windows — собрать контейнер по Dockerfile от AWS с лимитом 2 GiB.
  3. Rust embedded mode — добавить как dev-dependency, по одному изолированному экземпляру на тест.
  4. Кодинг-агенты — aws agent-toolkit add-skill --skill-name aws-emulator, нужен AWS CLI 2.35.0 или новее.

Сборка из исходников поднимает HTTPS на 127.0.0.1:9297 с самоподписанным сертификатом. Нужны тулчейн Rust, компилятор C и минимум 100 ГБ диска. Embedded-режим несёт ту же стоимость сборки при первом cargo test.

Чем отличается от LocalStack, Moto и Floci

Параметр AWS Emulator LocalStack Moto Floci
Лицензия CC0 1.0 (vendor/ — Apache 2.0) Коммерческие планы Apache-2.0 MIT
Цена Бесплатно Hobby $0 (некоммерческое), Base $39, Ultimate $89 за лицензию в месяц (годовая) Бесплатно Бесплатно
Покрытие 200+ сервисов, 438 моделей API 30+ / 55+ / 110+ по плану Не раскрыто в README Не суммировано в README
Токен вендора Нет Да (auth token) Нет Не раскрыто
Эндпоинт по умолчанию HTTPS 127.0.0.1:9297 Порт 4566 Порт 5000 Порт 4566
In-process режим Rust dev-dependency Не раскрыто Python-декоратор @mock_aws Не раскрыто
Публичные оценки точности Да, на каждый релиз Не раскрыто Не раскрыто Не раскрыто

Ограничения, о которых предупреждает сам AWS

  • Нет вычисления IAM. Политики идентичности и ресурсов не оцениваются как в AWS — для тестов безопасности эмулятор не годится.
  • Один регион и один аккаунт. Любые идентификаторы принимаются, но ресурсы по ним не изолируются.
  • Проверено только в us-west-2, глобальные сервисы проверялись в us-east-1.
  • Всё в памяти и недолговечно. Долгие прогоны и нагрузочные тесты не проверялись; остановить процесс можно через --idle-timeout.
  • Телеметрия включена по умолчанию. Отключается флагом --telemetry off, переменной EMULATOR_TELEMETRY=off, через config.toml или в embedded API.

Темп релизов высокий: версии v1.0.265–v1.0.322 вышли с 8 по 11 ноября.

Что это значит на практике

Эмулятор закрывает нишу быстрых локальных и CI-прогонов, где не нужен настоящий аккаунт AWS. Для проверки прав доступа, отказоустойчивости или поведения под нагрузкой он не подходит — это прямо оговорено. Если в вашем пайплайне уже используется LocalStack или Moto, AWS Emulator стоит рассматривать как альтернативу с открытой лицензией CC0 и публикуемыми оценками точности, а не как замену: 56,6% пройденных тестов означают, что почти половина проверенных сценариев пока расходится с поведением настоящего AWS.

Агентная часть проекта перекликается с двумя другими разборами: как ИИ-агенты ищут уязвимости и как устроены кодинг-агенты для бизнеса — здесь же агенты выступают как авторы и ревьюеры кода. Тем, кто гоняет модели локально, будет близок и материал про ИИ-агентов на ноутбуке без облачного счёта.

Частые вопросы

Нужен ли аккаунт AWS, чтобы запустить AWS Emulator?

Нет. Эмулятор работает локально, аккаунт AWS и оплата сервисов не требуются. AWS CLI и SDK указываются на локальный эндпоинт через переменные окружения, код при этом не меняется.

Насколько эмулятор совпадает с настоящим AWS?

В релизе v1.0.322 проходят 24 243 из 42 857 оценённых тестов — 56,6%. На уровне шагов — 73,2%, сквозные сценарии между сервисами — 41,9%. Точность сильно зависит от сервиса.

Какие сервисы работают лучше всего?

Лучше всех AWS KMS — 93,9% (291 из 310 тестов) и Amazon SQS — 89,8%. Из основных сервисов: S3 — 79,1%, DynamoDB — 77,3%, SNS — 73,9%.

Где эмулятор ошибается чаще всего?

Хуже всего AWS CloudFormation — 15,8% (414 из 2 612 тестов). Lambda проходит 46,4%, EC2 — 41,5%. Нереализованные операции возвращают HTTP 501 NotImplemented.

Можно ли использовать его для тестов безопасности?

Нет. AWS прямо указывает, что IAM не вычисляется: политики идентичности и ресурсов не оцениваются как в настоящем AWS. Для security-тестов эмулятор не подходит.

Сколько ресурсов нужно для запуска?

Docker-вариант на macOS и Windows ограничен 2 GiB памяти. Сборка из исходников требует тулчейна Rust, компилятора C и минимум 100 ГБ свободного диска.

Как отключить телеметрию?

Телеметрия включена по умолчанию. Отключается флагом --telemetry off, переменной EMULATOR_TELEMETRY=off, через config.toml или в embedded API.

Чем AWS Emulator отличается от LocalStack и Moto?

Лицензия — CC0 1.0 (каталог vendor/ — Apache 2.0), тогда как LocalStack предлагает коммерческие планы, а Moto распространяется по Apache-2.0. AWS Emulator покрывает 200+ сервисов и публикует оценки точности на каждый релиз; у LocalStack и Moto такие оценки не раскрыты. Эндпоинт по умолчанию — HTTPS 127.0.0.1:9297 против порта 4566 у LocalStack и 5000 у Moto.

Кто писал код эмулятора?

Автономные ИИ-агенты. Люди построили тесты и merge gate, а три команды агентов — test writers, issue finders и fixers — писали и проверяли код. Каждый патч проходит проверку сборки, код-ревью, безопасности и точности.

Источник: marktechpost.com