Molti Google Cloud eventi vengono registrati in Cloud Audit Logs. Puoi filtrare questi log e inoltrarli ad argomenti Pub/Sub utilizzando i sink. Questi argomenti Pub/Sub possono quindi inviare notifiche che attivano le funzioni Cloud Run. Puoi creare eventi personalizzati da qualsiasi Google Cloud servizio che produce audit log.
Questa pagina mostra un esempio di come attivare le funzioni dalle voci di log indirizzate a un argomento Pub/Sub.
Struttura degli eventi delle funzioni attivate da Pub/Sub
Come tutte le funzioni attivate da Pub/Sub, quelle
attivate da voci di log Cloud Logging ricevono un
PubsubMessage oggetto il cui parametro data è una stringa codificata in
base64. Per gli eventi di log Cloud Logging, la decodifica di questo valore restituisce la voce di log pertinente come stringa JSON.
Prima di iniziare
Il codice campione inoltra Cloud Audit Logs a una funzione Cloud Run. Prima di eseguire il codice campione, ti servirà quanto segue:
Consulta la guida ai trigger Pub/Sub per le API da abilitare e i ruoli richiesti per il deployment delle funzioni attivate da Pub/Sub.
Codice campione
Puoi utilizzare una funzione attivata da Pub/Sub per rilevare e rispondere ai log Cloud Logging esportati:
Node.js
Python
Go
Java
Eseguire il deployment e attivare una funzione
Per configurare un trigger durante il deployment della funzione:
Esegui questo comando nella directory che contiene il codice campione per eseguire il deployment della funzione:
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 REGIONSostituisci:
REGION con la Google Cloud regione in cui vuoi eseguire il deployment della funzione. Ad esempio,
europe-west1.Il flag
--functionspecifica l'entry point della funzione nel codice sorgente di esempio. Questo è il codice eseguito da Cloud Run quando viene eseguita la funzione. Il valore di questo flag deve essere un nome di funzione o un nome di classe completo esistente nel codice sorgente.Il flag
--base-imagespecifica l'ambiente dell'immagine di base per la funzione. Per maggiori dettagli sulle immagini di base e sui pacchetti inclusi in ogni immagine, consulta Immagini di base dei runtime.
Esegui questo comando per creare un trigger che filtri gli eventi:
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.comSostituisci:
TRIGGER_NAME con il nome del trigger.
EVENTARC_TRIGGER_LOCATION con la località per il trigger Eventarc. In generale, la località di un trigger Eventarc deve corrispondere a quella della Google Cloud risorsa che vuoi monitorare per gli eventi. Nella maggior parte degli scenari, devi anche eseguire il deployment della funzione nella stessa regione. Per maggiori dettagli sulle località dei trigger Eventarc, consulta Informazioni sulle località Eventarc.
SERVICE con il nome della funzione di cui stai eseguendo il deployment.
REGION con la regione Cloud Run della funzione.
PROJECT_NUMBER con il numero del tuo Google Cloud progetto. I trigger Eventarc sono collegati ai service account da utilizzare come identità quando viene richiamata la funzione. Il account di servizio del trigger Eventarc deve avere l'autorizzazione per richiamare la funzione. Per impostazione predefinita, Cloud Run utilizza il account di servizio Compute predefinito.
Il flag
--event-filtersspecifica i filtri degli eventi monitorati dal trigger. Un evento che corrisponde a tutti i filtrievent-filtersattiva le chiamate alla funzione. Ogni trigger deve avere un tipo di evento supportato . Non puoi modificare il tipo di filtro degli eventi dopo la creazione. Per modificare il tipo di filtro degli eventi, devi creare un nuovo trigger ed eliminare quello precedente. (Facoltativo) Puoi ripetere il flag--event-filterscon un filtro supportato nel formatoATTRIBUTE=VALUEper aggiungere altri filtri.
Voce di log Cloud
Quando viene creata una voce di log Cloud che corrisponde a uno dei tuoi filtri, le voci di log corrispondenti per la tua funzione nella Google Cloud console dovrebbero avere il seguente aspetto:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS