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-Funktionen auslösen. Sie können benutzerdefinierte Ereignisse aus jedem Google Cloud Dienst erstellen, der Audit-Logs generiert.
Auf dieser Seite finden Sie ein Beispiel dafür, wie Funktionen über Protokolleinträge ausgelöst werden, die an ein Pub/Sub-Thema weitergeleitet werden.
Ereignisstruktur von durch Pub/Sub ausgelösten Funktionen
Wie alle durch Pub/Sub ausgelösten Funktionen erhalten Funktionen, die von Cloud Logging-Logeinträgen ausgelöst werden, ein PubsubMessage
-Objekt, dessen data
-Parameter ein base64
-codierter String ist. Bei Cloud Logging-Logereignissen wird durch die Decodierung dieses Werts der relevante Logeintrag als JSON-String zurückgegeben.
Hinweise
Im Beispielcode werden Cloud-Audit-Logs an eine Cloud Run-Funktion weitergeleitet. Bevor Sie den Beispielcode ausführen, benötigen Sie Folgendes:
Im Leitfaden zu Pub/Sub-Triggern finden Sie Informationen zu den APIs, die Sie aktivieren müssen, und zu den erforderlichen Rollen für die Bereitstellung von Funktionen, die von Pub/Sub ausgelöst werden.
Beispielcode
Sie können eine durch Pub/Sub ausgelöste Funktion verwenden, um exportierte Cloud Logging-Logs zu erkennen und zu verarbeiten:
Node.js
Python
Go
Java
Funktion bereitstellen und auslösen
So konfigurieren Sie einen Trigger während der Funktionsbereitstellung:
Führen Sie den folgenden Befehl in dem Verzeichnis aus, das den Beispielcode enthält, um die Funktion bereitzustellen:
Node.js
gcloud run deploy nodejs-log-function \ --source . \ --function processLogEntry \ --base-image nodejs20 \ --region REGION
Python
gcloud run deploy python-log-function \ --source . \ --function process_log_entry \ --base-image python312 \ --region REGION
Go
gcloud run deploy go-log-function \ --source . \ --function ProcessLogEntry \ --base-image go122 \ --region REGION
Java
gcloud run deploy java-log-function \ --source . \ --function StackdriverLogging \ --base-image java21 \ --region REGION
Ersetzen Sie:
REGION mit der Google Cloud Region, in der Sie die Funktion bereitstellen möchten. Beispiel:
us-central1
Das Flag
--function
gibt den Einstiegspunkt für die Funktion im Beispiel-Quellcode an. Dies ist der Code, der von Cloud Run ausgeführt wird, wenn Ihre Funktion ausgeführt wird. Der Wert dieses Flags muss ein Funktionsname oder ein voll qualifizierter Klassenname sein, der in Ihrem Quellcode vorhanden ist.Das Flag
--base-image
gibt die Umgebung des Basis-Images für Ihre Funktion an. Weitere Informationen zu Basis-Images und den in den einzelnen Images enthaltenen Paketen finden Sie unter Laufzeit-Basis-Images.
Führen Sie den folgenden Befehl aus, um einen Trigger zu erstellen, der Ereignisse filtert:
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.com
Ersetzen Sie:
TRIGGER_NAME durch den Namen des Triggers.
EVENTARC_TRIGGER_LOCATION mit dem Standort des Eventarc-Triggers. Im Allgemeinen sollte der Standort eines Eventarc-Triggers mit dem Standort der Google Cloud Ressource übereinstimmen, die Sie auf Ereignisse überwachen möchten. In den meisten Szenarien sollten Sie Ihre Funktion auch in derselben Region bereitstellen. Weitere Informationen zu Eventarc-Triggerstandorten finden Sie unter Informationen zu Eventarc-Standorten.
SERVICE durch den Namen der Funktion, die Sie bereitstellen.
REGION durch die Cloud Run-Region der Funktion.
PROJECT_NUMBER durch Ihre Google Cloud Projektnummer. Eventarc-Trigger sind mit Dienstkonten verknüpft, um sie beim Aufrufen Ihrer Funktion als Identität zu verwenden. Das Dienstkonto Ihres Eventarc-Triggers muss die Berechtigung zum Aufrufen Ihrer Funktion haben. Cloud Run verwendet standardmäßig das Compute-Standarddienstkonto.
Das Flag
--event-filters
gibt die Ereignisfilter an, die der Trigger überwacht. Ein Ereignis, das mit allenevent-filters
-Filtern übereinstimmt, löst Aufrufe Ihrer Funktion aus. Jeder Trigger muss einen unterstützten Ereignistyp haben. Der Ereignisfiltertyp kann nach dem Erstellen nicht mehr geändert werden. Wenn Sie den Ereignisfiltertyp ändern möchten, müssen Sie einen neuen Trigger erstellen und den alten löschen. Optional können Sie das Flag--event-filters
mit einem unterstützten Filter im FormatATTRIBUTE=VALUE
wiederholen, um weitere Filter hinzuzufügen.
Cloud-Logeintrag
Wenn ein Cloud-Logeintrag erstellt wird, der mit einem Ihrer Filter übereinstimmt, sollten die entsprechenden Logeinträge für Ihre Funktion in der Google Cloud Console so aussehen:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS