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.
Erreurs de débogage dans la console Step Functions
Dans la rubrique précédenteConfiguration de l'entrée et de la sortie, vous avez appris à filtrer et à manipuler des données. Dans la configuration de votre machine à états et dans la sélection des données, vous pouvez rencontrer des erreurs. Dans cette dernière rubrique, vous découvrirez comment déboguer les erreurs d'exécution à l'aide de la console Step Functions.
Vous pouvez rencontrer des erreurs d'exécution, telles que :
Un JSON chemin non valide pour
Variable
champ dans l'Choice
État.Problème de définition de la machine à états, tel qu'aucune règle correspondante définie pour un
Choice
état.Expressions de JSON chemin non valides lors de l'application de filtres pour manipuler les entrées et les sorties.
Échec des tâches dû à une exception de fonction Lambda.
IAMerreurs d'autorisation.
Astuce
Pour des options supplémentaires de gestion des erreurs, consultezGestion des erreurs dans les flux de travail Step Functions.
Débogage du chemin non valide (erreur d'état du choix du chemin)
Lorsque vous spécifiez un JSON chemin incorrect ou insoluble dans le champ Variable de l'Choice
état ou que vous ne définissez pas de règle correspondante dans Choice
l'état, vous recevez une erreur lors de l'exécution de votre flux de travail.
Pour illustrer l'erreur de chemin non valide, ce didacticiel introduit une erreur d'Choice
état dans votre flux de travail. Vous allez utiliser la machine à CreditCardWorkflowétats et modifier sa définition pour introduire l'erreur.
Ouvrez la console Step Functions, puis choisissez la machine à CreditCardWorkflowétats.
Choisissez Modifier pour modifier la définition de la machine à états. Apportez la modification mise en évidence dans le code suivant à la définition de votre machine à états.
{ "Comment": "A description of my state machine", "StartAt": "Get credit limit", "States": { "Get credit limit": { ... ... }, "Credit applied >= 5000?": { "Type": "Choice", "Choices": [ { "Variable": "$.Payload", "NumericLessThan": 5000, "Next": "Auto-approve limit" }, { "Variable": "$.Payload", "NumericGreaterThanEquals": 5000, "Next": "Wait for human approval" } ], "Default": "Wait for human approval" }, ... ... } }
Choisissez Enregistrer, puis cliquez sur Enregistrer quand même.
Lancez la machine d'état.
Sur la page Détails de l'exécution de votre exécution par machine à états, effectuez l'une des opérations suivantes :
Choisissez Cause dans le message d'erreur pour afficher la raison de l'échec de l'exécution.
Choisissez Afficher le détail de l'étape dans le message d'erreur pour afficher l'étape à l'origine de l'erreur.
Dans l'onglet Entrée et sortie de la section Détails de l'étape, cliquez sur le bouton de bascule d'affichage avancé pour voir le chemin de transfert des données d'entrée et de sortie pour un état sélectionné.
En mode graphique, assurez-vous que le crédit appliqué est supérieur ou égal à 5000 ? est sélectionné et effectuez les opérations suivantes :
Affichez la valeur d'entrée de l'état dans la zone de saisie.
Choisissez l'onglet Définition et notez le JSON chemin spécifié pour le champ Variable.
La valeur d'entrée pour le crédit appliqué est supérieure ou égale à 5000 ? state est une valeur numérique, alors que vous avez spécifié le JSON chemin de la valeur d'entrée sous
$.Payload
la forme. Pendant l'exécution de la machine à états, l'Choice
état ne peut pas résoudre ce JSON chemin car il n'existe pas.
Modifiez la machine à états pour spécifier la valeur du champ variable sous la forme
$
.{ "Comment": "A description of my state machine", "StartAt": "Get credit limit", "States": { "Get credit limit": { ... ... }, "Credit applied >= 5000?": { "Type": "Choice", "Choices": [ { "Variable": "$", "NumericLessThan": 5000, "Next": "Auto-approve limit" }, { "Variable": "$", "NumericGreaterThanEquals": 5000, "Next": "Wait for human approval" } ], "Default": "Wait for human approval" }, ... ... } }
Débogage des erreurs d'expression de JSON chemin lors de l'application de filtres d'entrée et de sortie
Lorsque vous utilisez les filtres d'entrée et de sortie, vous pouvez rencontrer des erreurs d'exécution dues à la spécification d'expressions de JSON chemin non valides.
L'exemple suivant utilise la machine à WorkflowInputOutputétats que vous avez créée dans le didacticiel 5 et illustre un scénario dans lequel vous utilisez le ResultSelector
filtre pour sélectionner des parties de la sortie de la tâche.
Appliquez le
ResultSelector
filtre pour choisir une partie de la sortie de la tâche pour l'étape de vérification de l'identité. Pour ce faire, modifiez la définition de votre machine à états comme suit :{ "StartAt": "Verify identity", "States": { "Verify identity": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:
check-identity
", "Payload": { "email": "jdoe@example.com", "ssn": "123-45-6789" } }, ... ... "ResultSelector": { "identity.$": "$.Payload.body.message" }", "End": true } } }Lancez la machine d'état.
Sur la page Détails de l'exécution de l'exécution de votre machine à états, procédez comme suit :
Choisissez Cause dans le message d'erreur pour afficher la raison de l'échec de l'exécution.
Choisissez Afficher le détail de l'étape dans le message d'erreur pour afficher l'étape à l'origine de l'erreur.
Dans le message d'erreur, notez que le contenu du nœud $.payload.body est une chaîne échappée. JSON L'erreur s'est produite car vous ne pouvez pas faire référence à une chaîne en utilisant la notation du JSON chemin.
Pour faire référence au nœud $.payload.body.Message, procédez comme suit :
Utilisez la fonction
States.StringToJSON
intrinsèque pour convertir d'abord la chaîne en JSON format.Spécifiez le JSON chemin du nœud $.payload.body.Message dans la fonction intrinsèque.
"ResultSelector": { "identity.$":"States.StringToJson($.Payload.body.message)" }
Exécutez à nouveau la machine d'état.
Conclusion et étapes suivantes
Félicitations ! Vous avez atteint la fin de Didacticiel de démarrage Step Functions.
Nettoyage
Maintenant que vous avez terminé la mise en route, il est recommandé de nettoyer (supprimer) toutes les ressources que vous ne souhaitez plus utiliser. Le nettoyage AWS des ressources évite à votre compte d'encourir des frais supplémentaires.