Después de ejecutar un flujo de trabajo, puedes acceder a los resultados de la ejecución en la consola de Google Cloud o con Google Cloud CLI.
Console
En la consola de Google Cloud , ve a la página Workflows.
Para acceder a los resultados de la ejecución de un flujo de trabajo, haz clic en su nombre para ir a la página Detalles del flujo de trabajo.
Para obtener detalles sobre una ejecución en particular, en la pestaña Ejecuciones, haz clic en el ID de ejecución de la lista para ir a su página Detalles de la ejecución.
En la pestaña Resumen, cada ejecución tiene la siguiente información:
- ID de ejecución: Es el identificador único de la ejecución del flujo de trabajo.
- Estado de ejecución: Indica el estado final del flujo de trabajo, incluido el paso actual o final del flujo de trabajo.
- Se creó la ejecución: Indica cuándo se inició la ejecución.
- Inicio de ejecución: Indica cuándo comenzó la ejecución y la ejecución de los pasos.
- Execution end: Es la fecha y hora en que finalizó la ejecución.
- Duración de la ejecución: Tiempo total transcurrido. Esto puede indicar errores de red o problemas de conectividad.
- Nombre del flujo de trabajo: Es el nombre del flujo de trabajo.
- Revisión del flujo de trabajo: Es la revisión actual en el momento de la ejecución.
- Nivel de registro de llamadas: Es el nivel de registro de llamadas que se aplica durante la ejecución. Para obtener más información, consulta Registro de llamadas.
- Input: Son los argumentos del entorno de ejecución que se pasan al flujo de trabajo, si corresponde.
- Output: Es el resultado del flujo de trabajo. Si falló la ejecución, incluye la excepción que provocó la falla. En este documento, consulta Mapas de errores de ejecución.
Para ver el historial de ejecución del flujo de trabajo como una lista de entradas de pasos, haz clic en la pestaña Pasos. Para obtener más información, consulta Cómo ver el historial de los pasos de ejecución.
Para ver los registros de la ejecución de un flujo de trabajo, haz clic en la pestaña Registros.
Para filtrar los registros de ejecución, usa el campo Filtro en la parte superior de la tabla. Por ejemplo, para mostrar solo los intentos de ejecución fallidos, ingresa
faileden el campo de texto del filtro.
gcloud
Para ver una lista completa de las ejecuciones de un flujo de trabajo, ingresa el siguiente comando:
gcloud workflows executions list WORKFLOW_NAMEReemplaza
WORKFLOW_NAMEpor el nombre de tu flujo de trabajo. Copia el ID de ejecución de la ejecución que te interesa.Para ver los registros de ejecución de un flujo de trabajo, ingresa el siguiente comando:
gcloud workflows executions describe \ --workflow=WORKFLOW_NAME \ EXECUTION_IDReemplaza lo siguiente:
WORKFLOW_NAME: El nombre del flujo de trabajoEXECUTION_ID: ID único de la ejecución
Este comando muestra un resultado similar al siguiente:
En el resultado, se incluye la siguiente información: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: Argumentos del entorno de ejecución que se pasan al flujo de trabajo, si hay algunoendTime: Cuándo finalizó la ejecuciónerror: Es el mensaje de error que se arroja como parte de la excepción que provocó la falla de la ejecución.name: Es el nombre completo de la ejecución, incluido el nombre del proyecto, la ubicación del flujo de trabajo, el nombre del flujo de trabajo y el ID de ejecución.startTime: Cuándo comenzó la ejecuciónstate: Indica el estado final del flujo de trabajo.status: Es el paso de flujo de trabajo actual o final de la ejecución.workflowRevisionID: Es la revisión actual en el momento de la ejecución.
Mapas de errores de ejecución
Cuando un flujo de trabajo arroja un error durante la ejecución que no se detecta en un bloque try/except, la ejecución falla y se devuelve un mapa de errores (un diccionario JSON) que describe el error.
Los errores que se producen durante la ejecución del flujo de trabajo contienen etiquetas que te ayudan a identificar la causa del error. Por ejemplo, el error que devuelve un conector puede tener dos claves (tags y message) similares a las siguientes:
{'tags': ['SystemError'], 'message': 'an error has occurred'}
Puede haber más de una etiqueta. Para verificar una etiqueta específica, puedes usar una expresión. Por ejemplo:
${'SystemError' in e.tags}
Datos de error de acceso que se muestran como una cadena
Algunos conectores y APIs de HTTP serializarán los errores como cadenas antes de devolverlos. Puedes usar funciones de biblioteca estándar para restablecer una carga útil al error original. Por ejemplo, para convertir una cadena de error en un mapa, puedes usar las funciones json.decode y text.encode:
json.decode(text.encode(ERROR_FROM_API))
Etiquetas de error
En la siguiente tabla, se describe el significado de las diferentes etiquetas de error.
| Etiqueta | Descripción |
|---|---|
| AuthError | Se genera cuando falla la generación de credenciales para una solicitud HTTP. |
| ConnectionError | Se genera cuando se establece correctamente una conexión con el extremo, pero hay un problema con la conexión durante la transferencia de datos. La conexión se cierra antes de que se reciba una respuesta completa, y es posible que no se haya entregado un mensaje al extremo. Es posible que los reintentos no sean idempotentes. |
| ConnectionFailedError | Se genera cuando no se establece una conexión con el extremo de API; por ejemplo, debido a un nombre de dominio incorrecto, problemas de resolución de DNS o algún otro problema de red. Los reintentos son idempotentes. |
| HttpError | Se genera cuando falla una solicitud HTTP con un estado de error HTTP. Cuando se genera esta excepción, la respuesta es un mapa con los siguientes elementos:
|
| IndexError | Se genera cuando el subíndice de una secuencia es un número entero fuera del rango. |
| KeyError | Se genera cuando no se encuentra una clave de mapa en el conjunto de claves existentes. |
| OperationError | Se genera cuando una operación de larga duración finaliza sin éxito. |
| ParallelNestingError | Se genera cuando se supera la profundidad máxima a la que se pueden anidar los pasos paralelos. |
| RecursionError | Se genera cuando el intérprete detecta que se superó la profundidad máxima de la pila de llamadas. |
| ResourceLimitError | Se genera cuando se agota algún límite de recursos. Cuando se genera internamente, este tipo de error no se puede detectar y provoca una falla inmediata en la ejecución. |
| ResponseTypeError | Se genera cuando una operación de larga duración devuelve una respuesta del tipo incorrecto. |
| SystemError | Se genera cuando el intérprete encuentra un error interno. |
| TimeoutError | Se genera cuando una función del sistema agota el tiempo de espera a nivel del sistema. |
| TypeError | Se genera cuando se aplica una operación o función a un objeto de tipo incompatible. El valor asociado es una cadena que brinda detalles sobre la discrepancia de tipo. |
| UnhandledBranchError | Se genera cuando una o más ramas o iteraciones encuentran un error de tiempo de ejecución no controlado hasta una cantidad máxima. |
| ValueError | Se genera cuando una operación o función recibe un argumento que tiene el tipo correcto, pero un valor incorrecto, y la situación no se describe con una excepción más precisa, como IndexError. |
| ZeroDivisionError | Se genera cuando el segundo argumento de una operación de división o módulo es cero. El valor asociado es una cadena que indica el tipo de operandos y la operación. |
También puedes generar errores personalizados con la sintaxis raise.
¿Qué sigue?
- Descripción general de la depuración
- Problemas conocidos de Workflows
- Envía registros de ejecución a Cloud Logging
- Solucionar problemas