Créer un déclencheur

Un déclencheur Eventarc déclare votre intérêt pour un événement ou un ensemble d'événements spécifique. Vous pouvez configurer le routage d'événements en spécifiant des filtres pour le déclencheur, 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 des messages publiés sur un sujet Pub/Sub, ou par la création d'un journal d'audit qui correspond aux critères de filtrage du déclencheur.

Vous pouvez créer des déclencheurs à l'aide de l'outil de ligne de commande gcloud ou de Google Cloud Console.

Créer un déclencheur à l'aide de gcloud

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

Nouveau sujet Pub/Sub

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 l'élément suivant :

  • TRIGGER est l'ID du déclencheur ou un identifiant complet.
  • LOCATION est l'emplacement du déclencheur Eventarc. 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. Vous pouvez également définir la propriété eventarc/location (par exemple, gcloud config set eventarc/location us-central1). Pour en savoir plus, consultez la section Emplacements Eventarc.
  • DESTINATION_RUN_SERVICE est le nom du service Cloud Run qui reçoit les événements pour le déclencheur. Le service doit se trouver dans la même région que le déclencheur, sauf si son emplacement est global. 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 est la 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.

Sujet Pub/Sub 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 l'élément suivant :

  • TRIGGER est l'ID du déclencheur ou un identifiant complet.
  • LOCATION est l'emplacement du déclencheur Eventarc. 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. Vous pouvez également définir la propriété eventarc/location (par exemple, gcloud config set eventarc/location us-central1). Pour en savoir plus, consultez la section Emplacements Eventarc.
  • DESTINATION_RUN_SERVICE est le nom du service Cloud Run qui reçoit les événements pour le déclencheur. Le service doit se trouver dans la même région que le déclencheur, sauf si son emplacement est global. 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 est la 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 correspond à votre ID de projet Google Cloud.
  • TOPIC_NAME correspond au nom du sujet Pub/Sub existant. Le sujet doit se trouver dans le même projet 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.
  • 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}

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

Cloud Audit Logging

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 l'élément suivant :

  • TRIGGER est l'ID du déclencheur ou un identifiant complet.
  • LOCATION est l'emplacement du déclencheur Eventarc. 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. Vous pouvez également définir la propriété eventarc/location (par exemple, gcloud config set eventarc/location us-central1). Pour en savoir plus, consultez la section Emplacements Eventarc.
  • DESTINATION_RUN_SERVICE est le nom du service Cloud Run qui reçoit les événements pour le déclencheur. Le service doit se trouver dans la même région que le déclencheur, sauf si son emplacement est global. 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 est la 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 est l'identifiant du service Google Cloud.
  • METHOD_NAME est l'identifiant de l'opération.
  • PROJECT_NUMBER est le numéro de votre projet Google Cloud.

Notes :

  • 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 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 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 é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

Cela 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.

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

Vous pouvez utiliser Cloud Console pour créer des déclencheurs avec des filtres.

  1. Dans Cloud Console, accédez à Cloud Run.

    Accédez à Cloud Run

  2. Dans la liste des services, cliquez sur un service.

  3. Cliquez sur l'onglet Déclencheurs, puis sur Ajouter un déclencheur.

  4. Dans la liste déroulante Pick an event (Sélectionner un événement), vous pouvez rechercher tous les services et événements compatibles :

    Ajouter un déclencheur via la console

  5. Après avoir sélectionné un service, vous pouvez choisir un événement.

    Par exemple, sélectionnez Cloud Storage > storage.objects.create.

    Vous devez identifier l'événement à filtrer. Consultez la section Déterminer des filtres d'événements pour Cloud Audit Logging.

  6. Si vous sélectionnez l'événement Sujet Cloud Pub/Sub, vous pouvez sélectionner un sujet existant ou en créer un pour 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.
  7. Pour tous les autres événements, vous pouvez éventuellement spécifier le chemin d'accès complet de la ressource dans le champ Nom complet de la ressource.

    Par exemple, saisissez projects/_/buckets/eventarc-bucket/objects/random.txt.

    Laissez le champ vide pour les ressources créées de manière dynamique, dont les identifiants sont générés au moment de la création.

  8. Sélectionnez un emplacement à partir duquel recevoir les événements.

  9. Configurez le compte de service qui appelle votre service Cloud Run et spécifiez le Chemin de l'URL du service vers lequel envoyer la requête entrante.

    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. 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.

Étapes suivantes