Déclencher un workflow à l'aide d'événements ou de messages Pub/Sub

Vous pouvez utiliser un déclencheur Eventarc pour exécuter un workflow à la suite d'un événement ou d'un ensemble d'événements. Les événements sont acheminés depuis un fournisseur d'événements vers les destinataires concernés.

Eventarc fournit des événements au destinataire d'événements au format CloudEvents via une requête HTTP. Le service Workflows convertit l'événement en objet JSON (conformément à la spécification CloudEvents) et le transmet dans l'exécution du workflow en tant qu'argument d'exécution du workflow.

L'exécution de votre workflow est déclenchée:

  • Lorsqu'un journal d'audit est créé correspondant aux critères de filtre du déclencheur. Par exemple, consultez ce guide de démarrage rapide dans lequel vous déclenchez des workflows avec des événements provenant de BigQuery à l'aide de Cloud Audit Logging.
  • En réponse à des événements directs tels qu'une mise à jour d'un bucket Cloud Storage ou une mise à jour d'un modèle Firebase Remote Config. Par exemple, consultez ce guide de démarrage rapide pour déclencher des workflows avec des événements directs à partir de Cloud Storage.
  • Par messages publiés dans un sujet Pub/Sub : Par exemple, consultez ce guide de démarrage rapide dans lequel vous déclenchez des workflows avec des messages Pub/Sub.

Veuillez noter les points suivants :

  • Les événements sont considérés comme diffusés dès le démarrage de l'exécution des workflows, et l'exécution réelle a lieu de façon asynchrone dans les services Workflows.

  • Les exécutions déclenchées par des événements ne font pas l'objet de nouvelles tentatives si l'exécution du workflow démarre, mais échoue ultérieurement. Pour en savoir plus, consultez la règle concernant les nouvelles tentatives d'événement.

  • Lorsque vous utilisez Workflows comme destination pour un déclencheur Eventarc, les événements supérieurs à la taille maximale de l'argument Workflows ne déclenchent pas les exécutions de workflow. Pour plus d'informations, consultez la section Quotas et limites.

Créer un déclencheur à l'aide de Google Cloud CLI

Vous pouvez créer un déclencheur en exécutant une commande gcloud eventarc triggers create, associée aux options obligatoires et facultatives. Pour en savoir plus, consultez Créer un déclencheur pour les workflows.

Créer un déclencheur à l'aide de la console

Les étapes suivantes vous expliquent comment créer un déclencheur sur la page Workflows de Google Cloud Console.

Avant de commencer

  1. Activer les API Eventarc and Pub/Sub.

    Activer les API

  2. Créez un compte de service afin qu'Eventarc puisse envoyer des requêtes à l'API Workflows:

    1. Dans Cloud Console, accédez à la page Comptes de service.
      Accéder aux comptes de service

    2. Sélectionnez un projet, puis cliquez sur Créer un compte de service.

    3. Dans le champ Nom du compte de service, saisissez un nom compris entre 6 et 30 caractères.

      Il peut contenir des caractères alphanumériques en minuscules et des tirets. Une fois le compte de service créé, vous ne pouvez pas en modifier le nom.

    4. Cliquez sur Créer et continuer.

    5. Attribuez au nouveau compte de service le rôle workflows.invoker de sorte qu'il soit autorisé à déclencher votre workflow. Dans la liste Sélectionnez un rôle, sélectionnez Workflows > Demandeur de workflows.

      Si vous développez une application en production, accordez toujours les rôles les moins permissifs possibles. Pour en savoir plus, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

    6. Cliquez sur OK.

  3. Pour permettre au compte principal d'exécuter les commandes Eventarc, vous pouvez lui attribuer un rôle permettant d'agir en tant que compte de service IAM (Identity and Access Management), en attribuant un rôle permettant au compte principal d'emprunter l'identité du compte de service.

Configurer le déclencheur

  1. Si vous ne souhaitez pas encore déclencher de workflow, créez-en un.

  2. Dans Cloud Console, accédez à la page Workflows :
    Accéder à Workflows

  3. Sur la page "Workflows", sélectionnez un workflow pour accéder à sa page d'informations.

  4. Sur la page Détails du workflow, cliquez sur Modifier.

  5. Sur la page Modifier le workflow, sélectionnez Ajouter un déclencheur > Événement.

    Le volet Eventarc trigger (Déclencheur d'événement) s'ouvre.

  6. Saisissez un nom de déclencheur.

    Il s'agit de l'ID du déclencheur, qui doit commencer par une lettre. Il peut contenir jusqu'à 63 lettres minuscules, chiffres ou traits d'union.

  7. Sélectionnez un fournisseur d'événements.

    Il s'agit du service Google Cloud qui est la source des événements. Par exemple, sélectionnez BigQuery.

  8. Sélectionnez un Événement.

    • Événements personnalisés : s'applique à un fournisseur d'événements Cloud Pub/Sub
    • Événements directs : ne s'applique qu'à certains fournisseurs d'événements
    • via Cloud Audit Logs : s'applique à tous les fournisseurs d'événements

    Personnalisé

    Les requêtes adressées à votre service sont déclenchées lorsqu'un message est publié dans un sujet Pub/Sub. Ceci s'applique à un fournisseur d'événements Cloud Pub/Sub.

    1. Dans les événements répertoriés sous Personnalisé, sélectionnez Sujet Cloud Pub/Sub.

    2. Sélectionnez un sujet existant ou acceptez la valeur par défaut Aucun afin qu'un nouveau sujet soit créé pour le déclencheur.

      Le sujet Pub/Sub existant doit se trouver dans le même projet que le déclencheur.

      Par défaut, les abonnements Pub/Sub créés pour Eventarc persistent, quelle que soit l'activité, et n'expirent pas. Pour modifier la durée d'inactivité, consultez la section Gérer les abonnements.

      Il est recommandé de ne pas réutiliser le sujet Pub/Sub créé par un déclencheur, car la suppression d'un déclencheur Eventarc supprime également les sujets Pub/Sub créés par ce déclencheur.

    3. Sélectionnez une Région.

      Les déclencheurs Pub/Sub pour Eventarc ne sont disponibles que dans les emplacements comprenant une seule région. Vous ne pouvez pas créer un déclencheur Eventarc global.

    Direct

    Cloud Storage

    Les requêtes adressées à votre service sont déclenchées en réponse à un événement dans un bucket Cloud Storage : création, suppression et archivage d'objets, et mises à jour de métadonnées. Ceci s'applique à un fournisseur d'événements Cloud Storage.

    1. Dans les événements répertoriés sous Direct, sélectionnez l'une des options suivantes :

      • google.cloud.storage.object.v1.archived : l'événement est envoyé lorsqu'une version en ligne d'un objet est archivée ou supprimée. Cet événement est uniquement envoyé pour les buckets avec gestion des versions.
      • google.cloud.storage.object.v1.delete : l'événement est envoyé lorsqu'un objet est définitivement supprimé. En fonction du paramètre de gestion des versions d'objet des buckets, cela signifie :
        • pour les buckets avec gestion des versions, que celui-ci n'est envoyé que lorsqu'une version est définitivement supprimée (mais pas lorsqu'un objet est archivé) ;
        • pour les buckets sans gestion des versions, que celui-ci est envoyé lorsqu'un objet est supprimé ou écrasé.
      • google.cloud.storage.object.v1.finalized : l'événement est envoyé lorsqu'un nouvel objet est créé (ou qu'un objet existant est écrasé et une nouvelle génération de cet objet est créée) dans le bucket
      • google.cloud.storage.object.v1.metadataUpdated : l'événement est envoyé lorsque les métadonnées d'un objet existant sont modifiées.
    2. Spécifiez ou recherchez l'identifiant global unique du bucket Cloud Storage.

      Le bucket Cloud Storage doit se trouver dans le même projet Google Cloud et dans la même région ou emplacement multirégional que le déclencheur Eventarc.

    3. Sélectionnez une Région.

      Les déclencheurs Cloud Storage pour Eventarc sont disponibles dans les emplacements régionaux, birégionaux et multirégionaux. Notez que le bucket Cloud Storage doit se trouver dans le même projet Google Cloud et dans la même région ou emplacement multirégional que le déclencheur Eventarc.

    Les événements sont envoyés via des notifications Pub/Sub issues de Cloud Storage. Configurer trop de notifications enregistrées sur le même bucket peut entraîner le dépassement de la limite de notifications du bucket, comme indiqué par l'erreur Cloud Storage bucket ...: Pub/Sub notification limit reached. Le bucket peut comporter jusqu'à 10 configurations de notification déclenchant un événement spécifique. Consultez la page Quotas et limites pour Cloud Storage afin d'en savoir plus sur les quotas et les limites.

    Firebase Alerts

    Les requêtes adressées à votre service sont déclenchées en réponse à un événement lorsqu'une alerte Firebase est publiée par un service Firebase.

    1. Dans les événements répertoriés sous Direct, sélectionnez google.firebase.firebasealerts.alerts.v1.published.

    2. Dans la liste Région, sélectionnez global (Global).

      Pour en savoir plus, consultez la page Emplacements Eventarc.

    3. Dans la section "Filtres", dans la liste alerttype (Type d'alerte), sélectionnez l'une des options suivantes :

      • appDistribution.newTesterIosDevice : l'événement est envoyé lorsqu'un nouvel appareil iOS est enregistré à partir d'une application donnée.
      • billing.planAutomatedUpdate : l'événement est envoyé lorsque le mode de facturation d'un projet Firebase est automatiquement mis à jour. Par exemple, lorsqu'un forfait est rétrogradé en raison de problèmes de paiement.
      • billing.planUpdate : l'événement est envoyé lorsque le mode de facturation d'un projet Firebase est modifié par un utilisateur. Par exemple, lorsqu'un compte de facturation est associé ou dissocié d'un projet.
      • crashlytics.newAnrIssue : l'événement est envoyé lorsqu'une application rencontre une nouvelle erreur ANR (pas pour les événements ultérieurs identiques).
      • crashlytics.newFatalIssue : l'événement est envoyé lorsqu'une application subit un nouveau plantage fatal (pas pour des événements ultérieurs identiques).
      • crashlytics.newNonfatalIssue : l'événement est envoyé lorsqu'une application rencontre une nouvelle erreur non fatale (et non pour des événements ultérieurs identiques).
      • crashlytics.regression : l'événement est envoyé lorsqu'une application rencontre un plantage pour un problème marqué comme fermé pour une version précédente de l'application.
      • crashlytics.stabilityDigest : l'événement est envoyé lorsqu'il existe une notification concernant les problèmes les plus courants dans Crashlytics.
      • crashlytics.velocity : événement envoyé lorsqu'un seul problème est responsable du plantage d'un grand nombre de sessions d'application.
    4. Vous pouvez éventuellement filtrer les événements pour un ID d'application Firebase spécifique. Cliquez sur Ajouter un filtre et spécifiez l'ID de l'application.

      Ce doit être une correspondance exacte.

    Firebase Remote Config

    Les requêtes adressées à votre service sont déclenchées en réponse à un événement lorsqu'un modèle Remote Config est mis à jour.

    1. Dans les événements répertoriés sous Direct, sélectionnez google.firebase.remoteconfig.remoteConfig.v1.updated.

    2. Dans la liste Région, sélectionnez global (Global).

      Pour en savoir plus, consultez la page Emplacements Eventarc.

    Firebase Test Lab

    Les requêtes adressées à votre service sont déclenchées en réponse à un événement à la fin d'une évaluation TestMatrix.

    1. Dans les événements répertoriés sous Direct, sélectionnez google.firebase.testlab.testMatrix.v1.completed.

    2. Dans la liste Région, sélectionnez global (Global).

      Pour en savoir plus, consultez la page Emplacements Eventarc.

    via les journaux d'audit Cloud

    Les requêtes adressées à votre service sont déclenchées lorsqu'un journal d'audit créé correspond aux critères de filtre du déclencheur. Ce type d'événement s'applique à tous les fournisseurs d'événements.

    1. Dans les événements répertoriés sous via Cloud Audit Logs, sélectionnez un événement.

    2. Sélectionnez l'une des options suivantes :

      • Toute ressource : il s'agit de la valeur par défaut qui inclut les ressources créées dynamiquement et bénéficiant d'identifiants générés au moment de la création.

      • Ressource spécifique : vous devez indiquer le nom complet de la ressource.

      • Format de chemin : vous pouvez filtrer les ressources à l'aide d'un format de chemin. Par exemple, saisissez projects/_/buckets/eventarc-bucket/objects/random.txt ou projects/_/buckets/**/r*.txt.

    3. Sélectionnez une Région.

      Les déclencheurs Cloud Audit Logs pour Eventarc sont disponibles dans des régions spécifiques et dans la région "global", mais ils ne sont pas disponibles dans les emplacements birégionaux et multirégionaux. Pour éviter les problèmes de performances et de résidence des données occasionnés par un déclencheur global, il doit correspondre à l'emplacement du service Google Cloud qui génère les événements.

      Si vous spécifiez l'emplacement global, vous recevrez des événements provenant de tous les emplacements correspondant aux filtres d'événements. Par exemple, la création d'un déclencheur global Eventarc vous permet de recevoir des événements provenant de ressources des emplacements multirégionaux EU et US.

    Pour en savoir plus sur la capture des événements déclenchés lorsqu'un journal d'audit est créé et correspond aux critères de filtre du déclencheur, consultez la section Déterminer les filtres d'événements pour Cloud Audit Logs.

  9. Sélectionnez le compte de service qui appelle votre workflow.

    Cela spécifie le compte de service IAM auquel vous avez précédemment accordé le rôle workflows.invoker, afin que le compte soit autorisé à déclencher votre workflow.

  10. Cliquez sur Enregistrer le déclencheur.

    Les déclencheurs Eventarc sont désormais répertoriés dans l'onglet Déclencheurs de la page Détails du workflow.

  11. Pour mettre à jour ou supprimer le déclencheur, vous devez modifier le workflow:

    1. Sur la page Détails du workflow, cliquez sur Modifier.
    2. Dans la section Déclencheurs, recherchez le déclencheur que vous souhaitez mettre à jour ou supprimer.
    3. Cliquez sur Modifier la ressource ou Supprimer la ressource.

L'exécution de votre workflow est désormais déclenchée par les événements qui correspondent aux critères de filtrage de votre déclencheur.

Étapes suivantes