Créer un déclencheur pour Cloud Run

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Vous pouvez créer un déclencheur Eventarc afin que votre service Cloud Run reçoive des notifications d'un événement ou d'un ensemble d'événements spécifié. En spécifiant des filtres pour le déclencheur, vous pouvez configurer le routage de l'événement, y compris la source de l'événement et le service Cloud Run cible.

Les requêtes adressées à votre service sont déclenchées par les types d'événements suivants :

Vous pouvez créer des déclencheurs à l'aide de Google Cloud CLI ou de Google Cloud Console.

Certaines étapes de ce document risquent de ne pas fonctionner correctement si votre organisation applique des contraintes à votre environnement Google Cloud. Dans ce cas, vous ne pourrez peut-être pas effectuer des tâches telles que la création d'adresses IP publiques ou de clés de compte de service. Si vous effectuez une requête qui renvoie une erreur concernant des contraintes, consultez la section Développer des applications dans un environnement Google Cloud limité.

Préparer la création d'un déclencheur

Avant de créer un déclencheur, procédez comme suit :

  1. Activer les API :

    gcloud services enable cloudbuild.googleapis.com \
        eventarc.googleapis.com \
        logging.googleapis.com \
        pubsub.googleapis.com \
        run.googleapis.com \
        workflows.googleapis.com
    
  2. Créez un compte de service géré par l'utilisateur si vous n'en avez pas déjà un ou utilisez le compte de service par défaut.

    SERVICE_ACCOUNT=SA_NAME
    gcloud iam service-accounts create ${SERVICE_ACCOUNT}

    Remplacez SA_NAME par le nom du compte de service. Il doit comporter entre 6 et 30 caractères alphanumériques pouvant inclure des minuscules et des tirets. Une fois le compte de service créé, vous ne pouvez pas en modifier le nom.

    Notez que le compte de service Compute Engine par défaut est utilisé dans les exemples de cette page.

  3. Accordez les rôles, autorisations et options Identity and Access Management (IAM) requis pour les appels authentifiés et non authentifiés. Pour en savoir plus, consultez la page Rôles et autorisations Eventarc.

  4. Si vous créez un déclencheur pour un événement direct à partir de Cloud Storage, attribuez le rôle pubsub.publisher au compte de service Cloud Storage :

    SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p PROJECT_ID)"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role='roles/pubsub.publisher'
    

    Remplacez PROJECT_ID par l'ID de votre projet Google Cloud. Vous pouvez trouver l'ID de votre projet sur la page de Tableau de bord de Google Cloud Console.

Créer un déclencheur avec gcloud

Vous pouvez créer un déclencheur en exécutant une commande gcloud, associée aux options obligatoires et facultatives.

Événements Cloud Audit Logs

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.cloud.audit.log.v1.written" \
    --event-filters="serviceName=SERVICE_NAME" \
    --event-filters="methodName=METHOD_NAME" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

Remplacez les éléments suivants :

  • TRIGGER : l'ID du déclencheur ou un identifiant complet.
  • LOCATION : l'emplacement du déclencheur Eventarc. Vous pouvez également définir la propriété eventarc/location (par exemple, gcloud config set eventarc/location us-central1).

    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, Google recommande que l'emplacement corresponde à celui 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 qui génèrent des correspondances pour les filtres d'événements. Par exemple, la création d'un déclencheur Eventarc global vous permet de recevoir des événements provenant de ressources telles que des buckets Cloud Storage situés dans les emplacements multirégionaux EU et US.

  • DESTINATION_RUN_SERVICE : nom du service Cloud Run qui reçoit les événements pour le déclencheur. Le service peut se trouver dans l'un des emplacements compatibles avec Cloud Run et ne doit pas nécessairement se trouver au même emplacement que le déclencheur. Cependant, le service doit se trouver dans le même projet que le déclencheur et recevoir des événements sous forme de requêtes HTTP POST envoyées à son chemin d'URL racine (/), à chaque déclenchement de l'événement.
  • DESTINATION_RUN_REGION : région dans laquelle se trouve le service Cloud Run de destination. Si elle n'est pas spécifiée, il est supposé que le service se trouve dans la même région que le déclencheur.
  • SERVICE_NAME : l'identifiant du service Google Cloud.
  • METHOD_NAME : identifiant de l'opération.
  • PROJECT_NUMBER : numéro de votre projet Google Cloud.

Remarques :

  • Ces options sont obligatoires :
    • --event-filters="type=google.cloud.audit.log.v1.written"
    • --event-filters="serviceName=VALUE"
    • --event-filters="methodName=VALUE"
  • Pour obtenir la liste des événements du journal d'audit compatibles avec Eventarc, y compris les valeurs serviceName et methodName, consultez la section Événements compatibles avec Eventarc.
  • Chaque déclencheur peut comporter plusieurs filtres d'événement, spécifiés dans une option --event-filters=[ATTRIBUTE=VALUE,...], en les séparant par une virgule, ou vous pouvez répéter l'option pour ajouter d'autres filtres. Seuls les événements correspondant à tous les filtres sont envoyés à la destination. Les caractères génériques et les expressions régulières ne sont pas acceptés. Consultez la section Déterminer des filtres d'événements pour Cloud Audit Logging.
  • L'option --service-account spécifie l'adresse e-mail du compte de service IAM (Identity and Access Management) associée au déclencheur.
  • Vous pouvez éventuellement filtrer les événements associés à une ressource spécifique en utilisant l'option --event-filters="resourceName=VALUE" et en spécifiant le chemin d'accès complet à la ressource. Omettez l'option pour les ressources créées de manière dynamique, dont les identifiants sont générés au moment de la création. Vous pouvez également filtrer les événements pour un ensemble de ressources en utilisant l'option --event-filters-path-pattern="resourceName=VALUE" et en spécifiant le modèle de chemin d'accès à la ressource.
  • Vous pouvez éventuellement spécifier un chemin d'accès relatif dans le service Cloud Run de destination auquel les événements du déclencheur doivent être envoyés, à l'aide de l'option --destination-run-path.

Exemple :

  gcloud eventarc triggers create helloworld-trigger \
      --location=us-central1 \
      --destination-run-service=helloworld-events \
      --destination-run-region=us-central1 \
      --event-filters="type=google.cloud.audit.log.v1.written" \
      --event-filters="serviceName=storage.googleapis.com" \
      --event-filters="methodName=storage.buckets.update" \
      --event-filters="resourceName=projects/_/buckets/eventarc-bucket/objects/random.txt" \
      --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Cette commande crée un déclencheur appelé helloworld-trigger pour les journaux d'audit écrits par storage.googleapis.com et pour l'opération identifiée comme storage.buckets.update.

Événements directs

Cloud Storage

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="bucket=BUCKET" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

Remplacez les éléments suivants :

  • TRIGGER : l'ID du déclencheur ou un identifiant complet.
  • LOCATION : l'emplacement du déclencheur Eventarc. Vous pouvez également définir la propriété eventarc/location (par exemple, gcloud config set eventarc/location us-central1).

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

  • DESTINATION_RUN_SERVICE : nom du service Cloud Run qui reçoit les événements pour le déclencheur. Le service peut se trouver dans l'un des emplacements compatibles avec Cloud Run et ne doit pas nécessairement se trouver au même emplacement que le déclencheur. Cependant, le service doit se trouver dans le même projet que le déclencheur et recevoir des événements sous forme de requêtes HTTP POST envoyées à son chemin d'URL racine (/), à chaque déclenchement de l'événement.
  • DESTINATION_RUN_REGION : région dans laquelle se trouve le service Cloud Run de destination. Si elle n'est pas spécifiée, il est supposé que le service se trouve dans la même région que le déclencheur.
  • EVENT_FILTER_TYPE : l'identifiant de l'événement Cloud Storage et peut être l'un des éléments suivants :
    • google.cloud.storage.object.v1.finalized : Cet événement est envoyé lorsqu'un nouvel objet est créé dans le bucket (ou qu'un objet existant est remplacé et qu'une nouvelle génération de cet objet est créée).
    • google.cloud.storage.object.v1.archived : Cet é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.deleted : Cet é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 de versions, que celui-ci est envoyé lorsqu'un objet est supprimé ou écrasé.
    • google.cloud.storage.object.v1.metadataUpdated : Cet événement est envoyé lorsque les métadonnées d'un objet existant changent.
  • BUCKET: l'identifiant unique du bucket Cloud Storage.
  • PROJECT_NUMBER : numéro de votre projet Google Cloud.

Remarques :

  • Ces options sont obligatoires :
    • --event-filters="type=EVENT_FILTER_TYPE"
    • --event-filters="bucket=BUCKET"
  • Une fois le déclencheur créé, EVENT_FILTER_TYPE ne peut plus être modifié. À la place, vous devez créer un nouveau déclencheur et supprimer l'ancien.
  • 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.
  • Chaque déclencheur peut comporter plusieurs filtres d'événement, spécifiés dans une option --event-filters=[ATTRIBUTE=VALUE,...], en les séparant par une virgule, ou vous pouvez répéter l'option pour ajouter d'autres filtres. Seuls les événements correspondant à tous les filtres sont envoyés à la destination. Les caractères génériques et les expressions régulières ne sont pas acceptés.
  • L'option --service-account permet de spécifier l'adresse e-mail du compte de service IAM (Identity and Access Management) associée au déclencheur.
  • Vous pouvez éventuellement spécifier un chemin d'accès relatif dans le service Cloud Run de destination auquel les événements du déclencheur doivent être envoyés, à l'aide de l'option --destination-run-path.
  • 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.

Exemple :

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.cloud.storage.object.v1.finalized" \
    --event-filters="bucket=my-project-bucket" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Cette commande crée un déclencheur appelé helloworld-trigger pour le bucket Cloud Storage my-project-bucket et l'événement identifié en tant que google.cloud.storage.object.v1.finalized.

Firebase Alerts

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=ALERT_TYPE" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

Remplacez les éléments suivants :

  • TRIGGER : l'ID du déclencheur ou un identifiant complet.
  • DESTINATION_RUN_SERVICE : nom du service Cloud Run qui reçoit les événements pour le déclencheur. Le service peut se trouver dans l'un des emplacements compatibles avec Cloud Run et ne doit pas nécessairement se trouver au même emplacement que le déclencheur. Cependant, le service doit se trouver dans le même projet que le déclencheur et recevoir des événements sous forme de requêtes HTTP POST envoyées à son chemin d'URL racine (/), à chaque déclenchement de l'événement.
  • DESTINATION_RUN_REGION : région dans laquelle se trouve le service Cloud Run de destination. Si elle n'est pas spécifiée, il est supposé que le service se trouve dans la même région que le déclencheur.
  • ALERT_TYPE est le type d'alerte Firebase et peut être l'un des suivants :
    • appDistribution.inAppFeedback: l'événement est envoyé lorsqu'un testeur envoie des commentaires dans l'application pour une application donnée.
    • appDistribution.newTesterIosDevice: l'événement est envoyé lorsqu'un nouvel appareil de test iOS est enregistré pour 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.
  • PROJECT_NUMBER : numéro de votre projet Google Cloud.

Remarques :

  • L'option --location doit être global. Pour en savoir plus, consultez la page Emplacements Eventarc.
  • Les options --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" et --event-filters="alerttype=ALERT_TYPE" sont obligatoires.
  • Vous pouvez éventuellement filtrer les événements pour un ID d'application Firebase spécifique à l'aide de l'option --event-filters="appid=APP_ID" et en spécifiant une correspondance exacte.
  • Une fois le déclencheur créé, le type de filtre d'événements ne peut plus être modifié. À la place, vous devez créer un nouveau déclencheur et supprimer l'ancien.
  • L'option --service-account permet de spécifier l'adresse e-mail du compte de service IAM (Identity and Access Management) associée au déclencheur.
  • Vous pouvez éventuellement spécifier un chemin d'accès relatif dans le service Cloud Run de destination auquel les événements du déclencheur doivent être envoyés, à l'aide de l'option --destination-run-path.

Exemple :

gcloud eventarc triggers create helloworld-trigger \
    --location=global \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=crashlytics.velocity" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Cette commande crée un déclencheur appelé helloworld-trigger pour l'événement identifié comme google.firebase.firebasealerts.alerts.v1.published et pour un type d'alerte crashlytics.velocity.

Firebase Realtime Database

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="instance=INSTANCE" \
    --event-filters-path-pattern="ref=REF" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

Remplacez les éléments suivants :

  • TRIGGER : l'ID du déclencheur ou un identifiant complet.
  • LOCATION : l'emplacement du déclencheur Eventarc. Vous pouvez également définir la propriété eventarc/location (par exemple, gcloud config set eventarc/location us-central1). Les déclencheurs Firebase Realtime Database pour Eventarc ne sont disponibles que dans les emplacements suivants :

    • us-central1
    • europe-west1
    • asia-southeast1

    Notez que le déclencheur doit se trouver au même emplacement que l'instance Firebase Realtime Database. Pour en savoir plus, consultez la section Emplacements Realtime Database.

  • DESTINATION_RUN_SERVICE : nom du service Cloud Run qui reçoit les événements pour le déclencheur. Le service peut se trouver dans l'un des emplacements compatibles avec Cloud Run et ne doit pas nécessairement se trouver au même emplacement que le déclencheur. Cependant, le service doit se trouver dans le même projet que le déclencheur et recevoir des événements sous forme de requêtes HTTP POST envoyées à son chemin d'URL racine (/), à chaque déclenchement de l'événement.
  • DESTINATION_RUN_REGION : région dans laquelle se trouve le service Cloud Run de destination. Si elle n'est pas spécifiée, il est supposé que le service se trouve dans la même région que le déclencheur.
  • EVENT_FILTER_TYPE : identifiant de l'événement Firebase Realtime Database. Il peut s'agir de l'un des éléments suivants :

    • google.firebase.database.ref.v1.created : l'événement est envoyé lorsque des données sont créées dans la base de données.
    • google.firebase.database.ref.v1.updated : l'événement est envoyé lorsque les données sont mises à jour dans la base de données.
    • google.firebase.database.ref.v1.deleted : l'événement est envoyé lorsque les données sont supprimées de la base de données.
    • google.firebase.database.ref.v1.written : l'événement est envoyé lorsque des données sont créées, mises à jour ou supprimées dans la base de données.
  • INSTANCE : une seule instance de base de données et l'opérateur peuvent être les suivants :

    • Égal à. Par exemple : --event-filters="instance=INSTANCE"
    • Format de chemin d'accès. Exemple : --event-filters-path-pattern="instance=INSTANCE" Pour en savoir plus, consultez la page Comprendre les formats de chemin d'accès.
  • REF : chemin d'accès de l'instance de base de données pour lequel vous souhaitez recevoir des événements à partir du moment où les données sont créées, mises à jour ou supprimées dans ce chemin d'accès ou à partir de l'un de ses enfants.

  • PROJECT_NUMBER : numéro de votre projet Google Cloud.

Remarques :

  • Ces options sont obligatoires :
    • --event-filters="type=EVENT_FILTER_TYPE"
    • --event-filters="instance=INSTANCE" ou --event-filters-path-pattern="instance=INSTANCE"
    • --event-filters-path-pattern="ref=REF"
  • Une fois le déclencheur créé, le type de filtre d'événements ne peut plus être modifié. À la place, vous devez créer un nouveau déclencheur et supprimer l'ancien.
  • L'option --service-account permet de spécifier l'adresse e-mail du compte de service IAM (Identity and Access Management) associée au déclencheur.
  • Vous pouvez éventuellement spécifier un chemin d'accès relatif dans le service Cloud Run de destination auquel les événements du déclencheur doivent être envoyés, à l'aide de l'option --destination-run-path.

