Trigger einer zweiten Partei mit Cloud Logging
Viele Google Cloud-Ereignisse werden in Cloud-Audit-Logs protokolliert. Sie können diese Logs filtern und sie mithilfe von Senken an Pub/Sub-Themen weiterleiten. Diese Pub/Sub-Themen können dann Benachrichtigungen senden, die Cloud Run Functions-Funktionen auslösen. So können Sie benutzerdefinierte Ereignisse aus jedem Google Cloud-Dienst erstellen, der Audit-Logs erstellt.
Konfiguration
Für das Beispiel in diesem Dokument benötigen Sie ein Pub/Sub-Thema und eine Cloud Logging-Senke. Diese werden dazu verwendet, um Cloud-Audit-Logs an eine Cloud Run Functions-Funktion weiterzuleiten.
Ereignisstruktur
Wie alle durch Pub/Sub ausgelöste Funktionen erhalten Funktionen, die von Cloud-Logeinträgen ausgelöst werden, ein PubsubMessage
-Objekt, dessen data
-Parameter ein base64
-codierter String ist. Bei Cloud-Logereignissen wird durch die Decodierung dieses Werts der relevante Logeintrag als JSON-String zurückgegeben.
Beispielcode
Sie können eine durch Pub/Sub ausgelöste Funktion verwenden, um exportierte Cloud-Logs zu erkennen und zu verarbeiten:
Node.js
Python
Go
Java
Funktion bereitstellen
Geben Sie den folgenden Befehl ein, um die Funktion bereitzustellen:
Node.js
gcloud functions deploy processLogEntry \ --runtime nodejs20 \
--trigger-topic YOUR_PUBSUB_TOPIC/
FLAGS...
Verwenden Sie das Flag --runtime
, um die Laufzeit-ID einer unterstützten Node.js-Version anzugeben und die Funktion auszuführen.
Python
gcloud functions deploy process_log_entry \ --runtime python312 \
--trigger-topic YOUR_PUBSUB_TOPIC/
FLAGS...
Verwenden Sie das Flag --runtime
, um die Laufzeit-ID einer unterstützten Python-Version anzugeben und die Funktion auszuführen.
Go
gcloud functions deploy ProcessLogEntry \ --runtime go121 \
--trigger-topic YOUR_PUBSUB_TOPIC/
FLAGS...
Verwenden Sie das Flag --runtime
, um die Laufzeit-ID einer unterstützten Go-Version anzugeben und die Funktion auszuführen.
Java
gcloud functions deploy java-log-function \ --entry-point StackdriverLogging \ --runtime java17 \ --memory 512MB \
--trigger-topic YOUR_PUBSUB_TOPIC/
FLAGS...
Verwenden Sie das Flag --runtime
, um die Laufzeit-ID einer unterstützten Java-Version anzugeben und die Funktion auszuführen.
Funktion auslösen
Wenn ein Cloud-Logeintrag erstellt wird, der mit einem Ihrer Filter übereinstimmt, sollten Sie entsprechende Logeinträge für Ihre Funktion sehen:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS