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.
Présentation des machines d'État
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 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 |
|
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 FunctionsStartAt
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'DescribeExecution
action. 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.
-
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 }); }
-
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 } } }
-
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'StartSyncExecution
APIappel 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 :
-
AWS Lambda, en utilisant l'
StartExecution
appel.
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.
Next
les 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 duStartAt
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 :
-
UpdateStateMachine
dans le .AWS Step Functions APIRéférence -
Mettre à jour un flux de travail dansDécouvrez comment démarrer avec Step Functions.