Questo documento descrive come creare flussi di lavoro basati su eventi attivati da modifiche dello stato nei job Dataflow.
Ad esempio, il workflow potrebbe:
- Invia un avviso a un tecnico di turno se un job critico non va a buon fine.
- Notifica agli utenti il completamento di un job batch o avvia un altro job Dataflow.
- Esegui la pulizia delle risorse utilizzate da un job, ad esempio i bucket Cloud Storage.
Panoramica
Eventarc è un servizio Google Cloud che può ascoltare gli eventi provenienti da altri servizi e indirizzarli a varie destinazioni.
Quando esegui un job Dataflow, il job passa attraverso vari
stati, ad esempio JOB_STATE_QUEUED, JOB_STATE_RUNNING e JOB_STATE_DONE.
L'integrazione di Dataflow con Eventarc ti consente di attivare un'azione quando un job cambia stato.
Poiché Eventarc è un servizio gestito, non devi eseguire il provisioning o gestire l'infrastruttura sottostante.
Prima di iniziare
- 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.
-
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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enablepermission. Learn how to grant roles. -
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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enablepermission. Learn how to grant roles. - Per inviare un avviso SMS, puoi utilizzare le funzioni Cloud Run per creare un trigger HTTP autonomo.
- Per un workflow più complesso, puoi utilizzare Workflows.
- Se la pipeline Dataflow fa parte di una soluzione più ampia che viene eseguita su Google Kubernetes Engine, il trigger può indirizzare l'evento a un servizio GKE in esecuzione nel cluster.
- Esegui il routing degli eventi Dataflow a Cloud Run
- Instradare gli eventi Dataflow a Google Kubernetes Engine
- Esegui il routing degli eventi Dataflow a Workflows
- Crea un trigger per Cloud Run Functions
Per utilizzare l'API Eventarc, il tuo progetto deve disporre di una quota sufficiente. Inoltre, il account di servizio associato al trigger Eventarc deve disporre delle autorizzazioni appropriate.
Scegliere una destinazione per l'evento
Scegli una destinazione evento per ricevere l'evento. La destinazione determina il passaggio successivo del flusso di lavoro.
Ad esempio:
Per saperne di più su questo stile di architettura, consulta Architetture basate su eventi nella documentazione di Eventarc.
Crea un trigger
Per creare un trigger Eventarc per le modifiche di stato del job Dataflow, consulta uno dei seguenti documenti:
(Facoltativo) Puoi filtrare gli eventi in base all'ID job Dataflow. Ad esempio, puoi selezionare gli ID job che corrispondono a un'espressione regolare. Per ulteriori informazioni, consulta Informazioni sui pattern di percorso.
Elaborare eventi
I dati dell'evento descrivono il job Dataflow al momento dell'attivazione dell'evento. Il payload è simile al tipo di risorsa
Job, con i campi
steps, pipeline_description e transform_name_mapping omessi. Inoltre, a seconda dello stato del job, alcuni campi potrebbero non essere presenti.
Di seguito è riportato un esempio di 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"
}
Per saperne di più sugli stati dei job, consulta i seguenti argomenti: