Ce qui se passe
AWS publie AWS Emulator, un émulateur local de ses API. Il sert à tester du code qui appelle AWS sans appeler AWS : sur un poste, un serveur de développement ou en CI, sans compte et sans frais pour l'émulateur. Les requêtes manipulent des ressources émulées. Il n'a pas d'interface graphique.
Comment il s'utilise
- Mode serveur, pour la CLI et tous les SDK. Sous Linux, paquet RPM ou Debian, puis
aws-emulator; sous Windows et macOS, un conteneur construit à partir d'un court Dockerfile. On pointe ensuite le SDK vers l'émulateur par des variables d'environnement, décrites dans la documentation. - Mode embarqué, pour les tests en Rust : l'émulateur devient une dépendance de développement, une instance isolée par test, et son client HTTP est passé directement au SDK. Ni URL, ni certificat, ni variable.
- Avec un agent de code : un skill s'installe avec la CLI AWS 2.35.0 ou plus.
aws agent-toolkit add-skill --skill-name aws-emulator --region us-east-1Compilé depuis les sources — Linux x86_64 et aarch64 uniquement —, il sert en HTTPS sur 127.0.0.1:9297 avec un
certificat auto-signé :
cargo build -p aws-emulator-router
cargo run -p aws-emulator-routerPrévoyez au moins 100 Go libres pour target/ : le dépôt compte un crate par service. Le mode embarqué paie
le même coût à la première compilation ; AWS conseille de partager un CARGO_TARGET_DIR, de mettre target/ en
cache en CI (ou d'utiliser sccache) et d'épingler l'émulateur sur un commit de release.
Comment il a été construit
D'après le billet de Swami Sivasubramanian sur le blog de Werner Vogels, tout le code a été écrit et testé par des agents, à partir de plus de 400 modèles d'API Smithy couvrant plus de 200 services. Des tests de fidélité, tirés de scénarios clients, sont d'abord ajustés jusqu'à passer contre le vrai AWS ; l'émulateur est ensuite corrigé jusqu'à les passer à son tour. Chaque modification franchit une barrière de fusion où plusieurs agents de sécurité relisent en adversaires. Simon Willison relève 29 684 commits sur les trois premières semaines. Le dépôt n'accepte pas de pull requests ; les écarts se signalent en issues, avec le service, l'opération, le SDK et sa version.
Les limites
- Ni pour la production, ni pour tester la sécurité.
- La fidélité varie : chaque release publie un score par service. Les écarts connus sont rangés dans
issues/things-that-do-not-work/, ceux corrigés dansissues/things-that-now-work/. - Télémétrie activée par défaut ; selon AWS, elle n'inclut ni le contenu des requêtes, ni le code, ni les identifiants. Pour la couper :
aws-emulator --telemetry off # pour ce processus (ou après le nom de l'image en docker run)
export EMULATOR_TELEMETRY=off # pour tout lancement depuis ce shellPour toute la machine, dans ~/.aws/emulator/config.toml (%USERPROFILE%\.aws\emulator\config.toml sous
Windows) :
[telemetry]
enabled = falseUne valeur de EMULATOR_TELEMETRY non reconnue coupe aussi la télémétrie, avec un avertissement au démarrage. Si
vous intégrez l'émulateur dans un outil que d'autres lancent, prévenez-les, ou livrez-le télémétrie coupée.
Licence
CC0 1.0, dédiée au domaine public, sauf le dossier vendor/, sous Apache 2.0.
Source : dépôt aws/aws-emulator, en anglais. Contexte : le billet d'AWS et le billet de Simon Willison, par lequel le sujet est arrivé.