Déclencheurs secondaires avec Cloud Logging
De nombreux événements Google Cloud 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 Cloud Run Functions. Cela vous permet de créer des événements personnalisés à partir de n'importe quel service Google Cloud qui génère des journaux d'audit.
Configuration
Pour exécuter l'exemple de ce document, vous avez besoin d'un sujet Pub/Sub et d'un récepteur Cloud Logging. Ils serviront à transférer les journaux Cloud Audit Logs vers Cloud Run Functions.
Structure de l'événement
Comme toutes les fonctions déclenchées par Pub/Sub, les fonctions déclenchées par les entrées de journal Cloud reçoivent un objet PubsubMessage
dont le paramètre data
est une chaîne encodée en base64
. Pour les événements de journaux Cloud, le décodage de cette valeur renvoie l'entrée de journal correspondante sous forme de chaîne JSON.
Exemple de code
Vous pouvez utiliser une fonction déclenchée par Pub/Sub pour détecter les journaux cloud exportés et y répondre :
Node.js
Python
Go
Java
Déployer une fonction
Saisissez la commande suivante pour déployer la fonction :
Node.js
gcloud functions deploy processLogEntry \ --runtime nodejs20 \
--trigger-topic YOUR_PUBSUB_TOPIC/
FLAGS...
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version Node.js compatible pour exécuter votre fonction.
Python
gcloud functions deploy process_log_entry \ --runtime python312 \
--trigger-topic YOUR_PUBSUB_TOPIC/
FLAGS...
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version Python compatible pour exécuter votre fonction.
Go
gcloud functions deploy ProcessLogEntry \ --runtime go121 \
--trigger-topic YOUR_PUBSUB_TOPIC/
FLAGS...
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version Go compatible pour exécuter votre fonction.
Java
gcloud functions deploy java-log-function \ --entry-point StackdriverLogging \ --runtime java17 \ --memory 512MB \
--trigger-topic YOUR_PUBSUB_TOPIC/
FLAGS...
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version Java compatible pour exécuter votre fonction.
Déclencher une fonction
Lorsqu'une entrée de journal Cloud qui correspond à l'un de vos filtres est créée, vous devriez voir les entrées de journal correspondantes pour votre fonction :
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS