Dopo aver eseguito un flusso di lavoro, puoi accedere ai risultati dell'esecuzione del flusso di lavoro nella console Google Cloud o utilizzando Google Cloud CLI.
Console
Nella console Google Cloud , vai alla pagina Workflow.
Per accedere ai risultati dell'esecuzione di un workflow, fai clic sul nome del workflow per accedere alla pagina Dettagli del workflow.
Per visualizzare i dettagli di una determinata esecuzione, nella scheda Esecuzioni, fai clic sull'ID esecuzione nell'elenco per accedere alla pagina Dettagli esecuzione.
Nella scheda Riepilogo, ogni esecuzione contiene le seguenti informazioni:
- ID esecuzione: l'identificatore univoco dell'esecuzione del workflow.
- Stato di esecuzione: indica lo stato finale del flusso di lavoro, incluso il passaggio del flusso di lavoro corrente o finale.
- Ora di creazione dell'esecuzione: quando è stata avviata l'esecuzione.
- Inizio esecuzione: il momento in cui l'esecuzione ha iniziato a essere eseguita e a eseguire i passaggi.
- Fine esecuzione: quando è terminata l'esecuzione.
- Durata dell'esecuzione: tempo totale trascorso. Questo può essere un'indicazione di errori di rete o problemi di connettività.
- Nome workflow: il nome del workflow.
- Revisione workflow: la revisione corrente al momento dell'esecuzione.
- Livello log di chiamate: il livello di registrazione delle chiamate applicato durante l'esecuzione. Per saperne di più, consulta la sezione Registrazione delle chiamate.
- Input: gli argomenti di runtime passati al workflow, se presenti.
- Output: l'output del workflow. Se l'esecuzione non è riuscita, include l'eccezione che ha causato l'errore. In questo documento, vedi Mappe degli errori di esecuzione.
Per visualizzare la cronologia di esecuzione del workflow come elenco di voci di passaggi, fai clic sulla scheda Passaggi. Per saperne di più, consulta Visualizzare la cronologia dei passaggi di esecuzione.
Per visualizzare i log di un'esecuzione del workflow, fai clic sulla scheda Log.
Per filtrare i log di esecuzione, utilizza il campo Filtra nella parte superiore della tabella. Ad esempio, per visualizzare solo i tentativi di esecuzione non riusciti, inserisci
failednel campo di testo del filtro.
gcloud
Per visualizzare un elenco completo delle esecuzioni di un flusso di lavoro, inserisci questo comando:
gcloud workflows executions list WORKFLOW_NAMESostituisci
WORKFLOW_NAMEcon il nome del workflow. Copia l'ID esecuzione dell'esecuzione che ti interessa.Per visualizzare i log di esecuzione di un flusso di lavoro, inserisci questo comando:
gcloud workflows executions describe \ --workflow=WORKFLOW_NAME \ EXECUTION_IDSostituisci quanto segue:
WORKFLOW_NAME: il nome del workflowEXECUTION_ID: l'ID univoco dell'esecuzione
Questo comando restituisce un output simile al seguente:
L'output contiene le seguenti informazioni: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: gli argomenti runtime passati al workflow, se presentiendTime: quando è terminata l'esecuzioneerror: il messaggio di errore generato come parte dell'eccezione che ha causato l'errore di esecuzionename: il nome completo dell'esecuzione, inclusi il nome del progetto, la posizione del workflow, il nome del workflow e l'ID esecuzionestartTime: quando è iniziata l'esecuzionestate: indica lo stato finale del workflowstatus: il passaggio del workflow attuale o finale dell'esecuzioneworkflowRevisionID: la revisione corrente al momento dell'esecuzione
Mappe degli errori di esecuzione
Quando un flusso di lavoro genera un errore durante l'esecuzione che non viene rilevato in un blocco
try/except, l'esecuzione non va a buon fine e viene restituita una mappa degli errori (un dizionario JSON) che descrive l'errore.
Gli errori generati durante l'esecuzione del flusso di lavoro contengono tag per aiutarti a identificare la causa dell'errore. Ad esempio, l'errore restituito da un connettore può avere due
chiavi (tags e message) simili alle seguenti:
{'tags': ['SystemError'], 'message': 'an error has occurred'}
Può esserci più di un tag. Per verificare la presenza di un tag specifico, puoi utilizzare un'espressione. Ad esempio:
${'SystemError' in e.tags}
Dati di errore di accesso restituiti come stringa
Alcuni connettori e API HTTP serializzeranno gli errori come stringhe prima di restituirli. Puoi utilizzare le funzioni della libreria standard per ripristinare un payload all'errore originale. Ad esempio, per convertire una stringa di errore in una mappa, puoi utilizzare le funzioni json.decode e text.encode:
json.decode(text.encode(ERROR_FROM_API))
Tag di errore
La tabella seguente descrive il significato dei diversi tag di errore.
| Tag | Descrizione |
|---|---|
| AuthError | Generato quando la generazione delle credenziali per una richiesta HTTP non va a buon fine. |
| ConnectionError | Generato quando una connessione viene stabilita correttamente con l'endpoint, ma si verifica un problema con la connessione durante il trasferimento dei dati. La connessione viene interrotta prima che venga ricevuta una risposta completa e un messaggio potrebbe non essere stato recapitato all'endpoint. I nuovi tentativi potrebbero non essere idempotenti. |
| ConnectionFailedError | Generato quando non viene stabilita una connessione con l'endpoint API, ad esempio a causa di un nome di dominio errato, problemi di risoluzione DNS o altri problemi di rete. I tentativi sono idempotenti. |
| HttpError | Generato quando una
richiesta HTTP non riesce
con uno stato di errore HTTP. Quando viene generata questa eccezione, la
risposta è una mappa con i seguenti elementi:
|
| IndexError | Generato quando l'indice di una sequenza è un numero intero fuori intervallo. |
| KeyError | Generato quando una chiave di mappatura non viene trovata nel set di chiavi esistenti. |
| OperationError | Generato al termine di un'operazione a lunga esecuzione senza esito positivo. |
| ParallelNestingError | Generato quando viene superata la profondità massima di annidamento dei passaggi paralleli. |
| RecursionError | Generato quando l'interprete rileva che è stata superata la profondità massima dello stack di chiamate. |
| ResourceLimitError | Generato quando viene esaurito un limite di risorse. Se generato internamente, questo tipo di errore non può essere rilevato e causa l'interruzione immediata dell'esecuzione. |
| ResponseTypeError | Generato quando un'operazione a lunga esecuzione restituisce una risposta del tipo sbagliato. |
| SystemError | Generato quando l'interprete rileva un errore interno. |
| TimeoutError | Generato quando una funzione di sistema raggiunge il timeout a livello di sistema. |
| TypeError | Generato quando un'operazione o una funzione viene applicata a un oggetto di tipo incompatibile. Il valore associato è una stringa che fornisce dettagli sulla mancata corrispondenza del tipo. |
| UnhandledBranchError | Generato quando uno o più rami o iterazioni rilevano un errore di runtime non gestito fino a un numero massimo. |
| ValueError | Generato quando un'operazione o una funzione riceve un argomento con il
tipo corretto ma un valore errato e la situazione non è descritta
da un'eccezione più precisa, ad esempio IndexError. |
| ZeroDivisionError | Generato quando il secondo argomento di un'operazione di divisione o modulo è zero. Il valore associato è una stringa che indica il tipo di operandi e l'operazione. |
Puoi anche generare errori personalizzati
utilizzando la sintassi raise.
Passaggi successivi
- Panoramica del debug
- Problemi noti di Workflow
- Inviare i log di esecuzione a Cloud Logging
- Risolvi i problemi