En savoir plus sur les machines à états dans Step Functions - AWS Step Functions

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

En savoir plus sur les machines à états dans Step Functions

Step Functions est basé sur des machines à états et des tâches. Dans Step Functions, les machines à états sont appelées flux de travail, qui sont une série d'étapes pilotées par des événements. Chaque étape d'un flux de travail est appelée un état. Par exemple, un état de tâche représente une unité de travail par rapport à une autre AWS le service fonctionne, par exemple en appelant un autre Service AWS ouAPI. Les instances de flux de travail exécutant des tâches sont appelées exécutions dans Step Functions.

Exemple illustratif d'un diagramme de flux de travail Step Functions.

Concepts clés

Vous trouverez ci-dessous un aperçu des principaux termes contextuels de Step Functions.

Terme Description
Flux de travail Séquence d'étapes qui reflète souvent un processus métier.
States

Des étapes individuelles de votre machine à états qui peuvent prendre des décisions en fonction de leurs entrées, effectuer des actions à partir de ces entrées et transmettre les sorties à d'autres états.

Pour de plus amples informations, veuillez consulter Découverte des états de flux de travail à utiliser dans Step Functions.

Studio de flux de travail

Un concepteur visuel de flux de travail qui vous aide à prototyper et à créer des flux de travail plus rapidement.

Pour de plus amples informations, veuillez consulter Développement de flux de travail dans Step Functions Workflow Studio.

Machine d'état

Un flux de travail défini à l'aide d'un JSON texte représentant les différents états ou étapes du flux de travail ainsi que de champs tels que StartAtTimeoutSeconds, etVersion.

Pour de plus amples informations, veuillez consulter Structure des machines à états dans Amazon States Language pour les flux de travail Step Functions.

Amazon States Language

Langage JSON basé et structuré utilisé pour définir vos machines d'état. AvecASL, vous définissez un ensemble d'états qui peuvent fonctionner (Taskétat), vous déterminez les états à passer au suivant (Choiceétat) et vous arrêtez une exécution en cas d'erreur (Failétat).

Pour de plus amples informations, veuillez consulter Utiliser Amazon States Language pour définir les flux de travail Step Functions.

Configuration d'entrée et de sortie

Les états d'un flux de travail reçoivent JSON des données en entrée et transmettent généralement JSON des données en sortie à l'état suivant. Step Functions fournit des filtres pour contrôler le flux de données entre les états.

Pour de plus amples informations, veuillez consulter Traitement des entrées et des sorties dans Step Functions.

Intégration de service

Tu peux appeler AWS APIactions de service issues de votre flux de travail.

Pour de plus amples informations, veuillez consulter Intégrer les services avec Step Functions.

Type d'intégration de services
  • AWS SDKintégrations — Méthode standard pour appeler n'importe quel numéro de plus de deux cents Services AWS et plus de neuf mille API actions directement depuis votre machine d'État.

  • Intégrations optimisées : intégrations personnalisées qui rationalisent les appels et l'échange de données avec certains services. Par exemple, Lambda Invoke convertira automatiquement le Payload champ de réponse d'une JSON chaîne échappée en un JSON objet.

Modèle d'intégration des services

Lorsque vous appelez un Service AWS, vous utilisez l'un des modèles d'intégration de services suivants :

Exécution

Les exécutions par State Machine sont des instances dans lesquelles vous exécutez votre flux de travail pour effectuer des tâches.

Pour de plus amples informations, veuillez consulter Démarrage des exécutions par machine à états dans Step Functions.

Données de la machine d'état

Les données de la machine d'état peuvent prendre les formes suivantes :

  • L'entrée initiale dans une machine d'état

  • Les données transmises entre les états

  • La sortie d'une machine d'état

Cette section décrit comment les données de la machine à états sont formatées et utilisées dans AWS Step Functions.

Format de données

Les données de la machine à états sont représentées par JSON du texte. Vous pouvez fournir des valeurs à une machine à états en utilisant n'importe quel type de données pris en charge parJSON.

