De nombreux Google Cloud événements sont consignés dans Cloud Audit Logs. Vous pouvez filtrer ces journaux et les transférer vers des sujets Pub/Sub à l'aide de récepteurs. Ces sujets Pub/Sub peuvent ensuite envoyer des notifications qui déclenchent des fonctions Cloud Run. Vous pouvez créer des événements personnalisés à partir de n'importe quel Google Cloud service qui génère des journaux d'audit.
Cette page montre comment déclencher des fonctions à partir d'entrées de journal acheminées vers un sujet Pub/Sub.
Structure des événements des fonctions déclenchées par Pub/Sub
Comme toutes les fonctions déclenchées par Pub/Sub, les fonctions
déclenchées par les entrées de journal Cloud Logging reçoivent un
PubsubMessage objet dont le data paramètre est une
chaîne encodée en base64. Pour les événements de journaux Cloud Logging, le décodage de cette valeur renvoie l'entrée de journal appropriée sous la forme d'une chaîne JSON.
Avant de commencer
L'exemple de code transfère les journaux Cloud Audit Logs vers une fonction Cloud Run. Avant d'exécuter l'exemple de code, vous aurez besoin des éléments suivants :
Consultez le guide sur les déclencheurs Pub/Sub pour connaître les API à activer et les rôles requis pour déployer des fonctions déclenchées par Pub/Sub.
Exemple de code
Vous pouvez utiliser une fonction déclenchée par Pub/Sub pour détecter les journaux Cloud Logging exportés et y répondre :
Node.js
Python
Go
Java
Déployer et déclencher une fonction
Pour configurer un déclencheur lors du déploiement d'une fonction :
Exécutez la commande suivante dans le répertoire contenant l'exemple de code pour déployer votre fonction :
Node.js
gcloud run deploy nodejs-log-function \ --source . \ --function processLogEntry \ --base-image nodejs20 \ --region REGIONPython
gcloud run deploy python-log-function \ --source . \ --function process_log_entry \ --base-image python312 \ --region REGIONGo
gcloud run deploy go-log-function \ --source . \ --function ProcessLogEntry \ --base-image go122 \ --region REGIONJava
gcloud run deploy java-log-function \ --source . \ --function StackdriverLogging \ --base-image java21 \ --region REGIONRemplacez :
REGION par la Google Cloud région dans laquelle vous souhaitez déployer votre fonction. Exemple :
europe-west1.L'option
--functionspécifie le point d'entrée de la fonction dans l'exemple de code source. Il s'agit du code que Cloud Run exécute lorsque votre fonction s'exécute. La valeur de cette option doit être un nom de fonction ou un nom de classe complet qui existe dans votre code source.L'option
--base-imagespécifie l'environnement d'image de base de votre fonction. Pour en savoir plus sur les images de base et les packages inclus dans chaque image, consultez Images de base des environnements d'exécution.
Exécutez la commande suivante pour créer un déclencheur qui filtre les événements :
gcloud eventarc triggers create TRIGGER_NAME \ --location=EVENTARC_TRIGGER_LOCATION \ --destination-run-service=SERVICE \ --destination-run-region=REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.comRemplacez :
TRIGGER_NAME par le nom de votre déclencheur.
EVENTARC_TRIGGER_LOCATION par l'emplacement du déclencheur Eventarc. En général, l'emplacement d'un déclencheur Eventarc doit correspondre à celui de la Google Cloud ressource dont vous souhaitez surveiller les événements. Dans la plupart des cas, vous devez également déployer votre fonction dans la même région. Consultez la section Comprendre les emplacements Eventarc pour en savoir plus sur les emplacements des déclencheurs Eventarc.
SERVICE par le nom de la fonction que vous déployez.
REGION par la région Cloud Run de la fonction.
PROJECT_NUMBER par votre Google Cloud numéro de projet. Les déclencheurs Eventarc sont associés à des comptes de service, destinés à être utilisés comme identité lors de l'appel de votre fonction. Le compte de service de votre déclencheur Eventarc doit être autorisé à appeler votre fonction. Par défaut, Cloud Run utilise le compte de service Compute par défaut.
L'option
--event-filtersspécifie les filtres d'événements que le déclencheur surveille. Un événement qui correspond à tous les filtresevent-filtersdéclenche des appels à votre fonction. Chaque déclencheur doit avoir un type d'événement compatible . Vous ne pouvez pas modifier le type de filtre d'événement après sa création. Pour modifier le type de filtre d'événement, vous devez créer un déclencheur et supprimer l'ancien. Vous pouvez également répéter l'option--event-filtersavec un filtre compatible au formatATTRIBUTE=VALUEpour ajouter d'autres filtres.
Entrée de journal Cloud
Lorsqu'une entrée de journal Cloud qui correspond à l'un de vos filtres est créée, les entrées de journal correspondantes pour votre fonction dans la Google Cloud console doivent se présenter comme suit :
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS