Gestion des conditions d'erreur à l'aide d'une machine à états 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.

Gestion des conditions d'erreur à l'aide d'une machine à états Step Functions

Dans ce didacticiel, vous allez créer une machine à AWS Step Functions états avec un États de repli champ. Le Catch champ utilise une AWS Lambda fonction pour répondre selon une logique conditionnelle basée sur le type de message d'erreur. Il s'agit d'une technique appelée gestion des erreurs de fonction.

Pour plus d'informations, consultez AWS Lambda la section Erreurs de fonctionnement dans Node.js dans le manuel du AWS Lambda développeur.

Note

Vous pouvez également créer des machines à états qui réessayent en cas d'expiration du délai d'expiration ou qui sont utilisées Catch pour passer à un état spécifique en cas d'erreur ou de délai d'expiration. Pour accéder à des exemples de ces techniques de gestion des erreurs, consultez Exemples utilisant Retry et utilisant Catch.

Étape 1 : créer une fonction Lambda qui échoue

Utilisez une fonction Lambda pour simuler une condition d'erreur.

Important

Assurez-vous que votre fonction Lambda est enregistrée sous le même AWS compte et Région AWS que votre machine à états.

  1. Ouvrez la AWS Lambda console à l'adresse https://console.aws.amazon.com/lambda/.

  2. Sélectionnez Create function (Créer une fonction).

  3. Choisissez Utiliser un plan, entrez step-functions dans le champ de recherche, puis choisissez l'option Lancer un plan d'erreur personnalisé.

  4. Sous Nom de la fonction, saisissez FailFunction.

  5. Pour Rôle, conservez la sélection par défaut (Créez un nouveau rôle avec des autorisations Lambda de base).

  6. Le code suivant s'affiche dans le volet des codes de fonction Lambda.

    exports.handler = async (event, context) => { function CustomError(message) { this.name = 'CustomError'; this.message = message; } CustomError.prototype = new Error(); throw new CustomError('This is a custom error!'); };

    L'objet context renvoie le message d'erreur This is a custom error!.

  7. Sélectionnez Create function (Créer une fonction).

  8. Une fois votre fonction Lambda créée, copiez le nom de ressource Amazon de la fonction (ARN) affiché dans le coin supérieur droit de la page. Voici un exemple ARN :

    arn:aws:lambda:us-east-1:123456789012:function:FailFunction
  9. Choisissez Deploy (Déployer).

Étape 2 : tester la fonction Lambda

Testez votre fonction Lambda pour voir si elle fonctionne.

  1. Sur la FailFunctionpage, choisissez l'onglet Test, puis sélectionnez Test. Il n'est pas nécessaire de créer un événement de test.

  2. Pour consulter les résultats du test (erreur simulée), sous Résultat de l'exécution, développez Détails.

Étape 3 : Création d'une machine à états avec un champ Catch

