AWS Step Functions ⇄ Pulse
Step Functions possède la state machine durable ; Pulse est le step de streaming qu'elle appelle. L'ASL est déclaratif et ne fait pas de HTTP lui-même — un Task state invoque une Lambda, et la Lambda appelle Pulse. Exemple du repo : examples/stepfunctions-pulse-bridge/.
La Lambda (lambda_function.py) fait les deux appels universels : POST .../x/order-scoring/in, GET .../events/order-scoring.score.out.
Lancez-le en local — toute la state machine, pas juste la Lambda
pulse server start --dev
mkdir app && cp pulse.yaml app/ && (cd app && pulse deploy .)
pip install requests
PULSE_URL=http://localhost:9090 python run_local.py
run_local.py est un mini-interpréteur ASL qui exécute le même statemachine.asl.json que vous déploieriez sur AWS — le Task (avec le vrai handler), ResultSelector/ResultPath, le Choice, les états Pass. Sortie validée :
amount= 2500 -> high_value=True decision=escalate
amount= 300 -> high_value=False decision=auto-approve
Déployer sur le vrai AWS
statemachine.asl.json est prêt à déployer : créez la Lambda depuis lambda_function.py (avec PULSE_URL/PULSE_TOKEN dans son environnement), pointez le Resource du Task sur son ARN, créez la state machine. Le statut 🧪 veut dire exactement cela : la définition tourne validée contre un Pulse vivant ; le run hébergé AWS demande votre compte.
Ensuite
- Guide Google Cloud Workflows — même forme, sans Lambda
- Guide Temporal — l'équivalent durable self-hosted