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.
Configuration de l'entrée et de la sortie du flux de travail dans Step Functions
Dans la rubrique précédenteExécutez votre flux de travail , vous avez appris à exécuter votre flux de travail. Dans cette rubrique, vous allez apprendre à sélectionner, filtrer et manipuler les données lorsqu'elles passent d'un état à l'autre.
Une exécution de Step Functions reçoit JSON du texte en entrée et transmet cette entrée au premier état du flux de travail. Les états individuels d'un flux de travail reçoivent JSON des données en entrée et transmettent généralement JSON les données en sortie à l'état suivant. Par défaut, les données passent d'un état à l'autre dans le flux de travail, sauf si vous avez configuré l'entrée et/ou la sortie. Comprendre comment les informations circulent d'un état à un autre, et apprendre à filtrer et à manipuler ces données, est essentiel pour concevoir et implémenter efficacement des flux de travail dans Step Functions.
Step Functions fournit les filtres suivants pour contrôler le flux de données d'entrée et de sortie entre les états :
Note
Selon votre cas d'utilisation, il se peut que vous n'ayez pas besoin d'appliquer tous ces filtres dans vos flux de travail.
InputPath
-
Sélectionne WHATune partie de l'ensemble de la charge utile d'entrée à utiliser comme entrée d'une tâche. Si vous spécifiez ce champ, Step Functions l'applique d'abord.
Paramètres
-
HOWSpécifie à quoi doit ressembler l'entrée avant d'appeler la tâche. Avec
Parameters
ce champ, vous pouvez créer une collection de paires clé-valeur qui sont transmises en entrée à un Service AWS intégration, telle qu'un AWS Lambda . Ces valeurs peuvent être statiques ou sélectionnées dynamiquement à partir de l'entrée d'état ou de l'objet de contexte du flux de travail. ResultSelector
-
Détermine WHATle choix parmi les résultats d'une tâche. Avec
ResultSelector
ce champ, vous pouvez créer une collection de paires clé-valeur qui remplacent le résultat d'un état et transmettent cette collection à.ResultPath
Spécification de la sortie d'état à l'aide ResultPath des flux de travail Step Functions
-
Détermine WHEREde mettre le résultat d'une tâche. Utilisez le
ResultPath
pour déterminer si la sortie d'un état est une copie de son entrée, du résultat qu'il produit ou une combinaison des deux. Filtrage de la sortie d'état à l'aide OutputPath des flux de travail Step Functions
-
Détermine WHATl'envoi vers l'état suivant. Avec
OutputPath
, vous pouvez filtrer les informations indésirables et ne transmettre que la partie des JSON données qui vous intéressent.
Astuce
Les ResultSelector
filtres Parameters
et fonctionnent par constructionJSON, tandis que les OutputPath
filtres InputPath
et fonctionnent en filtrant des nœuds spécifiques au sein d'un objet de JSON données, et le ResultPath
filtre fonctionne en créant un champ sous lequel la sortie peut être ajoutée.
Pour plus d'informations sur la configuration des entrées et sorties dans vos flux de travail, consultezTraitement des entrées et des sorties dans Step Functions.
Filtrer et manipuler les entrées et les résultats
- Sélectionnez des parties spécifiques de l'entrée brute à l'aide du InputPath filtre
- Manipuler l'entrée sélectionnée à l'aide du filtre Paramètres
- Configurer la sortie à l'aide des OutputPath filtres ResultSelector ResultPath, et
- Manipulez l'entrée sélectionnée à l'aide du champ Paramètres
- Étapes suivantes
Sélectionnez des parties spécifiques de l'entrée brute à l'aide du InputPath filtre
Utilisez le InputPath
filtre pour sélectionner une partie spécifique de la charge utile d'entrée.
Si vous ne le spécifiez pasInputPath
, sa valeur par défaut est$
, ce qui fait que la tâche de l'état fait référence à l'entrée brute complète plutôt qu'à une partie spécifique.
Pour savoir comment utiliser le InputPath filtre, effectuez les opérations suivantes :
Étape 1 : Création d'une machine à états
Important
Assurez-vous que votre machine d'État est sous le même AWS account et Region en tant que fonction Lambda que vous avez créée précédemment.
-
Utilisez l'exemple
Parallel
d'état que vous avez découvert dans le didacticiel 4 pour créer une nouvelle machine à états. Assurez-vous que votre prototype de flux de travail ressemble au prototype suivant. -
Configurez les intégrations pour les fonctions
check-identity
etcheck-address
Lambda. Pour plus d'informations sur la création des fonctions Lambda et leur utilisation dans votre machine à états, reportez-vous Étape 1 : Création des fonctions Lambda pour effectuer les vérifications requises aux sections et. Étape 2 : Mettre à jour le flux de travail — Ajouter des tâches parallèles à exécuter -
Pour Payload, assurez-vous de conserver la sélection par défaut Use state input as payload.
-
Choisissez Next, puis suivez les étapes 1 à 3 Étape 1 : enregistrer la machine à états du didacticiel 5 pour créer une nouvelle machine à états. Pour ce didacticiel, nommez votre machine à états
WorkflowInputOutput
.
Étape 2 : Exécuter la machine d'état
-
Sur la WorkflowInputOutputpage, choisissez Démarrer l'exécution.
-
(Facultatif) Entrez un nom d'exécution personnalisé pour remplacer le nom par défaut généré.
ASCIINon-noms et journalisation
Step Functions accepte les noms des machines d'état, des exécutions, des activités et des étiquettes contenant des caractères autres que des ASCII caractères. Comme ces caractères ne fonctionneront pas avec Amazon CloudWatch, nous vous recommandons de n'utiliser que des ASCII caractères afin de pouvoir suivre les statistiques CloudWatch.
-
Dans la zone Entrée, ajoutez les JSON données suivantes comme entrée d'exécution.
{ "data": { "firstname": "Jane", "lastname": "Doe", "identity": { "email": "jdoe@example.com", "ssn": "123-45-6789" }, "address": { "street": "123 Main St", "city": "Columbus", "state": "OH", "zip": "43219" } } }
-
Choisissez Start execution (Démarrer l'exécution).
-
L'exécution de la machine à états entraîne une erreur car vous n'avez pas spécifié les parties de l'entrée d'exécution que les fonctions
check-identity
etcheck-address
Lambda doivent utiliser pour effectuer la vérification d'identité et d'adresse requise. -
Passez à l'étape 3 de ce didacticiel pour corriger l'erreur.
Étape 3 : utiliser le InputPath
filtre pour sélectionner des parties spécifiques d'une entrée d'exécution
-
Sur la page Détails de l'exécution, choisissez Modifier la machine à états.
-
Pour vérifier l'identité du demandeur telle que mentionnée dans l'entrée d'exécution fournie dansÉtape 2 : Exécuter la machine d'état, modifiez la définition de la tâche de vérification de l'identité comme suit :
... { "StartAt": "Verify identity", "States": { "Verify identity": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "InputPath": "$.data.identity", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:check-identity:$LATEST" }, "End": true } } } ...
Par conséquent, les JSON données suivantes deviennent disponibles en entrée pour la
check-identity
fonction.{ "email": "jdoe@example.com", "ssn": "123-45-6789" }
-
Pour vérifier l'adresse du candidat telle qu'elle est mentionnée dans l'entrée d'exécution, modifiez la définition de la
Verify address
tâche comme suit :... { "StartAt": "Verify address", "States": { "Verify address": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "InputPath": "$.data.address", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-1:123456789012:function:check-address:$LATEST" }, "End": true } } } ...
Par conséquent, les JSON données suivantes deviennent disponibles en entrée pour la
check-address
fonction.{ "street": "123 Main St", "city": "Columbus", "state": "OH", "zip": "43219" }
-
Choisissez Start execution (Démarrer l'exécution). L'exécution de la machine d'état se termine désormais avec succès.
Manipuler l'entrée sélectionnée à l'aide du filtre Paramètres
Bien que le InputPath
filtre vous aide à limiter l'JSONentrée brute que vous fournissez, vous pouvez utiliser le Parameters
filtre pour transmettre une collection de paires clé-valeur en entrée. Ces paires clé-valeur peuvent être soit des valeurs statiques que vous définissez dans la définition de votre machine à états, soit des valeurs sélectionnées à partir de l'entrée brute à l'aide de. InputPath
Dans vos flux de travail, Parameters
sont appliqués aprèsInputPath
. Parameters
vous aident à spécifier comment la tâche sous-jacente accepte sa charge utile d'entrée. Par exemple, si la fonction check-address
Lambda accepte un paramètre de chaîne comme entrée au lieu des JSON données, vous pouvez utiliser le Parameters
filtre pour transformer l'entrée.
Dans l'exemple suivant, le Parameters
filtre reçoit l'entrée que vous avez sélectionnée InputPath
à l'aide de in Étape 3 : utiliser le InputPath filtre pour sélectionner des parties spécifiques d'une entrée d'exécution et applique la States.Format
fonction intrinsèque aux éléments d'entrée pour créer une chaîne appeléeaddressString
. Les fonctions intrinsèques vous aident à effectuer des opérations de traitement de données de base sur une entrée donnée. Pour de plus amples informations, veuillez consulter Fonctions intrinsèques dans les workflows Amazon States Language for Step Functions.
"Parameters": { "addressString.$": "States.Format('{}. {}, {} - {}', $.street, $.city, $.state, $.zip)" }
Par conséquent, la chaîne suivante est créée et fournie à la fonction check-address
Lambda en entrée.
{ "addressString": "123 Main St. Columbus, OH - 43219" }
Configurer la sortie à l'aide des OutputPath filtres ResultSelector ResultPath, et
Lorsque la fonction check-address
Lambda est invoquée dans la machine d'WorkflowInputOutputétat, la fonction renvoie une charge utile de sortie après avoir effectué la vérification de l'adresse. Sur la page Détails de l'exécution, choisissez l'étape Vérifier l'adresse et affichez la charge utile de sortie dans le résultat de la tâche dans le Détails de l'étape volet.
{ "ExecutedVersion": "$LATEST", "Payload": { "statusCode": 200, "body": "{\"approved\":true,\"message\":\"identity validation passed\"}" }, "SdkHttpMetadata": { "AllHttpHeaders": { "X-Amz-Executed-Version": [ "$LATEST" ], ... ... "StatusCode": 200 }
En utilisant ResultSelector
Si vous devez fournir le résultat des vérifications d'identité et d'adresse aux états suivants de votre flux de travail, vous pouvez sélectionner le nœud Payload.body dans la sortie JSON et utiliser la fonction StringToJson intrinsèque du ResultSelector
filtre pour formater les données selon les besoins.
ResultSelector
sélectionne ce qui est nécessaire dans le résultat de la tâche. Dans l'exemple suivant, ResultSelector
prend la chaîne dans $.payload.body, applique la fonction States.StringToJson
intrinsèque pour convertir la chaîne en JSON et place le résultat JSON dans le nœud d'identité.
"ResultSelector": { "identity.$": "States.StringToJson($.Payload.body)" }
Par conséquent, les JSON données suivantes sont créées.
{ "identity": { "approved": true, "message": "Identity validation passed" } }
Lorsque vous utilisez ces filtres d'entrée et de sortie, vous risquez de rencontrer des erreurs d'exécution dues à des JSONpath expressions non valides.
En utilisant ResultPath
Vous pouvez spécifier un emplacement dans la charge utile d'entrée initiale pour enregistrer le résultat du traitement des tâches d'un État à l'aide du ResultPath
champ. Si vous ne le spécifiez pasResultPath
, sa valeur par défaut est$
, ce qui entraîne le remplacement de la charge utile d'entrée initiale par le résultat brut de la tâche. Si vous spécifiez ResultPath
commenull
, le résultat brut est supprimé et la charge utile d'entrée initiale devient la sortie effective.
Si vous appliquez le ResultPath
champ aux JSON données créées à l'aide du ResultSelector
champ, le résultat de la tâche est ajouté dans le nœud de résultats de la charge utile d'entrée, comme indiqué dans l'exemple suivant :
{
"data": {
"firstname": "Jane",
"lastname": "Doe",
"identity": {
"email": "jdoe@example.com",
"ssn": "123-45-6789"
},
"address": {
"street": "123 Main St",
"city": "Columbus",
"state": "OH",
"zip": "43219"
},
"results": {
"identity": {
"approved": true
}
}
}
En utilisant OutputPath
Vous pouvez sélectionner une partie de la sortie d'état après l'application de ResultPath
pour passer à l'état suivant. Avec cette approche, vous pouvez filtrer les informations indésirables et ne transmettre que la partie JSON dont vous avez besoin.
Dans l'exemple suivant, le OutputPath
champ enregistre la sortie d'état dans le nœud de résultats :"OutputPath": "$.results"
. Par conséquent, le résultat final de l'état, que vous pouvez passer à l'état suivant, est le suivant :
{
"addressResult": {
"approved": true,
"message": "address validation passed"
},
"identityResult": {
"approved": true,
"message": "identity validation passed"
}
}
Utilisation des fonctionnalités de console pour visualiser les flux de données d'entrée et de sortie
Vous pouvez visualiser le flux de données d'entrée et de sortie entre les états de vos flux de travail à l'aide du simulateur de flux de données
Manipulez l'entrée sélectionnée à l'aide du champ Paramètres
Bien que le InputPath
champ vous aide à limiter les JSON entrées brutes que vous fournissez, vous pouvez utiliser le Parameters
champ pour transmettre une collection de paires clé-valeur en entrée. Ces paires clé-valeur peuvent être soit des valeurs statiques que vous définissez dans la définition de votre machine à états, soit des valeurs sélectionnées à partir de l'entrée brute à l'aide de. InputPath
Dans vos flux de travail, Parameters
sont appliqués aprèsInputPath
. Parameters
vous aident à spécifier comment la tâche sous-jacente accepte sa charge utile d'entrée. Par exemple, imaginez que la fonction check-address
Lambda accepte un paramètre de chaîne en entrée au lieu des JSON données, vous pouvez utiliser le Parameters
champ pour transformer l'entrée.
Dans l'exemple suivant, le Parameters
champ reçoit l'entrée que vous avez sélectionnée InputPath
dans la Sélectionnez des parties spécifiques de l'entrée brute à l'aide du InputPath filtre section et applique la States.Format
fonction intrinsèque aux éléments d'entrée pour créer une chaîne appeléeaddressString
. Les fonctions intrinsèques vous aident à effectuer des opérations de traitement de données de base sur une entrée donnée. Pour plus d'informations, consultez la section Fonctions intrinsèques.
"Parameters": { "addressString.$": "States.Format('{}. {}, {} - {}', $.street, $.city, $.state, $.zip)" }
Par conséquent, la chaîne suivante est créée et est fournie à la fonction Lambda d'adresse de vérification en entrée.
Note
Si vous mettez à jour votre entrée à l'aide de cet exemple et que vous exécutez la machine à états, elle renvoie une erreur car la fonction Lambda n'accepte pas l'entrée dans le format mis à jour.
{ "addressString.$": "123 Main St. Columbus, OH - 43219" }
Étapes suivantes
Dans la dernière rubriqueErreurs de débogage, vous allez apprendre à corriger les erreurs dans vos flux de travail Step Functions.