Acessar os resultados da execução do fluxo de trabalho

Depois de executar um fluxo de trabalho, é possível acessar os resultados da execução no console do Google Cloud ou usando a Google Cloud CLI.

Console

  1. No console do Google Cloud, abra a página Workflows.

    Acessar fluxos de trabalho

  2. Para acessar os resultados da execução de um fluxo de trabalho, clique no nome dele para acessar a página Detalhes do fluxo de trabalho.

  3. Para detalhes sobre uma execução específica, na guia Executions, clique no ID da execução na lista para acessar a página Execution details.

  4. Na guia Resumo, cada execução tem as seguintes informações:

    • ID da execução: o identificador exclusivo da execução do fluxo de trabalho.
    • Estado de execução: indica o estado final do fluxo de trabalho, incluindo a etapa atual ou final do fluxo de trabalho.
    • Execução criada: quando a execução foi iniciada.
    • Início da execução: quando a execução começou a ser executada e a executar etapas.
    • Fim da execução: quando a execução foi finalizada.
    • Duração da execução: tempo total decorrido. Isso pode ser uma indicação de erros de rede ou problemas de conectividade.
    • Nome do fluxo de trabalho: o nome do fluxo de trabalho.
    • Revisão do fluxo de trabalho: a revisão atual no momento da execução.
    • Nível de registro de chamadas: o nível de registro de chamadas aplicado durante a execução. Para mais informações, consulte Registro de chamadas.
    • Entrada: os argumentos de ambiente de execução transmitidos para o fluxo de trabalho, se houver.
    • Saída: a saída do fluxo de trabalho. Se a execução falhou, inclui a exceção que levou à falha. Neste documento, consulte Mapas de erros de execução.
  5. Para conferir o histórico de execução do fluxo de trabalho como uma lista de entradas de etapas, clique na guia Etapas. Para mais informações, consulte Consultar o histórico das etapas de execução.

  6. Para conferir os registros de uma execução de fluxo de trabalho, clique na guia Registros.

  7. Para filtrar os registros de execução, use o campo Filtro na parte superior da tabela. Por exemplo, para exibir apenas tentativas de execução malsucedidas, insira failed no campo de texto do filtro.

gcloud

  1. Para ver uma lista completa das execuções de um fluxo de trabalho, digite o seguinte comando:

    gcloud workflows executions list WORKFLOW_NAME
    

    Substitua WORKFLOW_NAME pelo nome do fluxo de trabalho. Copie o ID de execução do seu interesse.

  2. Para ver os registros de execução de um fluxo de trabalho, digite o seguinte comando:

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

    Substitua:

    • WORKFLOW_NAME: o nome do fluxo de trabalho
    • EXECUTION_ID: o ID exclusivo da execução

    Esse comando retorna um resultado semelhante a este:

    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
    A saída contém as informações a seguir:

    • argument: os argumentos de ambiente de execução transmitidos para o fluxo de trabalho, se houver
    • endTime: quando a execução foi finalizada
    • error: a mensagem de erro gerada como parte da exceção que resultou na falha da execução
    • name: o nome completo da execução, incluindo o nome do projeto, o local do fluxo de trabalho, o nome do fluxo de trabalho e o ID da execução
    • startTime: quando a execução começou
    • state: indica o estado final do fluxo de trabalho
    • status: a etapa atual ou final do fluxo de trabalho da execução
    • workflowRevisionID: a revisão atual no momento da execução

Mapas de erros de execução

Quando um fluxo de trabalho gera um erro durante a execução que não é capturado em um bloco try/except, a execução falha e um mapa de erros (um dicionário JSON) que descreve o erro é retornado.

Os erros gerados durante a execução do fluxo de trabalho contêm tags para ajudar a identificar o que causou o erro. Por exemplo, o erro retornado de um conector pode ter duas chaves (tags e message) semelhantes a estas:

{'tags': ['SystemError'], 'message': 'an error has occurred'}

É possível ter mais de uma tag. Para verificar uma tag específica, use uma expressão. Exemplo:

${'SystemError' in e.tags}

Acessar dados de erro retornados como uma string

Alguns conectores e APIs HTTP serializam erros como strings antes de retornar os erros. É possível usar funções de biblioteca padrão para restaurar um payload ao erro original. Por exemplo, para converter uma string de erro em um mapa, use as funções json.decode e text.encode:

json.decode(text.encode(ERROR_FROM_API))

Tags de erro

A tabela a seguir descreve o significado de diferentes tags de erro.

Tag Descrição
AuthError Surge ao gerar credenciais para uma solicitação HTTP.
ConnectionError Gerado quando uma conexão é estabelecida com o endpoint, mas há um problema com a conexão durante a transferência de dados. A conexão é encerrada antes do recebimento de uma resposta completa, e uma mensagem pode não ter sido entregue ao endpoint. As novas tentativas podem não ser idempotentes.
ConnectionFailedError Surge quando uma conexão não é estabelecida com o endpoint de API. Por exemplo, devido a um nome de domínio incorreto, problemas de resolução de DNS ou outros problemas de rede. As novas tentativas são idempotentes.
HttpError Surge quando uma solicitação HTTP falha com um status de erro HTTP. Quando essa exceção é gerada, a resposta é um mapa com os seguintes elementos:
  • tags: lista com a string HttpError
  • message: mensagem de erro legível
  • code: código de status de resposta HTTP
  • headers: cabeçalhos de resposta
  • body: corpo da resposta
IndexError Surge quando um subscrito de sequência é um número inteiro fora do intervalo.
KeyError Surge quando uma chave de mapa não é encontrada no conjunto de chaves atuais.
OperationError Gerado quando uma operação de longa duração é concluída sem sucesso.
ParallelNestingError É gerada quando a profundidade máxima em que as etapas paralelas podem ser aninhadas é excedida.
RecursionError Surge quando o intérprete detecta que a profundidade máxima da pilha de chamadas foi excedida.
ResourceLimitError Surge quando algum limite de recurso é esgotado. Quando gerado internamente, esse tipo de erro não pode ser capturado e causa falha de execução imediata.
ResponseTypeError É gerada quando uma operação de longa duração retorna uma resposta do tipo errado.
SystemError Surge quando o intérprete encontra um erro interno.
TimeoutError Surge quando uma função do sistema atinge o tempo limite no nível do sistema.
TypeError Surge quando uma operação ou função é aplicada a um objeto de tipo incompatível. O valor associado é uma string que fornece detalhes sobre a incompatibilidade de tipos.
UnhandledBranchError É gerada quando uma ou mais ramificações ou iterações encontram um erro de execução não tratado até um número máximo.
ValueError Surge quando uma operação ou função recebe um argumento que tem o tipo correto, mas um valor incorreto, e a situação não é descrita por uma exceção mais precisa, como um IndexError.
ZeroDivisionError Surge quando o segundo argumento de uma divisão ou operação de módulo é zero. O valor associado é uma string que indica o tipo dos operandos e a operação.

Também é possível gerar erros personalizados usando a sintaxe raise.

A seguir