Déclencheurs secondaires avec Cloud Logging
De nombreux événements Google Cloud Platform sont consignés dans les journaux Cloud Audit Logging. 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 Functions. Cela vous permet de créer des événements personnalisés à partir de n'importe quel service Google Cloud Platform qui génère des journaux d'audit.
Configuration
Pour exécuter l'exemple ci-dessous, vous avez besoin d'un sujet Pub/Sub et d'un récepteur Cloud Logging. Ils serviront à transférer les journaux Cloud Audit Logging vers une fonction Cloud.
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 vous servir d'une fonction déclenchée par Pub/Sub, comme celle ci-dessous, pour détecter les journaux Cloud exportés et y répondre :
Node.js
Python
Go
Java
Déployer une fonction
Utilisez la commande ci-dessous pour déployer la fonction :
// LINT.IfChange(nodejs_version) // LINT.ThenChange(:nodejs_version_console_text) // LINT.IfChange(nodejs_version_console_text) // LINT.ThenChange(:nodejs_version)Node.js
gcloud functions deploy processLogEntry \ --runtime nodejs20 \
--trigger-topic YOUR_PUBSUB_TOPIC
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
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
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
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