Théorie
Que sont les fonctions Step?
À partir d'AWS Docs: Step Functions est un service d'orchestration sans serveur qui vous permet de combiner des fonctions AWS Lambda et d'autres services AWS pour créer des applications critiques pour l'entreprise. Avec la console graphique Step Functions, vous voyez le flux de travail de votre application comme une série d'étapes pilotées par des événements. Step Functions est basé sur des machines d'état et des tâches. Une machine à états est un flux de travail. Une tâche est un état dans un flux de travail qui est une unité de travail effectuée par un autre service AWS. Chaque étape du flux de travail est un état.
Avec les commandes Step Functions intégrées, vous vérifiez l'état de chaque étape du flux de travail pour vous assurer que votre application s'exécute dans le bon ordre et comme prévu. En fonction de votre cas d'utilisation, Step Functions peut appeler des services AWS tels que Lambda pour effectuer des tâches. Vous pouvez créer des flux de travail pour traiter et publier des modèles d'apprentissage automatique. Vous pouvez utiliser Step Functions pour gérer les services AWS tels qu'AWS Glue pour créer des flux de travail d'extraction, de transformation et de chargement (ETL). Vous pouvez également créer de longs flux de travail automatisés pour les applications qui nécessitent une interaction humaine.
Ou, en termes simples, un service de gestion de vos processus.
Quels sont les cas d'utilisation possibles des fonctions d'Ă©tape?
- Fonctions Lambda d'orchestration
- Ramification
- Gestion des exceptions (réessayer ou intercepter)
- Participation humaine au processus
- Parallélisme
Types de processus dans les fonctions d'Ă©tape
- Standard - nécessaire pour les processus en cours d'exécution pendant une longue période, offre une large prise en charge des services et des options d'interaction
- Express - nécessaire pour les processus à exécution rapide (5 minutes), économisant environ 20 fois par million de processus exécutés. A moins d'intégration avec les services AWS
Types d'intégration avec les services AWS
Demander une réponse (par défaut) - Appelle le service et autorise Step Functions à passer à l'état suivant après avoir reçu la réponse HTTP.
Exécuter un travail (.sync) - appelle le service et attend la fin du travail.
Attendez un rappel avec un jeton de tâche (.waitForTaskToken) - appelle le service avec le jeton de tâche et attend le retour du jeton de tâche à l'aide du rappel.
Comparaison de l'intégration avec les services AWS dans les types standard et express
Intégrations de services prises en charge pour Standard
Un service | Demande de réponse | Exécuter un travail (.sync) | Attendre le rappel (.waitForTaskToken) |
---|---|---|---|
Lambda | âś“ | âś“ | |
AWS Batch | âś“ | âś“ | |
DynamoDB | âś“ | ||
Amazon ECS / AWS Fargate | âś“ | âś“ | âś“ |
Amazon SNS | âś“ | âś“ | |
Amazon SQS | âś“ | âś“ | |
AWS Glue | âś“ | âś“ | |
SageMaker | âś“ | âś“ | |
Amazon EMR | âś“ | âś“ | |
CodeBuild | âś“ | âś“ | |
Fonctions d'Ă©tape AWS | âś“ | âś“ | âś“ |
Intégrations de services prises en charge pour Express
Un service | Demande de réponse | Exécuter un travail (.sync) | Attendre le rappel (.waitForTaskToken) |
---|---|---|---|
Lambda | âś“ | ||
AWS Batch | âś“ | ||
DynamoDB | âś“ | ||
Amazon ECS / AWS Fargate | âś“ | ||
Amazon SNS | âś“ | ||
Amazon SQS | âś“ | ||
AWS Glue | âś“ | ||
SageMaker | âś“ | ||
Amazon EMR | âś“ | ||
CodeBuild | âś“ | ||
Fonctions d'Ă©tape | âś“ | âś“ |
Assez de théorie, allons-y par exemple.
Exemple théorique
Afin d'avoir au moins une idée de ce à quoi ressemble le service, considérons l'exemple Hello world.
Conditions préalables
- Compte AWS
- Accédez au service Step Functions dans le compte AWS
Voici donc ce que nous faisons:
- Allez dans "Créer des fonctions d'étape"
- Define state machine = Auteur avec des extraits de code
- Type = Standard
- DĂ©finition =
{ "Comment": "A Hello World example of the Amazon States Language using Pass states", "StartAt": "Hello", "States": { "Hello": { "Type": "Pass", "Result": "Hello", "Next": "World" }, "World": { "Type": "Pass", "Result": "World", "End": true } } }
Cliquez sur Démarrer l'exécution. L'insertion peut être omise. Vous devriez voir un diagramme comme celui-ci:
Félicitations, vous avez créé les fonctions Step les plus simples.
Au lieu d'une conclusion
Si ce sujet est intéressant, dans la partie suivante, nous créerons des fonctions d'étape avec l'intégration AWS Lambda + SQS + SNS, comme indiqué dans le diagramme:
Liens vers les sources:
https://docs.aws.amazon.com/step-functions/