Skip to content
Learni
Voir tous les tutoriels
Cloud & DevOps

Comment orchestrer des workflows avec AWS Step Functions en 2026

Read in English

Introduction

AWS Step Functions permet d'orchestrer des workflows complexes en reliant plusieurs services AWS sans écrire de code de coordination. Cette approche visuelle réduit les erreurs et facilite le débogage des processus serverless. En 2026, elle reste la solution privilégiée pour les architectures événementielles fiables. Vous allez apprendre à définir une machine d'état simple, l'intégrer à Lambda et la déployer via CLI. Ce tutoriel vous fournit des exemples 100% fonctionnels et copiables.

Prérequis

  • Compte AWS avec droits IAM suffisants
  • AWS CLI installé et configuré
  • Connaissances basiques de JSON et Python
  • Node.js ou Python 3.11+ pour les fonctions Lambda

Créer une fonction Lambda basique

lambda_handler.py
import json

def lambda_handler(event, context):
    order_id = event.get('order_id', 'unknown')
    print(f'Traitement de la commande {order_id}')
    return {
        'statusCode': 200,
        'body': json.dumps({'message': 'Commande traitée', 'order_id': order_id})
    }

Cette fonction Lambda simple simule le traitement d'une commande. Elle reçoit un événement JSON et retourne un résultat. Elle servira de première étape dans notre machine d'état Step Functions.

Définir la machine d'état simple

state-machine.json
{
  "Comment": "Workflow simple de traitement de commande",
  "StartAt": "ProcessOrder",
  "States": {
    "ProcessOrder": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:eu-west-1:123456789012:function:ProcessOrderLambda",
      "End": true
    }
  }
}

Ce fichier JSON définit une machine d'état minimale avec une seule étape Task qui appelle notre Lambda. Le champ Resource contient l'ARN de la fonction Lambda à exécuter.

Ajouter une étape de validation

state-machine-v2.json
{
  "Comment": "Workflow avec validation",
  "StartAt": "ValidateInput",
  "States": {
    "ValidateInput": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:eu-west-1:123456789012:function:ValidateLambda",
      "Next": "ProcessOrder"
    },
    "ProcessOrder": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:eu-west-1:123456789012:function:ProcessOrderLambda",
      "End": true
    }
  }
}

Nous ajoutons une étape de validation avant le traitement. Le champ Next permet de chaîner les états de manière séquentielle, rendant le workflow plus robuste.

Déployer avec AWS CLI

deploy.sh
#!/bin/bash
aws stepfunctions create-state-machine \
  --name OrderProcessingWorkflow \
  --definition file://state-machine-v2.json \
  --role-arn arn:aws:iam::123456789012:role/StepFunctionsRole

Cette commande CLI crée la machine d'état dans votre compte AWS. Assurez-vous que le rôle IAM possède les permissions d'invocation sur les fonctions Lambda.

Exécuter la machine d'état

execute.sh
#!/bin/bash
aws stepfunctions start-execution \
  --state-machine-arn arn:aws:states:eu-west-1:123456789012:stateMachine:OrderProcessingWorkflow \
  --input '{"order_id": "ORD-12345"}'

Cette commande démarre une exécution avec des données d'entrée. Vous pouvez suivre la progression directement depuis la console AWS Step Functions.

Bonnes pratiques

  • Toujours versionner vos définitions de machines d'état
  • Utiliser des noms explicites pour chaque état
  • Configurer des timeouts adaptés sur les tâches
  • Activer le logging CloudWatch pour le débogage
  • Séparer les environnements dev et prod avec des stacks distinctes

Erreurs courantes à éviter

  • Oublier les permissions IAM entre Step Functions et Lambda
  • Utiliser des ARN en dur sans paramétrage
  • Négliger la gestion des erreurs avec Catch et Retry
  • Créer des boucles infinies sans état de sortie clair

Pour aller plus loin

Découvrez nos formations complètes sur l'architecture serverless et AWS sur Learni Group.