Utilisez la console Step Functions pour créer une machine à états qui utilise un État du flux de travail des tâches état avec un Catch champ. Ajoutez une référence à votre fonction Lambda dans l'état Task. La machine à états invoque la fonction Lambda, qui échoue lors de l'exécution. Step Functions réessaie la fonction deux fois en utilisant un décalage exponentiel entre les tentatives.

  1. Ouvrez la console Step Functions et choisissez Create state machine.

  2. Dans la boîte de dialogue Choisir un modèle, sélectionnez Vide.

  3. Choisissez Sélectionner pour ouvrir Workflow Studio dansMode de conception.

  4. Choisissez Code pour ouvrir l'éditeur de code. Dans l'éditeur de code, vous écrivez et modifiez la définition Amazon States Language (ASL) de vos flux de travail.

  5. Collez le code suivant, mais remplacez celui ARN de la fonction Lambda que vous avez créée précédemment dans le Resource champ.

    { "Comment": "A Catch example of the Amazon States Language using an AWS Lambda function", "StartAt": "CreateAccount", "States": { "CreateAccount": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:FailFunction", "Catch": [ { "ErrorEquals": ["CustomError"], "Next": "CustomErrorFallback" }, { "ErrorEquals": ["States.TaskFailed"], "Next": "ReservedTypeFallback" }, { "ErrorEquals": ["States.ALL"], "Next": "CatchAllFallback" } ], "End": true }, "CustomErrorFallback": { "Type": "Pass", "Result": "This is a fallback from a custom Lambda function exception", "End": true }, "ReservedTypeFallback": { "Type": "Pass", "Result": "This is a fallback from a reserved error code", "End": true }, "CatchAllFallback": { "Type": "Pass", "Result": "This is a fallback from any error code", "End": true } } }

    Voici une description de votre machine à états utilisant le langage Amazon States. Elle décrit un seul état Task nommé CreateAccount. Pour plus d'informations, consultez Structure de la machine d'état.

    Pour plus d'informations sur la syntaxe du champ Retry, consultez Exemples de machines à états utilisant Retry et Catch.

    Note

    Les erreurs non gérées dans Lambda sont signalées Lambda.Unknown comme dans le résultat d'erreur. Il s'agit notamment out-of-memory des erreurs et des délais d'expiration des fonctions. Vous pouvez effectuer une correspondance ou States.TaskFailed pour gérer ces erreurs. Lambda.Unknown States.ALL Lorsque Lambda atteint le nombre maximum d'appels, l'erreur est. Lambda.TooManyRequestsException Pour plus d'informations sur Lambda Handled et Unhandled les erreurs, consultez le FunctionError manuel du AWS Lambda développeur.

  6. (Facultatif) Dans leVisualisation de graphe, consultez la visualisation graphique en temps réel de votre flux de travail.

  7. Spécifiez un nom pour votre machine à états. Pour ce faire, cliquez sur l'icône d'édition à côté du nom de la machine à états par défaut de MyStateMachine. Ensuite, dans Configuration de la machine d'état, spécifiez un nom dans le champ Nom de la machine d'état.

    Dans le cadre de ce didacticiel, entrez Catchfailure.

  8. (Facultatif) Dans Configuration de la machine à états, spécifiez d'autres paramètres de flux de travail, tels que le type de machine à états et son rôle d'exécution.

    Pour ce didacticiel, conservez toutes les sélections par défaut dans les paramètres State Machine.

  9. Dans la boîte de dialogue Confirmer la création du rôle, choisissez Confirmer pour continuer.

    Vous pouvez également choisir Afficher les paramètres des rôles pour revenir à la configuration de la machine State.

    Note

    Si vous supprimez le IAM rôle créé par Step Functions, Step Functions ne pourra pas le recréer ultérieurement. De même, si vous modifiez le rôle (par exemple, en supprimant Step Functions des principes de la IAM politique), Step Functions ne pourra pas restaurer ses paramètres d'origine ultérieurement.

Étape 4 : Exécutez la machine d'état

Après avoir créé votre machine d'état, vous pouvez l'exécuter.

  1. Sur la page State machines, choisissez Catchfailure.

  2. Sur la page Catchfailure, choisissez Démarrer l'exécution. La boîte de dialogue Démarrer l'exécution s'affiche.

  3. Dans la boîte de dialogue Démarrer l'exécution, procédez comme suit :

    1. (Facultatif) Pour identifier votre exécution, vous pouvez spécifier un nom ou utiliser le nom d'exécution généré par défaut.

      Note

      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. Étant donné que les noms ne contenant pas de ASCII caractères ne fonctionneront pas avec Amazon CloudWatch, nous vous recommandons de n'utiliser que ASCII des caractères afin de pouvoir suivre les statistiques. CloudWatch

    2. (Facultatif) Dans la zone de saisie, entrez les valeurs d'entrée dans un JSON format permettant d'exécuter votre flux de travail.

    3. Choisissez Start execution (Démarrer l'exécution).

    4. La console Step Functions vous dirige vers une page intitulée avec votre ID d'exécution. Cette page est connue sous le nom de page Détails de l'exécution. Sur cette page, vous pouvez consulter les résultats de l'exécution au fur et à mesure que l'exécution progresse ou une fois celle-ci terminée.

      Pour consulter les résultats de l'exécution, choisissez des états individuels dans la vue graphique, puis choisissez les onglets individuels du Détails de l'étape volet pour afficher les détails de chaque état, y compris les entrées, les sorties et la définition respectivement. Pour plus de détails sur les informations d'exécution que vous pouvez consulter sur la page Détails de l'exécution, voirPage de détails d'exécution — Vue d'ensemble de l'interface.

    Par exemple, pour afficher votre message d'erreur personnalisé, choisissez l'CreateAccountétape dans la vue graphique, puis choisissez l'onglet Sortie.

    Capture d'écran illustrative de la sortie avec un message d'erreur lors de l'exécution.
    Note

    Vous pouvez conserver l'entrée de l'état avec l'erreur, à l'aide de l'option ResultPath. Consultez ResultPath À utiliser pour inclure à la fois une erreur et une entrée dans un Catch.