Step Functions : orchestrer des flux de travail sans serveur
Définissez des flux de travail en plusieurs étapes sous forme de machines à états dans Step Functions, gérez les erreurs avec des blocs d’interception et de nouvelle tentative, puis intégrez les intégrations SDK natives.
Step Functions : orchestrer des flux de travail sans serveur est une leçon AWS Solutions Architect gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AWS Solutions Architect, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AWS Solutions Architect comprend 4 leçons au total.
Que sont AWS Step Functions ?
AWS Step Functions est un service d’orchestration de flux de travail entièrement géré qui coordonne les applications distribuées sous la forme d’une série d’étapes définies dans une machine d’état. Chaque étape de la machine d’état est un état : appel d’une Lambda, appel du SDK AWS, période d’attente, branche parallèle ou choix (if/else). Step Functions gère l’état, les nouvelles tentatives et fournit un historique visuel des exécutions, ce qui évite d’écrire la logique d’orchestration dans le code de l’application.
Amazon States Language (ASL)
Les machines d’état sont définies dans Amazon States Language (ASL), un langage fondé sur JSON. Chaque état possède un champ Type (Task, Choice, Wait, Parallel, Map, Pass, Succeed, Fail) et effectue une transition vers un état Next ou se termine. Le champ Resource d’un état Task indique le service AWS à appeler : un ARN pour Lambda, ou un ARN d’intégration de service optimisé pour plus de 200 services AWS, sans Lambda intermédiaire.
{
'Comment': 'Order processing workflow',
'StartAt': 'ValidateOrder',
'States': {
'ValidateOrder': {
'Type': 'Task',
'Resource': 'arn:aws:lambda:us-east-1:123456789012:function:ValidateOrder',
'Next': 'ChargePayment',
'Retry': [{'ErrorEquals': ['Lambda.ServiceException'], 'IntervalSeconds': 2, 'MaxAttempts': 3}]
},
'ChargePayment': {
'Type': 'Task',
'Resource': 'arn:aws:states:::dynamodb:putItem',
'Parameters': {'TableName': 'Orders', 'Item': {'orderId': {'S.$': '$.orderId'}}},
'End': true
}
}
}Flux de travail Standard et Express
Step Functions propose deux types de flux de travail. Flux de travail Standard : durables, d’une durée maximale d’un an, avec une sémantique d’exécution exactement une fois et un historique complet des exécutions conservé pendant 90 jours ; ils conviennent aux processus métier de longue durée. Flux de travail Express : haut débit (plus de 100 000 exécutions par seconde), d’une durée maximale de 5 minutes, avec une sémantique d’exécution au moins une fois et des journaux envoyés à CloudWatch ; ils conviennent au traitement d’événements en temps réel et aux pipelines de données IoT. Faites votre choix en fonction de la durée, du débit et des exigences d’idempotence.
# Create a Standard workflow state machine
aws stepfunctions create-state-machine \
--name OrderProcessing \
--definition file://order-state-machine.json \
--role-arn arn:aws:iam::123456789012:role/StepFunctionsRole \
--type STANDARD
# Create an Express workflow for high-throughput
aws stepfunctions create-state-machine \
--name ClickstreamProcess \
--definition file://click-state-machine.json \
--role-arn arn:aws:iam::123456789012:role/StepFunctionsRole \
--type EXPRESSÉtats Task et intégrations de services
Les états Task de Step Functions prennent en charge deux modèles d’intégration. Request-Response : appeler un service AWS et poursuivre immédiatement (envoi sans attente). Sync Integration : appeler un service et attendre la fin de son exécution avant de passer à l’état suivant (par exemple, attendre la fin d’une tâche ECS, d’un travail Glue ou d’un travail d’entraînement SageMaker). L’intégration synchrone utilise le suffixe :sync:2 dans l’ARN de la ressource et évite d’avoir à écrire une logique d’interrogation.
# Sync integration: start Glue job and wait for completion
'RunGlueETL': {
'Type': 'Task',
'Resource': 'arn:aws:states:::glue:startJobRun.sync:2',
'Parameters': {
'JobName': 'clean-sales'
},
'Next': 'RunAthenaQuery'
}États Choice pour la logique de branchement
Un état Choice implémente un branchement conditionnel : l’équivalent, dans un flux de travail, d’une instruction if/else ou switch. Vous définissez Choices comme un tableau de conditions ; la première condition correspondante détermine l’état suivant. Un état Default traite les cas qui ne correspondent à aucune condition. Les états Choice vous permettent d’acheminer une commande vers différents parcours d’exécution selon le type de produit, le niveau du client ou l’état du paiement, sans écrire de logique conditionnelle dans Lambda.
'RouteByOrderType': {
'Type': 'Choice',
'Choices': [
{
'Variable': '$.orderType',
'StringEquals': 'DIGITAL',
'Next': 'FulfillDigital'
},
{
'Variable': '$.orderType',
'StringEquals': 'PHYSICAL',
'Next': 'FulfillPhysical'
}
],
'Default': 'HandleUnknownType'
}États Parallel et Map
Un état Parallel exécute simultanément plusieurs branches et attend qu’elles soient toutes terminées avant de poursuivre : il est utile pour des tâches concurrentes, comme effectuer au même moment une vérification de solvabilité et une vérification des stocks. Un état Map parcourt un tableau présent dans l’entrée et applique le même ensemble d’états à chaque élément en parallèle : il est utile pour traiter un lot d’éléments renvoyés par une étape précédente, par exemple pour redimensionner plusieurs images importées.
'ProcessImages': {
'Type': 'Map',
'ItemsPath': '$.imageKeys',
'MaxConcurrency': 10,
'Iterator': {
'StartAt': 'ResizeImage',
'States': {
'ResizeImage': {
'Type': 'Task',
'Resource': 'arn:aws:lambda:us-east-1:123:function:ResizeImage',
'End': true
}
}
},
'Next': 'NotifyComplete'
}Gestion des erreurs : Catch et Retry
Chaque état Task de Step Functions peut comporter des blocs Retry et Catch pour assurer une gestion résiliente des erreurs. Retry indique les types d’erreurs qui déclenchent automatiquement de nouvelles tentatives, avec les paramètres configurables IntervalSeconds, MaxAttempts et BackoffRate (multiplicateur du délai exponentiel). Catch indique les états de repli pour les erreurs irrécupérables. Cette gestion déclarative des erreurs évite de répéter des blocs try/catch dans les fonctions Lambda.
'ChargeCard': {
'Type': 'Task',
'Resource': 'arn:aws:lambda:us-east-1:123:function:ChargeCard',
'Retry': [{
'ErrorEquals': ['Lambda.ServiceException', 'States.TaskFailed'],
'IntervalSeconds': 2,
'MaxAttempts': 3,
'BackoffRate': 2.0
}],
'Catch': [{
'ErrorEquals': ['PaymentDeclined'],
'Next': 'NotifyPaymentFailed',
'ResultPath': '$.error'
}],
'Next': 'FulfillOrder'
}États Wait et rappels
Un état Wait interrompt l’exécution du flux de travail pendant une durée fixe ou jusqu’à un horodatage précis. Un modèle Callback (utilisant .waitForTaskToken) interrompt l’exécution jusqu’à ce qu’un système externe appelle SendTaskSuccess ou SendTaskFailure avec le jeton. C’est ainsi que Step Functions modélise les étapes d’approbation humaine : envoyez un e-mail contenant le jeton de tâche, puis le flux de travail reprend lorsqu’une personne clique sur un lien d’approbation ou de refus dans son client de messagerie.
# Callback pattern: wait for human approval
'RequestApproval': {
'Type': 'Task',
'Resource': 'arn:aws:states:::sqs:sendMessage.waitForTaskToken',
'Parameters': {
'QueueUrl': 'https://sqs.us-east-1.amazonaws.com/123/approvals',
'MessageBody': {
'taskToken.$': '$$.Task.Token',
'orderId.$': '$.orderId'
}
},
'Next': 'ProcessApproval'
}Intégration de Step Functions et EventBridge
Les exécutions de Step Functions peuvent être démarrées par des règles EventBridge, ce qui facilite le déclenchement de flux de travail en réponse aux événements des services AWS. Par exemple, un événement S3 ObjectCreated déclenche une règle EventBridge qui démarre un flux de travail Step Functions de traitement d’images. Step Functions peut également publier ses propres événements dans EventBridge lorsque les exécutions réussissent ou échouent, ce qui permet la supervision et l’alerte en aval sans interroger l’API Step Functions.
Supervision des exécutions Step Functions
La console Step Functions fournit un diagramme visuel de l’exécution du flux de travail indiquant quel état a réussi, lequel est en cours d’exécution et lequel a échoué, avec un code couleur mis à jour en temps réel. Chaque exécution conserve l’intégralité de son historique d’entrée et de sortie pour les flux de travail Standard (conservation pendant 90 jours). Pour les flux de travail Express, les journaux sont envoyés à CloudWatch Logs. Utilisez le traçage X-Ray pour suivre la latence des requêtes de bout en bout entre les fonctions Lambda et les autres services appelés dans le flux de travail.
# List recent executions and check status
aws stepfunctions list-executions \
--state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:OrderProcessing \
--status-filter FAILED
# Describe a specific failed execution for debugging
aws stepfunctions describe-execution \
--execution-arn arn:aws:states:us-east-1:123456789012:execution:OrderProcessing:exec-001Step Functions, SQS ou EventBridge ?
Savoir quand utiliser Step Functions plutôt que SQS ou EventBridge est une question fréquente à l’examen. Utilisez Step Functions lorsque vous avez besoin d’une orchestration visible et avec état d’un processus en plusieurs étapes, avec gestion des erreurs et branchements. Utilisez SQS pour une messagerie asynchrone fiable de point à point entre deux services, avec de nouvelles tentatives via le délai de visibilité. Utilisez EventBridge pour acheminer les événements vers plusieurs abonnés selon des modèles de contenu. Un flux de travail Step Functions peut intégrer les trois : attendre un message SQS au moyen d’un jeton de tâche, publier la fin du traitement dans EventBridge et enchaîner des appels Lambda et SDK.
Vérification rapide
Testez votre compréhension des concepts AWS Solutions Architect (SAA-C03) abordés dans cette leçon.
Récapitulatif de la leçon
Dans cette leçon, vous avez appris que Step Functions orchestre les flux de travail sous forme de machines à états avec les états Task, Choice, Parallel, Map, Wait et Catch, que les flux de travail Standard prennent en charge jusqu'à 1 an avec un historique complet des exécutions, tandis que les flux de travail Express gèrent des charges de travail à haut débit de moins de 5 minutes, et que le modèle Callback avec des jetons de tâche permet des étapes d'approbation avec intervention humaine. Nous allons maintenant découvrir Kinesis Data Streams pour le traitement d'événements en temps réel à haut débit.
Questions Fréquemment Posées
La leçon « Step Functions : orchestrer des flux de travail sans serveur » est-elle gratuite ?
Oui — le texte complet de « Step Functions : orchestrer des flux de travail sans serveur » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AWS Solutions Architect, passe à CoddyKit PRO. Le cours AWS Solutions Architect comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Step Functions : orchestrer des flux de travail sans serveur » ?
Définissez des flux de travail en plusieurs étapes sous forme de machines à états dans Step Functions, gérez les erreurs avec des blocs d’interception et de nouvelle tentative, puis intégrez les inté… Tu pratiques AWS Solutions Architect avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer AWS Solutions Architect ?
Aucune expérience préalable n'est requise. AWS Solutions Architect sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Step Functions : orchestrer des flux de travail sans serveur » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon AWS Solutions Architect ?
Oui. Chaque leçon AWS Solutions Architect inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- EventBridge : bus d’événements et règles
- Step Functions : orchestrer des flux de travail sans serveur
- Kinesis Data Streams pour le traitement d’événements en temps réel
- Modèles de chorégraphie ou d’orchestration