Cloud-Audit-Logs zeichnet Ereignisse in vielen Google Cloud -Diensten auf. Mithilfe von Senken können Sie diese Logs filtern und an Pub/Sub-Themen weiterleiten, die Cloud Run-Funktionen auslösen. So können Sie auf Ereignisse von jedemGoogle Cloud -Dienst reagieren, der Audit-Logs erstellt.
Auf dieser Seite finden Sie ein Beispiel für das Aufrufen von Funktionen aus Logeinträgen, die an ein Pub/Sub-Thema weitergeleitet werden. In dieser Anleitung werden Eventarc-Trigger verwendet. Sie können aber auch direkte Pub/Sub-Trigger verwenden, um Ihre Funktion auszulösen.
Ereignisstruktur von Pub/Sub-ausgelösten Funktionen
Funktionen, die durch Cloud Logging-Logeinträge ausgelöst werden, erhalten ein PubsubMessage-Objekt, dessen data-Parameter ein base64-codierter String ist. Bei Cloud Logging-Logereignissen wird durch das Decodieren dieses Werts der relevante Logeintrag als JSON-String zurückgegeben.
Hinweis
Der Beispielcode leitet Cloud-Audit-Logs an eine Cloud Run-Funktion weiter. Bevor Sie den Beispielcode ausführen, benötigen Sie Folgendes:
Informationen zu den zu aktivierenden APIs und den erforderlichen Rollen für die Bereitstellung von Funktionen, die von Pub/Sub ausgelöst werden, finden Sie im Leitfaden zu Pub/Sub-Triggern.
Beispielcode
Sie können eine von Pub/Sub ausgelöste Funktion verwenden, um exportierte Cloud Logging-Logs zu erkennen und darauf zu reagieren:
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 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 Folgendes:
- REGION: die Region in Google Cloud , in der Sie Ihre Funktion bereitstellen möchten. Beispiel:
europe-west1. - Das Flag
--functiongibt den Einstiegspunkt für die Funktion im Beispielquellcode an. Dies ist der Code, den Cloud Run ausführt, 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-imagegibt die Basis-Image-Umgebung für Ihre Funktion an. Weitere Informationen zu Basis-Images und den in den einzelnen Images enthaltenen Paketen finden Sie unter Laufzeit-Basis-Images.
- REGION: die Region in Google Cloud , in der Sie Ihre Funktion bereitstellen möchten. Beispiel:
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" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_NAME \ --service-account=PROJECT_NUMBER-compute@Ersetzen Sie Folgendes:
- TRIGGER_NAME: der Name des Triggers.
- EVENTARC_TRIGGER_LOCATION: der Standort des Eventarc-Triggers. Im Allgemeinen sollte der Standort eines Eventarc-Triggers mit dem Standort derGoogle 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: der Name der Funktion, die Sie bereitstellen.
- REGION: die Cloud Run-Region, in der Sie Ihre Funktion bereitgestellt haben.
- PROJECT_NUMBER: 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 Standarddienstkonto von Compute.
- Das Flag
--event-filtersgibt die Ereignisfilter an, die der Trigger überwacht. Wenn ein Ereignis mit allen Ereignisfiltern übereinstimmt, wird ein Aufruf Ihrer Funktion ausgelöst. 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-filtersmit einem unterstützten Filter im FormatATTRIBUTE=VALUEwiederholen, um weitere Filter hinzuzufügen. - TOPIC_NAME: der Name des Pub/Sub-Themas, das die Logeintragsereignisse empfängt.
- Das Flag
--transport-topicgibt das Pub/Sub-Thema an, das Eventarc zum Übertragen von Ereignissen an Ihre Funktion verwendet. Dieses Flag ist nicht erforderlich, wenn Sie zuvor kein Pub/Sub-Thema erstellt haben.
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