Use o Eventarc para gerir tarefas do Dataflow

Este documento descreve como criar fluxos de trabalho orientados por eventos acionados por alterações de estado nos seus trabalhos do Dataflow.

Por exemplo, o seu fluxo de trabalho pode:

  • Enviar um alerta a um engenheiro de serviço se uma tarefa crítica falhar.
  • Notificar os utilizadores quando um trabalho em lote estiver concluído ou iniciar outro trabalho do Dataflow.
  • Limpe os recursos usados por uma tarefa, como contentores do Cloud Storage.

Vista geral

O Eventarc é um Google Cloud serviço que pode ouvir eventos de outros serviços e encaminhá-los para vários destinos.

Quando executa uma tarefa do Dataflow, a tarefa passa por vários estados, como JOB_STATE_QUEUED, JOB_STATE_RUNNING e JOB_STATE_DONE. A integração do Dataflow com o Eventarc permite-lhe acionar uma ação quando uma tarefa muda de estado.

Uma vez que o Eventarc é um serviço gerido, não tem de aprovisionar nem gerir a infraestrutura subjacente.

Antes de começar

  1. Sign in to your Google Cloud Platform account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Eventarc APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Eventarc APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  8. Para usar a API Eventarc, o seu projeto tem de ter quota suficiente. Além disso, a conta de serviço associada ao acionador do Eventarc tem de ter as autorizações adequadas.

    Escolha um destino de evento

    Escolha um destino de eventos para receber o evento. O destino determina o passo seguinte no seu fluxo de trabalho.

    Por exemplo:

    • Para enviar um alerta por SMS, pode usar funções do Cloud Run para criar um acionador HTTP autónomo.
    • Para um fluxo de trabalho mais complexo, pode usar os fluxos de trabalho.
    • Se o pipeline do Dataflow fizer parte de uma solução maior que seja executada no Google Kubernetes Engine, o acionador pode encaminhar o evento para um serviço do GKE em execução no seu cluster.

    Para mais informações sobre este estilo de arquitetura, consulte o artigo Arquiteturas orientadas por eventos na documentação do Eventarc.

    Crie um acionador

    Para criar um acionador do Eventarc para alterações de estado do trabalho do Dataflow, consulte um dos seguintes documentos:

    Opcionalmente, pode filtrar eventos por ID da tarefa do Dataflow. Por exemplo, pode selecionar IDs de tarefas que correspondam a uma expressão regular. Para mais informações, consulte o artigo Compreenda os padrões de caminhos.

    Processe eventos

    Os dados de eventos descrevem a tarefa do Dataflow no momento em que o evento foi acionado. A carga útil é semelhante ao tipo de recurso Job, com os campos steps, pipeline_description e transform_name_mapping omitidos. Além disso, consoante o estado da tarefa, alguns campos podem não estar presentes.

    Segue-se um exemplo de payload:

    {
      "id":"2023-04-13_16_28_37-12345678",
      "projectId":"my-project",
      "name":"job1",
      "currentState":"JOB_STATE_QUEUED",
      "currentStateTime":"2023-04-13T23:28:37.437622Z",
      "createTime":"2023-04-13T23:28:37.437622Z",
      "location":"us-central1",
      "startTime":"2023-04-13T23:28:37.437622Z"
    }
    

    Para mais informações sobre os estados das tarefas, consulte os seguintes tópicos:

    O que se segue?