Exemple :

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.database.ref.v1.created" \
    --event-filters="instance=test-instance" \
    --event-filters-path-pattern="ref=users/*" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Cette commande crée un déclencheur appelé helloworld-trigger pour l'événement identifié comme google.firebase.database.ref.v1.created.

Firebase Remote Config

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.firebase.remoteconfig.remoteConfig.v1.updated" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

Remplacez les éléments suivants :

  • TRIGGER : l'ID du déclencheur ou un identifiant complet.
  • DESTINATION_RUN_SERVICE : nom du service Cloud Run qui reçoit les événements pour le déclencheur. Le service peut se trouver dans l'un des emplacements compatibles avec Cloud Run et ne doit pas nécessairement se trouver au même emplacement que le déclencheur. Cependant, le service doit se trouver dans le même projet que le déclencheur et recevoir des événements sous forme de requêtes HTTP POST envoyées à son chemin d'URL racine (/), à chaque déclenchement de l'événement.
  • DESTINATION_RUN_REGION : région dans laquelle se trouve le service Cloud Run de destination. Si elle n'est pas spécifiée, il est supposé que le service se trouve dans la même région que le déclencheur.
  • PROJECT_NUMBER : numéro de votre projet Google Cloud.

Remarques :

  • L'option --location doit être global. Pour en savoir plus, consultez la page Emplacements Eventarc.
  • L'option --event-filters est obligatoire et le type doit être google.firebase.remoteconfig.remoteConfig.v1.updated. Un événement est envoyé lorsqu'un modèle Remote Config est mis à jour.
  • Une fois le déclencheur créé, le type de filtre d'événements ne peut plus être modifié. À la place, vous devez créer un nouveau déclencheur et supprimer l'ancien.
  • L'option --service-account permet de spécifier l'adresse e-mail du compte de service IAM (Identity and Access Management) associée au déclencheur.
  • Vous pouvez éventuellement spécifier un chemin d'accès relatif dans le service Cloud Run de destination auquel les événements du déclencheur doivent être envoyés, à l'aide de l'option --destination-run-path.

Exemple :

gcloud eventarc triggers create helloworld-trigger \
    --location=global \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.remoteconfig.remoteConfig.v1.updated" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Cette commande crée un déclencheur appelé helloworld-trigger pour l'événement identifié comme google.firebase.remoteconfig.remoteConfig.v1.updated.

Firebase Test Lab

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.firebase.testlab.testMatrix.v1.completed" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

Remplacez les éléments suivants :

  • TRIGGER : l'ID du déclencheur ou un identifiant complet.
  • DESTINATION_RUN_SERVICE : nom du service Cloud Run qui reçoit les événements pour le déclencheur. Le service peut se trouver dans l'un des emplacements compatibles avec Cloud Run et ne doit pas nécessairement se trouver au même emplacement que le déclencheur. Cependant, le service doit se trouver dans le même projet que le déclencheur et recevoir des événements sous forme de requêtes HTTP POST envoyées à son chemin d'URL racine (/), à chaque déclenchement de l'événement.
  • DESTINATION_RUN_REGION : région dans laquelle se trouve le service Cloud Run de destination. Si elle n'est pas spécifiée, il est supposé que le service se trouve dans la même région que le déclencheur.
  • PROJECT_NUMBER : numéro de votre projet Google Cloud.

Remarques :

  • L'option --location doit être global. Pour en savoir plus, consultez la page Emplacements Eventarc.
  • L'option --event-filters est obligatoire et le type doit être google.firebase.testlab.testMatrix.v1.completed. Un événement est envoyé à la fin d'une évaluation TestMatrix.
  • Une fois le déclencheur créé, le type de filtre d'événements ne peut plus être modifié. À la place, vous devez créer un nouveau déclencheur et supprimer l'ancien.
  • L'option --service-account permet de spécifier l'adresse e-mail du compte de service IAM (Identity and Access Management) associée au déclencheur.
  • Vous pouvez éventuellement spécifier un chemin d'accès relatif dans le service Cloud Run de destination auquel les événements du déclencheur doivent être envoyés, à l'aide de l'option --destination-run-path.

Exemple :

gcloud eventarc triggers create helloworld-trigger \
    --location=global \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.testlab.testMatrix.v1.completed" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

Cette commande crée un déclencheur appelé helloworld-trigger pour l'événement identifié comme google.firebase.testlab.testMatrix.v1.completed.

Messages Pub/Sub (sujet existant)

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --transport-topic=projects/PROJECT_ID/topics/TOPIC_NAME

Remplacez les éléments suivants :

  • TRIGGER : l'ID du déclencheur ou un identifiant complet.
  • LOCATION: l'emplacement du déclencheur Eventarc. Vous pouvez également définir la propriété eventarc/location (par exemple, gcloud config set eventarc/location us-central1).

    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.

  • DESTINATION_RUN_SERVICE : nom du service Cloud Run qui reçoit les événements pour le déclencheur. Le service peut se trouver dans l'un des emplacements compatibles avec Cloud Run et ne doit pas nécessairement se trouver au même emplacement que le déclencheur. Cependant, le service doit se trouver dans le même projet que le déclencheur et recevoir des événements sous forme de requêtes HTTP POST envoyées à son chemin d'URL racine (/), à chaque déclenchement de l'événement.
  • DESTINATION_RUN_REGION : région dans laquelle se trouve le service Cloud Run de destination. Si elle n'est pas spécifiée, il est supposé que le service se trouve dans la même région que le déclencheur.
  • PROJECT_ID : ID de votre projet Google Cloud
  • TOPIC_NAME : nom du sujet Pub/Sub existant. Le sujet doit se trouver dans le même projet que le déclencheur.

Remarques :

  • L'option --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" est obligatoire.
  • Chaque déclencheur peut comporter plusieurs filtres d'événement, spécifiés dans une option --event-filters=[ATTRIBUTE=VALUE,...], en les séparant par une virgule, ou vous pouvez répéter l'option pour ajouter d'autres filtres. Seuls les événements correspondant à tous les filtres sont envoyés à la destination. Les caractères génériques et les expressions régulières ne sont pas acceptés.
  • L'option --transport-topic permet de spécifier l'ID du sujet Pub/Sub existant ou son identifiant complet.
  • Vous pouvez éventuellement spécifier un chemin d'accès relatif dans le service Cloud Run de destination auquel les événements du déclencheur doivent être envoyés, à l'aide de l'option --destination-run-path.
  • 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.

Exemple :

  gcloud eventarc triggers create pubsub-trigger-existing \
      --location=us-central1 \
      --destination-run-service=helloworld-events-pubsub \
      --destination-run-region=us-central1 \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
      --transport-topic=projects/${PROJECT_ID}/topics/${TOPIC_NAME}

Cette commande crée un déclencheur nommé pubsub-trigger-existing pour le sujet Pub/Sub identifié par projects/${PROJECT_ID}/topics/${TOPIC_NAME}.

Messages Pub/Sub (nouveau sujet)

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"

Remplacez les éléments suivants :

  • TRIGGER : l'ID du déclencheur ou un identifiant complet.
  • LOCATION: l'emplacement du déclencheur Eventarc. Vous pouvez également définir la propriété eventarc/location (par exemple, gcloud config set eventarc/location us-central1).

    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.

  • DESTINATION_RUN_SERVICE : nom du service Cloud Run qui reçoit les événements pour le déclencheur. Le service peut se trouver dans l'un des emplacements compatibles avec Cloud Run et ne doit pas nécessairement se trouver au même emplacement que le déclencheur. Cependant, le service doit se trouver dans le même projet que le déclencheur et recevoir des événements sous forme de requêtes HTTP POST envoyées à son chemin d'URL racine (/), à chaque déclenchement de l'événement.
  • DESTINATION_RUN_REGION : région dans laquelle se trouve le service Cloud Run de destination. Si elle n'est pas spécifiée, il est supposé que le service se trouve dans la même région que le déclencheur.

Notes :

  • L'option --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" est obligatoire.
  • Chaque déclencheur peut comporter plusieurs filtres d'événement, spécifiés dans une option --event-filters=[ATTRIBUTE=VALUE,...], en les séparant par une virgule, ou vous pouvez répéter l'option pour ajouter d'autres filtres. Seuls les événements correspondant à tous les filtres sont envoyés à la destination. Les caractères génériques et les expressions régulières ne sont pas acceptés.
  • Vous pouvez éventuellement spécifier un chemin d'accès relatif dans le service Cloud Run de destination auquel les événements du déclencheur doivent être envoyés, à l'aide de l'option --destination-run-path.
  • 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.

Exemple :

  gcloud eventarc triggers create pubsub-trigger-new \
      --location=us-central1 \
      --destination-run-service=helloworld-events-pubsub \
      --destination-run-region=us-central1 \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"

Cela crée un sujet Pub/Sub et un déclencheur associé nommé pubsub-trigger-new.

Nous vous recommandons 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 le déclencheur.

Créer un déclencheur via la console

Vous pouvez utiliser la page de la console Cloud Run afin de créer des déclencheurs pour les types d'événements Cloud Audit Logs et Pub/Sub. Toutefois, pour créer des déclencheurs pour des événements directs (par exemple, depuis des alertes Cloud Storage ou Firebase), vous devez utiliser gcloud CLI ou la page de la console Eventarc.

  1. Si nécessaire, activez l'API Eventarc.

    Activer l'API

  2. Dans la console, accédez à Cloud Run.

    Accédez à Cloud Run

  3. Dans la liste des services, cliquez sur un service existant ou créez-en un.

  4. Sur la page d'informations du service, cliquez sur l'onglet Déclencheurs.

  5. Cliquez sur Ajouter un déclencheur Eventarc.

    Le volet Déclencheur Eventarc s'ouvre. Pour déterminer la meilleure façon d'acheminer les événements, consultez la page Options de routage des événements.

  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 ou de partenaire 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.inAppFeedback: l'événement est envoyé lorsqu'un testeur envoie des commentaires dans l'application pour une application donnée.
      • appDistribution.newTesterIosDevice: l'événement est envoyé lorsqu'un nouvel appareil de test iOS est enregistré pour 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 Realtime Database

    Les requêtes adressées à votre service sont déclenchées en réponse à un événement lorsque des données sont créées, mises à jour ou supprimées dans Firebase Realtime Database.

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

      • google.firebase.database.ref.v1.created : l'événement est envoyé lorsque des données sont créées dans la base de données.
      • google.firebase.database.ref.v1.updated : l'événement est envoyé lorsque les données sont mises à jour dans la base de données.
      • google.firebase.database.ref.v1.delete : l'événement est envoyé lorsque les données sont supprimées dans la base de données.
      • google.firebase.database.ref.v1.writing : l'événement est envoyé lorsque des données sont créées, mises à jour ou supprimées dans la base de données.
    2. Dans la liste Région, sélectionnez une région.

      Notez que cette région doit correspondre à la région de l'instance Firebase Realtime Database. Pour en savoir plus, consultez la page Emplacements Eventarc.

    3. Dans la section Filtres, sélectionnez les filtres suivants :

      1. Pour l'attribut instance de la base de données, sélectionnez l'un des opérateurs suivants :
      2. Dans le champ Valeur d'attribut 1, saisissez le nom de l'instance de base de données à partir de laquelle vous souhaitez recevoir les événements. Selon l'opérateur que vous avez choisi à l'étape précédente, la valeur de l'attribut doit correspondre au nom de l'instance de base de données tel quel ou au format d'un chemin d'accès.
      3. Pour l'attribut ref, sélectionnez l'opérateur comme Format de chemin d'accès.
      4. Dans le champ Valeur d'attribut 2, saisissez le chemin d'accès dans l'instance de base de données pour recevoir des événements si des données sont créées, mises à jour ou supprimées dans ce chemin d'accès ou dans l'un de ses enfants.

    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 service Cloud Run.

    ou Créer un nouveau compte de service

    Cela spécifie l'adresse e-mail du compte de service IAM associé au déclencheur. Pour les destinations Cloud Run, ce compte de service permet de générer des jetons d'identité lors de l'appel du service.

  10. Vous pouvez éventuellement spécifier le chemin d'URL du service auquel envoyer la requête entrante.

    Il s'agit du chemin relatif sur le service de destination auquel les événements du déclencheur doivent être envoyés. Par exemple : /, /route, route, route/subroute.

  11. Après avoir créé le déclencheur, vous pouvez vérifier son état en vous assurant qu'une coche s'affiche dans l'onglet Déclencheurs.

Étape suivante