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.
Eventarc fournit des événements au destinataire d'événements au format CloudEvents via une requête HTTP.
Ces instructions vous montrent comment configurer le routage d'événements vers votre service Cloud Run déclenché lorsqu'un journal d'audit est créé et qu'il correspond aux critères de filtrage du déclencheur. Pour obtenir la liste des événements du journal d'audit compatibles avec Eventarc, y compris les valeurs serviceName
et methodName
, consultez la section Types d'événements Google compatibles avec Eventarc.
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.
Préparer la création d'un déclencheur
Avant de créer un déclencheur, procédez comme suit :
Console
Dans la console Google Cloud, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
Activez les API Cloud Logging, Eventarc et Eventarc Publishing.
Le cas échéant, activez l'API associée aux événements Cloud Audit Logs. Par exemple, pour les journaux d'audit Cloud Run Functions, activez l'API Cloud Functions.
Si vous n'en avez pas encore, créez un compte de service géré par l'utilisateur, puis accordez-lui les rôles et les autorisations nécessaires pour qu'Eventarc puisse gérer les événements de votre service cible.
Dans la console Google Cloud, accédez à la page Créer un compte de service.
Sélectionnez votre projet.
Dans le champ Nom du compte de service, saisissez un nom. La console Google Cloud remplit le champ ID du compte de service en fonction de ce nom.
Dans le champ Description du compte de service, saisissez une description. Exemple :
Service account for event trigger
.Cliquez sur Créer et continuer.
Pour fournir un accès approprié, dans la liste Sélectionner un rôle, sélectionnez les rôles IAM (Identity and Access Management) requis à attribuer à votre compte de service pour les appels authentifiés ou non authentifiés. Pour en savoir plus, consultez la page Rôles et autorisations pour les cibles Cloud Run.
Pour ajouter des rôles supplémentaires, cliquez sur
Ajouter un autre rôle et ajoutez chaque rôle supplémentaire.Cliquez sur Continuer.
Pour terminer la création du compte, cliquez sur OK.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Activez les API Cloud Logging, Eventarc et Eventarc Publishing.
gcloud services enable logging.googleapis.com \ eventarc.googleapis.com \ eventarcpublishing.googleapis.com
Le cas échéant, activez l'API associée aux événements Cloud Audit Logs. Par exemple, pour les journaux d'audit Cloud Run Functions, activez
cloudfunctions.googleapis.com
.Si vous n'en avez pas encore, créez un compte de service géré par l'utilisateur, puis accordez-lui les rôles et les autorisations nécessaires pour qu'Eventarc puisse gérer les événements de votre service cible.
Créez le compte de service :
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Remplacez
SERVICE_ACCOUNT_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.Accordez les rôles ou autorisations Identity and Access Management (IAM) requis pour les appels authentifiés ou non authentifiés. Pour en savoir plus, consultez la page Rôles et autorisations pour les cibles Cloud Run.
Créer un déclencheur
Vous pouvez créer un déclencheur Eventarc à l'aide de Google Cloud CLI ou de la console Google Cloud.
Console
- Dans la console Google Cloud, accédez à la page Déclencheurs d'Eventarc.
- Cliquez sur Créer un déclencheur.
- 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.
- Pour le champ Type de déclencheur, sélectionnez Sources Google.
- Sélectionnez un fournisseur d'événements.
Il s'agit du service Google qui est la source des événements via ses journaux d'audit. Par exemple, sélectionnez BigQuery.
Notez que le nom du fournisseur d'événements utilisé dans la documentation Google Cloud associée peut ne pas avoir le préfixe Cloud ou Google Cloud. Par exemple, sur la console, Memorystore pour Redis est appelé Google Cloud Memorystore pour Redis.
- Dans la liste Type d'événement, sélectionnez un type d'événement parmi les événements via Cloud Audit Logs.
- Choisissez ensuite 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 d'accès : vous pouvez filtrer les ressources à l'aide d'un format de chemin d'accès.
Par exemple, saisissez
projects/_/buckets/eventarc-bucket/objects/random.txt
ouprojects/_/buckets/**/r*.txt
.
- Pour spécifier l'encodage de la charge utile de l'événement, sélectionnez application/json ou application/protobuf dans la liste Type de contenu des données d'événement.
Notez que la taille d'une charge utile d'événement au format JSON est supérieure à celle au format Protobuf. Cela peut avoir un impact sur la fiabilité en fonction de la destination de l'événement et de ses limites de taille. Pour en savoir plus, consultez la section Problèmes connus.
- Dans la liste Région, 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 "monde", 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 mondial, Google recommande que l'emplacement corresponde à celui du service Google Cloud qui génère les événements. Pour en savoir plus, consultez la page Emplacements Eventarc.
Si vous spécifiez l'emplacement mondial, 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 mondial Eventarc vous permet de recevoir des événements provenant de ressources des emplacements multirégionaux EU et US.
Remarque : Les déclencheurs Cloud Audit Logs pour Compute Engine souffrent d'un problème à cause duquel les événements ne proviennent que d'une seule région :
us-central1
. Peu importe où se trouve l'instance de machine virtuelle. Lors de la création du déclencheur, définissez l'emplacement du déclencheur surus-central1
ouglobal
. - Sélectionnez le compte de service qui appellera votre service ou workflow.
Vous pouvez également créer un nouveau compte de service.
Cela spécifie l'adresse e-mail du compte de service Identity and Access Management (IAM) associée au déclencheur et auquel vous avez précédemment attribué les rôles spécifiques requis par Eventarc.
- Dans la liste Destination de l'événement, sélectionnez Cloud Run.
- Sélectionner un service.
Il s'agit du nom du service qui reçoit les événements du déclencheur. 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. - Vous pouvez éventuellement spécifier le Chemin de l'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. Exemple :
/
,/route
,route
,route/subroute
. - Cliquez sur Créer.
Une fois le déclencheur créé, vous ne pouvez plus modifier les filtres de source d'événement. À la place, vous devez créer un nouveau déclencheur et supprimer l'ancien. Pour en savoir plus, consultez la section Gérer les déclencheurs.
gcloud
Vous pouvez créer un déclencheur en exécutant une commande gcloud eventarc triggers create
, associée aux options obligatoires et facultatives.
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" \ --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.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. Pour en savoir plus, consultez la page Emplacements Eventarc.
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 global Eventarc vous permet de recevoir des événements provenant de ressources des emplacements multirégionaux EU et US.
Remarque : Les déclencheurs Cloud Audit Logs pour Compute Engine souffrent d'un problème à cause duquel les événements ne proviennent que d'une seule région :
us-central1
. Peu importe où se trouve l'instance de machine virtuelle. Lors de la création du déclencheur, définissez l'emplacement du déclencheur surus-central1
ouglobal
.-
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
: (facultatif) 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 CloudMETHOD_NAME
: identifiant de l'opération
-
EVENT_DATA_CONTENT_TYPE
: (facultatif) encodage de la charge utile de l'événement. Peut être défini surapplication/json
ouapplication/protobuf
. L'encodage par défaut estapplication/json
.Notez que la taille d'une charge utile d'événement au format JSON est supérieure à celle au format Protobuf. Cela peut avoir un impact sur la fiabilité en fonction de la destination de l'événement et de ses limites de taille. Pour en savoir plus, consultez la section Problèmes connus.
SERVICE_ACCOUNT_NAME
: nom de votre compte de service géré par l'utilisateur.PROJECT_ID
: ID 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"
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.
- Chaque déclencheur peut comporter plusieurs filtres d'événement, séparés par une virgule et spécifiés dans une option
--event-filters
=[ATTRIBUTE
=VALUE
,…], 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. - Une fois le déclencheur créé, le type de filtre d'événements ne peut plus être modifié. Pour un type d'événement différent, vous devez créer un déclencheur.
- 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.cloud.audit.log.v1.written" \
--event-filters="serviceName=bigquery.googleapis.com" \
--event-filters="methodName=google.cloud.bigquery.v2.JobService.InsertJob" \
--service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
Cela crée un déclencheur appelé helloworld-trigger
pour les journaux d'audit écrits par bigquery.googleapis.com
et pour l'opération identifiée comme google.cloud.bigquery.v2.JobService.InsertJob
.
Terraform
Vous pouvez créer un déclencheur pour une destination Cloud Run à l'aide de Terraform. Pour en savoir plus, consultez la page Créer un déclencheur à l'aide de Terraform.
Répertorier un déclencheur
Vous pouvez confirmer la création d'un déclencheur en répertoriant les déclencheurs Eventarc à l'aide de Google Cloud CLI ou de la console Google Cloud.
Console
Dans la console Google Cloud, accédez à la page Déclencheurs d'Eventarc.
Accéder à la page "Déclencheurs"
Cette page répertorie vos déclencheurs dans tous les emplacements et inclut des détails tels que les noms, les régions, les fournisseurs d'événements, les destinations, etc.
Pour filtrer vos déclencheurs, procédez comme suit :
- Cliquez sur Filtrer ou sur le champ Filtrer les déclencheurs.
- Dans la liste Propriétés, sélectionnez une option permettant de filtrer les déclencheurs.
Vous pouvez sélectionner une seule propriété ou utiliser l'opérateur logique
OR
pour ajouter d'autres propriétés.Pour trier vos déclencheurs, à côté d'un en-tête de colonne compatible, cliquez sur
Trier.
gcloud
Exécutez la commande suivante pour répertorier vos déclencheurs :
gcloud eventarc triggers list --location=-
Cette commande répertorie vos déclencheurs dans tous les emplacements et inclut des détails tels que les noms, les types, les destinations et les états.