Ce document explique comment créer des workflows basés sur des événements déclenchés par des changements d'état dans vos jobs Dataflow.
Par exemple, votre workflow peut :
- Envoyer une alerte à un ingénieur d'astreinte en cas d'échec d'un job critique.
- Notifier les utilisateurs lorsqu'un job par lot est terminé, ou démarrer un autre job Dataflow.
- Nettoyer les ressources utilisées par un job, telles que les buckets Cloud Storage.
Présentation
Eventarc est un service Google Cloud qui peut écouter des événements provenant d'autres services et les acheminer vers différentes destinations.
Lorsque vous exécutez un job Dataflow, celui-ci passe par différents états, tels que JOB_STATE_QUEUED, JOB_STATE_RUNNING et JOB_STATE_DONE.
L'intégration de Dataflow à Eventarc vous permet de déclencher une action lorsqu'un job change d'état.
Eventarc étant un service géré, vous n'avez pas besoin de provisionner ou de gérer l'infrastructure sous-jacente.
Avant de commencer
- 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. - Pour envoyer une alerte par SMS, vous pouvez utiliser Cloud Run Functions pour créer un déclencheur HTTP autonome.
- Pour un workflow plus complexe, vous pouvez utiliser Workflows.
- Si votre pipeline Dataflow fait partie d'une solution plus importante qui s'exécute sur Google Kubernetes Engine, le déclencheur peut acheminer l'événement vers un service GKE exécuté dans votre cluster.
- Router des événements Dataflow vers Cloud Run
- Router des événements Dataflow vers Google Kubernetes Engine
- Router des événements Dataflow vers Workflows
- Créer un déclencheur pour les fonctions Cloud Run
Pour utiliser l'API Eventarc, votre projet doit disposer d'un quota suffisant. En outre, le compte de service associé au déclencheur Eventarc doit disposer des autorisations appropriées.
Choisir la destination de l'événement
Choisissez une destination d'événement à laquelle l'événement sera envoyé. La destination détermine l'étape suivante de votre workflow.
Exemple :
Pour plus d'informations sur ce style d'architecture, consultez la section Architectures basées sur des événements dans la documentation Eventarc.
Créer un déclencheur
Pour créer un déclencheur Eventarc lié aux changements d'état des jobs Dataflow, consultez l'un des documents suivants :
Vous pouvez éventuellement filtrer les événements par ID de job Dataflow. Par exemple, vous pouvez sélectionner des ID de job correspondant à une expression régulière. Pour en savoir plus, consultez la page Comprendre les formats de chemin d'accès.
Traiter les événements
Les données d'événement décrivent le job Dataflow au moment où l'événement a été déclenché. La charge utile est semblable au type de ressource Job, avec les champs steps, pipeline_description et transform_name_mapping omis. De plus, en fonction de l'état du job, certains champs peuvent ne pas être présents.
Voici un exemple de charge utile :
{
"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"
}
Pour plus d'informations sur les états des jobs, consultez les rubriques suivantes :