Accedere ai risultati dell'esecuzione del workflow

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

  1. Nella console Google Cloud , vai alla pagina Workflow.

    Vai a Flussi di lavoro

  2. Per accedere ai risultati dell'esecuzione di un workflow, fai clic sul nome del workflow per accedere alla pagina Dettagli del workflow.

  3. Per visualizzare i dettagli di una determinata esecuzione, nella scheda Esecuzioni, fai clic sull'ID esecuzione nell'elenco per accedere alla pagina Dettagli esecuzione.

  4. 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.
  5. 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.

  6. Per visualizzare i log di un'esecuzione del workflow, fai clic sulla scheda Log.

  7. 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 failed nel campo di testo del filtro.

gcloud

  1. Per visualizzare un elenco completo delle esecuzioni di un flusso di lavoro, inserisci questo comando:

    gcloud workflows executions list WORKFLOW_NAME
    

    Sostituisci WORKFLOW_NAME con il nome del workflow. Copia l'ID esecuzione dell'esecuzione che ti interessa.

  2. Per visualizzare i log di esecuzione di un flusso di lavoro, inserisci questo comando:

    gcloud workflows executions describe \
        --workflow=WORKFLOW_NAME \
        EXECUTION_ID
    

    Sostituisci quanto segue:

    • WORKFLOW_NAME: il nome del workflow
    • EXECUTION_ID: l'ID univoco dell'esecuzione

    Questo comando restituisce un output simile al seguente:

    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-ac2
    L'output contiene le seguenti informazioni:

    • argument: gli argomenti runtime passati al workflow, se presenti
    • endTime: quando è terminata l'esecuzione
    • error: il messaggio di errore generato come parte dell'eccezione che ha causato l'errore di esecuzione
    • name: il nome completo dell'esecuzione, inclusi il nome del progetto, la posizione del workflow, il nome del workflow e l'ID esecuzione
    • startTime: quando è iniziata l'esecuzione
    • state: indica lo stato finale del workflow
    • status: il passaggio del workflow attuale o finale dell'esecuzione
    • workflowRevisionID: 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:
  • tags: elenco con stringa HttpError
  • message: messaggio di errore leggibile da una persona
  • code: codice di stato risposta HTTP
  • headers - intestazioni della risposta
  • body: corpo della risposta
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