Accedere ai risultati dell'esecuzione del flusso di lavoro

Dopo aver eseguito un flusso di lavoro, puoi accedere ai risultati dell'esecuzione del flusso di lavoro nella console Google Cloud o utilizzando lGoogle Cloud CLI.

Console

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

    Vai a Flussi di lavoro

  2. Per accedere ai risultati di esecuzione di un flusso di lavoro, fai clic sul nome del flusso di lavoro per accedere alla pagina Dettagli del flusso di lavoro.

  3. Per 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 corrente o finale del flusso di lavoro.
    • Esecuzione creata: quando è stata avviata l'esecuzione.
    • Inizio esecuzione: il momento in cui è iniziata l'esecuzione dei passaggi.
    • Fine esecuzione: quando è terminata l'esecuzione.
    • Durata dell'esecuzione: tempo totale trascorso. Ciò può indicare errori di rete o problemi di connettività.
    • Nome del flusso di lavoro: il nome del flusso di lavoro.
    • Revisione del flusso di lavoro: la revisione corrente al momento dell'esecuzione.
    • Livello log di chiamate: il livello di registrazione delle chiamate applicato durante l'esecuzione. Per ulteriori informazioni, consulta la sezione Registrazione delle chiamate.
    • Input: gli eventuali argomenti di runtime passati al flusso di lavoro.
    • Output: l'output del flusso di lavoro. Se l'esecuzione non è riuscita, include l'eccezione che ha causato l'errore. In questo documento, consulta Mappe degli errori di esecuzione.
  5. Per visualizzare la cronologia di esecuzione del flusso di lavoro come elenco di voci di passaggio, fai clic sulla scheda Passaggi. Per ulteriori informazioni, consulta Visualizzare la cronologia dei passaggi di esecuzione.

  6. Per visualizzare i log di un'esecuzione del flusso di lavoro, 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 il seguente comando:

    gcloud workflows executions list WORKFLOW_NAME
    

    Sostituisci WORKFLOW_NAME con il nome del flusso di lavoro. Copia l'ID esecuzione che ti interessa.

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

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

    Sostituisci quanto segue:

    • WORKFLOW_NAME: il nome del flusso di lavoro
    • 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 eventuali argomenti di runtime passati al flusso di lavoro
    • endTime: quando è terminata l'esecuzione
    • error: il messaggio di errore generato nell'ambito dell'eccezione che ha causato il fallimento dell'esecuzione
    • name: il nome completo dell'esecuzione, incluso 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 flusso di lavoro
    • status: il passaggio del flusso di lavoro corrente 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 di errori (un dizionario JSON) che descrive l'errore.

Gli errori generati durante l'esecuzione del flusso di lavoro contengono tag che ti aiutano 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'}

Possono essere presenti più tag. Per verificare la presenza di un tag specifico, puoi utilizzare un'espressione. Ad esempio:

${'SystemError' in e.tags}

Dati relativi agli errori di accesso restituiti come stringa

Alcuni connettori e API HTTP eseguono la serializzazione degli 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 Viene sollevato quando la generazione delle credenziali per una richiesta HTTP non riesce.
ConnectionError Viene generato quando viene stabilita una connessione 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 tentativi di nuovo accesso potrebbero non essere idempotenti.
ConnectionFailedError Viene generato quando non viene stabilita una connessione con l'endpoint dell'API, ad esempio a causa di un nome di dominio errato, problemi di risoluzione DNS o altri problemi di rete. I tentativi di ripetizione sono idempotenti.
HttpError Viene sollevato quando una richiesta HTTP non va a buon fine con uno stato di errore HTTP. Quando viene sollevata 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 di risposta
  • body - corpo della risposta
IndexError Viene sollevato quando un indice di sequenza è un numero intero fuori intervallo.
KeyError Viene sollevato quando una chiave della mappa non viene trovata nell'insieme di chiavi esistenti.
OperationError Viene sollevato quando unoperazione a lunga esecuzione termina senza successo.
ParallelNestingError Viene sollevato quando viene superata la profondità massima in cui è possibile nidificare i passaggi in parallelo.
RecursionError Viene sollevato quando l'interprete rileva che la profondità massima dello stack delle chiamate è stata superata.
ResourceLimitError Viene generato quando viene esaurito un limite di risorse. Se viene generato internamente, questo tipo di errore non può essere rilevato e causa un immediato fallimento dell'esecuzione.
ResponseTypeError Viene sollevato quando un'operazione a lunga esecuzione restituisce una risposta di tipo sbagliato.
SystemError Viene sollevato quando l'interprete trova un errore interno.
TimeoutError Viene generato quando una funzione di sistema scade a livello di sistema.
TypeError Viene sollevato 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 Viene generato quando uno o più rami o iterazioni rilevano un numero massimo di errori di runtime non gestiti.
ValueError Viene generata 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 un IndexError.
ZeroDivisionError Viene sollevata quando il secondo argomento di un'operazione di divisione o modulo è pari a 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