Configuration de l'entrée et de la sortie du flux de travail 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.

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. AvecOutputPath, 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.

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.

É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.

  1. 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.

  2. Configurez les intégrations pour les fonctions check-identity et check-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

  3. Pour Payload, assurez-vous de conserver la sélection par défaut Use state input as payload.

  4. 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 à étatsWorkflowInputOutput.

Étape 2 : Exécuter la machine d'état

  1. Sur la WorkflowInputOutputpage, choisissez Démarrer l'exécution.

  2. (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.

  3. 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" } } }
  4. Choisissez Start execution (Démarrer l'exécution).

  5. 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 et check-address Lambda doivent utiliser pour effectuer la vérification d'identité et d'adresse requise.

  6. 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

  1. Sur la page Détails de l'exécution, choisissez Modifier la machine à états.

  2. 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" }
  3. 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" }
  4. 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. Parametersvous 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.

ResultSelectorsé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 de la console Step Functions ou de l'option d'affichage avancé sur la page Détails de l'exécution.

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. Parametersvous 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.