Usar Eventarc para gestionar trabajos de Dataflow

En este documento se describe cómo crear flujos de trabajo basados en eventos que se activan cuando cambia el estado de tus trabajos de Dataflow.

Por ejemplo, tu flujo de trabajo podría:

  • Enviar una alerta a un ingeniero de guardia si falla un trabajo crítico.
  • Notifica a los usuarios cuando se complete una tarea por lotes o inicia otra tarea de Dataflow.
  • Elimina los recursos que usa una tarea, como los segmentos de Cloud Storage.

Información general

Eventarc es un Google Cloud servicio que puede escuchar eventos de otros servicios y enrutarlos a varios destinos.

Cuando ejecutas una tarea de Dataflow, esta pasa por varios estados, como JOB_STATE_QUEUED, JOB_STATE_RUNNING y JOB_STATE_DONE. La integración de Dataflow con Eventarc te permite activar una acción cuando una tarea cambia de estado.

Como Eventarc es un servicio gestionado, no tienes que aprovisionar ni gestionar la infraestructura subyacente.

Antes de empezar

  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 la API Eventarc, tu proyecto debe tener suficiente cuota. Además, la cuenta de servicio asociada al activador de Eventarc debe tener los permisos adecuados.

    Elige un destino para el evento

    Elige un destino de evento para recibir el evento. El destino determina el siguiente paso de tu flujo de trabajo.

    Por ejemplo:

    • Para enviar una alerta por SMS, puedes usar funciones de Cloud Run para crear un activador HTTP independiente.
    • Para un flujo de trabajo más complejo, puedes usar Workflows.
    • Si tu flujo de procesamiento de Dataflow forma parte de una solución más grande que se ejecuta en Google Kubernetes Engine, el activador puede enrutar el evento a un servicio de GKE que se ejecute en tu clúster.

    Para obtener más información sobre este estilo de arquitectura, consulte Arquitecturas basadas en eventos en la documentación de Eventarc.

    Crear activador

    Para crear un activador de Eventarc para los cambios de estado de una tarea de Dataflow, consulta uno de los siguientes documentos:

    También puede filtrar los eventos por ID de tarea de Dataflow. Por ejemplo, puedes seleccionar IDs de tarea que coincidan con una expresión regular. Para obtener más información, consulta Información sobre los patrones de ruta.

    Procesar eventos

    Los datos del evento describen la tarea de Dataflow en el momento en que se activó el evento. La carga útil es similar al tipo de recurso Job, pero sin los campos steps, pipeline_description y transform_name_mapping. Además, en función del estado del trabajo, puede que algunos campos no aparezcan.

    A continuación se muestra un ejemplo de carga útil:

    {
      "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 obtener más información sobre los estados de los trabajos, consulta los siguientes temas:

    Siguientes pasos