veilletech.fr
13 nov. Feed du jour
#09 DEVOPS Article

AWS Emulator : tester 200 services AWS sans compte

Vos tests AWS n'ont plus besoin d'AWS.

AWS publie AWS Emulator, un émulateur local et gratuit de ses API, pour tester sans compte sur un poste ou en CI. Écrit et testé par des agents à partir de plus de 400 modèles d'API couvrant plus de 200 services, il est vérifié contre le vrai AWS et publie un score de fidélité par service. Code sous CC0, télémétrie activée par défaut.

3 min de lectureintermédiairevidéo 1:21
Partager
Sommaire6 sections
  1. Ce qui se passe
  2. Comment il s'utilise
  3. Comment il a été construit
  4. Les limites
  5. Licence
  6. À retenir

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

Terminal
aws agent-toolkit add-skill --skill-name aws-emulator --region us-east-1

Compilé depuis les sources — Linux x86_64 et aarch64 uniquement —, il sert en HTTPS sur 127.0.0.1:9297 avec un certificat auto-signé :

Terminal
cargo build -p aws-emulator-router
cargo run   -p aws-emulator-router

Pré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

Terminal
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 shell

Pour toute la machine, dans ~/.aws/emulator/config.toml (%USERPROFILE%\.aws\emulator\config.toml sous Windows) :

TOML
[telemetry]
enabled = false

Une 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é.