Une fois que vous avez exécuté un workflow, vous pouvez accéder aux résultats de l'exécution du workflow dans la console Google Cloud ou à l'aide de la Google Cloud CLI.
Console
Dans la console Google Cloud, accédez à la page Workflows :
Pour accéder aux résultats d'exécution d'un workflow, cliquez sur le nom du workflow pour accéder à sa page Détails du workflow.
Pour en savoir plus sur une exécution spécifique, dans l'onglet Exécutions, cliquez sur l'ID de l'exécution dans la liste pour accéder à la page Détails de l'exécution.
Dans l'onglet Récapitulatif, chaque exécution comporte les informations suivantes:
- ID d'exécution: identifiant unique de l'exécution du workflow.
- État d'exécution: indique l'état de fin du workflow, y compris l'étape actuelle ou finale du workflow.
- Exécution créée: date de début de l'exécution.
- Début de l'exécution: date de début de l'exécution et de l'exécution des étapes.
- Fin de l'exécution: date de fin de l'exécution.
- Durée d'exécution: durée totale écoulée. Cela peut indiquer des erreurs réseau ou des problèmes de connectivité.
- Nom du workflow: nom du workflow.
- Révision du workflow: révision actuelle au moment de l'exécution.
- Niveau de journalisation des appels: niveau de journalisation des appels appliqué lors de l'exécution. Pour en savoir plus, consultez la section Journalisation des appels.
- Entrée: arguments d'exécution transmis au workflow, le cas échéant.
- Sortie: sortie du workflow. Si l'exécution a échoué, inclut l'exception qui a entraîné l'échec de l'exécution. Dans ce document, consultez la section Cartes des erreurs d'exécution.
Pour afficher l'historique d'exécution du workflow sous forme de liste d'entrées d'étapes, cliquez sur l'onglet Étapes. Pour en savoir plus, consultez la section Afficher l'historique des étapes d'exécution.
Pour afficher les journaux d'une exécution de workflow, cliquez sur l'onglet Journaux.
Pour filtrer les journaux d'exécution, utilisez le champ Filtrer en haut du tableau. Par exemple, pour n'afficher que les tentatives d'exécution ayant échoué, saisissez
failed
dans le champ de texte du filtre.
gcloud
Pour afficher la liste complète des exécutions d'un workflow, saisissez la commande suivante:
gcloud workflows executions list WORKFLOW_NAME
Remplacez
WORKFLOW_NAME
par le nom de votre workflow. Copiez l'ID de l'exécution qui vous intéresse.Pour afficher les journaux d'exécution d'un workflow, saisissez la commande suivante:
gcloud workflows executions describe \ --workflow=WORKFLOW_NAME \ EXECUTION_ID
Remplacez les éléments suivants :
WORKFLOW_NAME
: nom du workflowEXECUTION_ID
: ID unique de l'exécution
La commande renvoie un résultat semblable à celui-ci :
argument: 'null' endTime: '2022-07-19T12:40:07.070039707Z' error: context: |- The argument of 'in' must be a dict or an array; got: null in step "checkSearchTermInInput", routine "main", line: 12 payload: "{"message":"The argument of 'in' must be a dict or an array; got: null"
,"tags":["TypeError"]}" stackTrace: elements: - position: column: '26' length: '24' line: '12' routine: main step: checkSearchTermInInput name: projects/1051295516635/locations/us-central1/workflows/myFirstWorkflow/executions/17ffc89c-0a27-4d2f-8356-e681d949a3d3 startTime: '2022-07-19T12:40:07.024823663Z' state: FAILED status: currentSteps: - routine: main step: checkSearchTermInInput workflowRevisionId: 000001-ac2argument
: arguments d'exécution transmis au workflow, le cas échéantendTime
: date de fin de l'exécutionerror
: message d'erreur généré avec l'exception qui a entraîné l'échec de l'exécution.name
: nom complet de l'exécution, y compris le nom du projet, l'emplacement du workflow, le nom du workflow et l'ID d'exécutionstartTime
: début de l'exécutionstate
: indique l'état de fin du workflow.status
: étape de workflow actuelle ou finale de l'exécutionworkflowRevisionID
: révision actuelle au moment de l'exécution
Cartes des erreurs d'exécution
Lorsqu'un workflow génère une erreur lors de l'exécution qui n'est pas interceptée dans un bloc try/except
, l'exécution échoue et une carte d'erreur (un dictionnaire JSON) décrivant l'erreur est renvoyée.
Les erreurs générées lors de l'exécution du workflow contiennent des tags permettant d'identifier l'origine de l'erreur. Par exemple, l'erreur renvoyée par un connecteur peut avoir deux clés (tags
et message
) semblables à celles-ci:
{'tags': ['SystemError'], 'message': 'an error has occurred'}
Vous pouvez ajouter plusieurs balises. Pour rechercher une balise spécifique, vous pouvez utiliser une expression. Exemple :
${'SystemError' in e.tags}
Données d'erreur d'accès renvoyées sous forme de chaîne
Certains connecteurs et API HTTP sérialisent les erreurs sous forme de chaînes avant de les renvoyer. Vous pouvez utiliser les fonctions de bibliothèque standards pour restaurer une charge utile à l'erreur d'origine. Par exemple, pour convertir une chaîne d'erreur en mappe, vous pouvez utiliser les fonctions json.decode
et text.encode
:
json.decode(text.encode(ERROR_FROM_API))
Balises d'erreur
Le tableau suivant décrit la signification des différents tags d'erreur.
Tag | Description |
---|---|
AuthError | Générée lors de l'échec de la génération d'identifiants pour une requête HTTP. |
ConnectionError | Générée lorsqu'une connexion est établie avec le point de terminaison, mais qu'un problème survient lors du transfert de données. La connexion est interrompue avant la réception d'une réponse complète et un message peut ne pas avoir été envoyé au point de terminaison. Les nouvelles tentatives ne sont pas nécessairement idempotentes. |
ConnectionFailedError | Générée lorsqu'une connexion n'est pas établie avec le point de terminaison de l'API, par exemple en raison d'un nom de domaine incorrect, de problèmes de résolution DNS ou d'autres problèmes de réseau. Les nouvelles tentatives sont idempotentes. |
HttpError | Générée lorsqu'une requête HTTP échoue avec un état d'erreur HTTP. Lorsque cette exception est générée, la réponse est une carte contenant les éléments suivants :
|
IndexError | Générée lorsqu'un indice de séquence est un entier hors de la plage. |
KeyError | Générée lorsqu'une clé de mappage est introuvable dans l'ensemble de clés existantes. |
OperationError | Généré lorsqu'une opération de longue durée se termine sans succès. |
ParallelNestingError | Générée lorsque la profondeur maximale à laquelle les étapes parallèles peuvent être imbriquées est dépassée. |
RecursionError | Générée lorsque l'interpréteur détecte que la profondeur maximale de la pile d'appels est dépassée. |
ResourceLimitError | Générée lorsque la limite d'une ressource est épuisée. Lorsqu'il est généré en interne, ce type d'erreur ne peut pas être intercepté et entraîne une défaillance immédiate de l'exécution. |
ResponseTypeError | Générée lorsqu'une opération de longue durée renvoie une réponse de mauvais type. |
SystemError | Générée lorsque l'interpréteur détecte une erreur interne. |
TimeoutError | Générée lorsqu'une fonction système expire au niveau du système. |
TypeError | Générée lorsqu'une opération ou une fonction est appliquée à un objet de type incompatible. La valeur associée est une chaîne qui donne des détails sur l'incohérence de type. |
UnhandledBranchError | Générée lorsqu'une ou plusieurs branches ou itérations rencontrent une erreur d'exécution non gérée jusqu'à un nombre maximal. |
ValueError | Générée lorsqu'une opération ou une fonction reçoit un argument dont le type est correct, mais d'une valeur incorrecte, et que la situation n'est pas décrite par une exception plus précise, telle que IndexError . |
ZeroDivisionError | Générée lorsque le deuxième argument d'une opération de division ou de modulo est égale à zéro. La valeur associée est une chaîne indiquant le type des opérandes et de l'opération. |
Vous pouvez également générer des erreurs personnalisées à l'aide de la syntaxe raise
.
Étape suivante
- Présentation du débogage
- Problèmes connus liés à Workflows
- Envoyer des journaux d'exécution à Cloud Logging
- Résoudre les problèmes