Note
  • Les nombres au format JSON texte sont conformes à la JavaScript sémantique. Ces nombres correspondent généralement à des valeurs en double précision de IEEE-854.

  • Le JSON texte suivant est valide :

    • Chaînes autonomes séparées par des guillemets

    • Objets

    • Arrays (tableaux)

    • Nombres

    • Valeurs booléennes

    • null

  • La sortie d'un état devient l'entrée de l'état suivant. Cependant, vous pouvez restreindre les états pour qu'ils fonctionnent sur un sous-ensemble des données d'entrée en utilisant le traitement des entrées et des sorties.

Entrées/Sorties de la machine d'état

Vous pouvez transmettre vos données d'entrée initiales à un AWS Step Functions machine à états de deux manières. Vous pouvez transmettre les données à une StartExecution action lorsque vous lancez une exécution. Vous pouvez également transmettre les données à la machine d'état depuis la console Step Functions. Les données initiales sont transmises à l'état StartAt de la machine d'état. Si aucune entrée n'est fournie, la valeur par défaut est un objet vide ({}).

La sortie de l'exécution est renvoyée par le dernier état (terminal). Cette sortie apparaît sous forme de JSON texte dans le résultat de l'exécution.

Pour les flux de travail standard, vous pouvez récupérer les résultats d'exécution à partir de l'historique d'exécution à l'aide d'appelants externes, tels que l'DescribeExecutionaction. Vous pouvez consulter les résultats de l'exécution sur la console Step Functions.

Pour Express Workflows, si vous avez activé la journalisation, vous pouvez récupérer les résultats depuis CloudWatch les journaux ou consulter et déboguer les exécutions dans la console Step Functions. Pour plus d’informations, consultez Utiliser CloudWatch les journaux pour enregistrer l'historique des exécutions dans Step Functions et Afficher les détails de l'exécution dans la console Step Functions.

Vous devez également prendre en compte les quotas liés à votre machine d'État. Pour plus d’informations, consultez Quotas de service Step Functions.

Entrées/Sorties d'état

L'entrée de chaque état est constituée du JSON texte de l'état précédent ou, pour l'StartAtétat, de l'entrée dans l'exécution. Certains états de contrôle de flux ont une entrée et une sortie identiques.

Dans l'exemple suivant, la machine d'état ajoute deux nombres l'un à l'autre.

  1. Définissez le AWS Lambda .

    function Add(input) { var numbers = JSON.parse(input).numbers; var total = numbers.reduce( function(previousValue, currentValue, index, array) { return previousValue + currentValue; }); return JSON.stringify({ result: total }); }
  2. Définissez la machine d'état .

    { "Comment": "An example that adds two numbers together.", "StartAt": "Add", "Version": "1.0", "TimeoutSeconds": 10, "States": { "Add": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:Add", "End": true } } }
  3. Démarrez une exécution avec le JSON texte suivant.

    { "numbers": [3, 4] }

    L'Addétat reçoit le JSON texte et le transmet à la fonction Lambda.

    La fonction Lambda renvoie le résultat du calcul à l'état.

    L'état renvoie la valeur suivante dans sa sortie.

    { "result": 7 }

    Dans la mesure où Add est également l'état final dans la machine d'état, cette valeur est retournée comme sortie de la machine d'état.

    Si l'état final ne retourne aucune sortie, cela signifie que la machine d'état renvoie un objet vide ({}).

Pour de plus amples informations, veuillez consulter Traitement des entrées et des sorties dans Step Functions.

Invoke AWS Step Functions depuis d'autres services

Vous pouvez configurer plusieurs autres services pour appeler des machines d'état. En fonction du type de flux de travail de la machine à états, vous pouvez appeler des machines à états de manière asynchrone ou synchrone. Pour appeler des machines d'état de manière synchrone, utilisez l'StartSyncExecutionAPIappel ou l'intégration d'Amazon API Gateway avec Express Workflows. Avec l'invocation asynchrone, Step Functions suspend l'exécution du flux de travail jusqu'à ce qu'un jeton de tâche soit renvoyé. Cependant, l'attente d'un jeton de tâche rend le flux de travail synchrone.

Les services que vous pouvez configurer pour appeler Step Functions incluent :

Les invocations de Step Functions sont régies par le StartExecution quota. Pour plus d’informations, consultez :

Transitions dans les machines à états

Lorsque vous lancez une nouvelle exécution de votre machine à états, le système commence par l'état référencé dans le StartAt champ de niveau supérieur. Ce champ, fourni sous forme de chaîne, doit correspondre exactement, majuscules et minuscules, au nom d'un état dans le flux de travail.

Après la faillite d'un État, AWS Step Functions utilise la valeur du Next champ pour déterminer l'état suivant vers lequel passer.

Nextles champs spécifient également les noms d'état sous forme de chaînes. Cette chaîne distingue les majuscules et minuscules et doit correspondre exactement au nom d'un état spécifié dans la description de la machine à états

Par exemple, l'état suivant comprend une transition vers NextState.

"SomeState" : { ..., "Next" : "NextState" }

La plupart des États n'autorisent qu'une seule règle de transition avec Next ce champ. Cependant, certains états de contrôle de flux, tels qu'un Choice état, vous permettent de définir plusieurs règles de transition, chacune avec son propre champ. Next Le Langage des états d'Amazon fournit des détails sur chaque type d'état que vous pouvez spécifier, notamment les informations relatives à la spécification des transitions.

Les états peuvent avoir plusieurs transitions entrantes issues d'autres états.

Le processus se répète jusqu'à ce qu'il atteigne un état terminal (un état avec "Type": Succeed"Type": Fail, ou"End": true) ou qu'une erreur d'exécution se produise.

Lorsque vous redriveune exécution, elle est considérée comme une transition d'état. En outre, tous les états réexécutés dans un redrive sont également considérées comme des transitions entre États.

Les règles suivantes s'appliquent aux états au sein d'une machine d'état :

  • Les états peuvent apparaître dans n'importe quel ordre au sein du bloc englobant. Toutefois, l'ordre dans lequel ils sont listés n'a aucune incidence sur l'ordre dans lequel ils sont exécutés. Cet ordre est déterminé par le contenu des états.

  • Dans une machine à états, il ne peut y avoir qu'un seul état désigné comme start état. L'startétat est défini par la valeur du StartAt champ dans la structure de niveau supérieur.

  • Selon la logique de votre machine à états (par exemple, si votre machine à états possède plusieurs branches logiques), vous pouvez avoir plusieurs end états.

  • Si votre machine à états ne comprend qu'un seul état, il peut s'agir à la fois de l'état de début et de fin.

Transitions dans l'état de la carte distribuée

Lorsque vous utilisez l'Mapétat en mode distribué, une transition d'état vous est facturée pour chaque exécution de flux de travail enfant lancée par l'état de carte distribuée. Lorsque vous utilisez l'Mapétat en mode Inline, aucune transition d'état ne vous est facturée pour chaque itération de l'état Inline Map.

Vous pouvez optimiser les coûts en utilisant l'Mapétat en mode distribué et en incluant un flux de travail imbriqué dans la définition de l'Mapétat. L'état de la carte distribuée ajoute également de la valeur lorsque vous lancez des exécutions de flux de travail enfants de type Express. Step Functions enregistre la réponse et le statut des exécutions du flux de travail Express Child, ce qui réduit le besoin de stocker les données d'exécution dans CloudWatch les journaux. Vous pouvez également accéder aux contrôles de flux disponibles avec un état de carte distribuée, tels que la définition de seuils d'erreur ou le traitement par lots d'un groupe d'éléments. Pour plus d'informations sur la tarification de Step Functions, voir AWS Step Functions tarification.

Lisez Cohérence dans Step Functions

Mises à jour des machines d'état dans AWS Step Functions sont finalement cohérents. Dans les secondes qui suivent, tous les StartExecution appels utiliseront la définition mise à jour et roleArn (le nom de ressource Amazon pour le IAM rôle). Les exécutions démarrées immédiatement après UpdateStateMachine peuvent utiliser la définition de machine d'état précédente et roleArn.

Pour plus d’informations, consultez les ressources suivantes :