Viele Google Cloud Ereignisse werden in Cloud-Audit-Logs protokolliert. Sie können diese Logs filtern und sie mithilfe von Senkenan Pub/Sub-Themen weiterleiten. Diese Pub/Sub-Themen können dann Benachrichtigungen senden , die Cloud Run Functions-Funktionen auslösen. Sie können benutzerdefinierte Ereignisse aus jedem Google Cloud Dienst erstellen, der Audit-Logserstellt.
Auf dieser Seite wird ein Beispiel dafür gezeigt, wie Sie Funktionen aus Logeinträgen auslösen, 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.
Hinweis
Der Beispielcode leitet Cloud-Audit-Logs an eine Cloud Run Functions-Funktion weiter. Bevor Sie den Beispielcode ausführen, benötigen Sie Folgendes:
In der Anleitung zu Pub/Sub-Triggern finden Sie die APIs, die aktiviert werden müssen, und die 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 im Verzeichnis mit dem Beispielcode aus, um die Funktion bereitzustellen:
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 REGIONErsetzen Sie:
REGION durch die Google Cloud Region, in der Sie die Funktion bereitstellen möchten. Beispiel:
europe-west1.Das Flag
--functiongibt den Einstiegspunkt für die Funktion im Beispielquellcode an. Dies ist der Code, der von Cloud Run ausgeführt wird, wenn die 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-imagegibt die Basis-Image-Umgebung für die Funktion an. Weitere Informationen zu Basis-Images und den in den einzelnen Images enthaltenen Paketen finden Sie unter Basis-Images für Runtimes.
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.comErsetzen Sie:
TRIGGER_NAME durch den Namen für den Trigger.
EVENTARC_TRIGGER_LOCATION durch den Standort für den Eventarc-Trigger. 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. Standardmäßig verwendet Cloud Run das Compute-Standarddienstkonto.
Das Flag
--event-filtersgibt 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 der Erstellung 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-filtersmit einem unterstützten Filter im FormatATTRIBUTE=VALUEwiederholen, 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