Molti eventi Google Cloud vengono registrati in Cloud Audit Logs. Puoifiltrare questi log e inoltrarli agli argomenti Pub/Sub utilizzando destinazioni. Questi argomenti Pub/Sub possono quindi inviare notifiche che attivano le funzioni Cloud Run. Puoi creare eventi personalizzati da qualsiasi servizio Google Cloud che generi audit log.
Questa pagina mostra un esempio di come attivare le funzioni dalle voci di log instradate in un argomento Pub/Sub.
Struttura degli eventi delle funzioni attivate da Pub/Sub
Come tutte le funzioni attivate da Pub/Sub, le funzioni attivate dalle voci di log di Cloud Logging ricevono un oggetto PubsubMessage
il cui parametro data
è una stringa codificata in base64
. Per gli eventi di log di 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, devi disporre di quanto segue:
Consulta la guida agli attivatori Pub/Sub per le API da abilitare e i ruoli richiesti per il deployment delle funzioni attivate da Pub/Sub.
Codice di esempio
Puoi utilizzare una funzione attivata da Pub/Sub per rilevare e rispondere ai log di Cloud Logging esportati:
Node.js
Python
Vai
Java
Esegui il deployment e attiva una funzione
Per configurare un trigger durante il deployment della funzione:
Esegui il seguente comando nella directory contenente il codice campione per eseguire il deployment della funzione:
Node.js
gcloud beta run deploy nodejs-log-function \ --source . \ --function processLogEntry \ --base-image nodejs20 \ --region REGION
Python
gcloud beta run deploy python-log-function \ --source . \ --function process_log_entry \ --base-image python312 \ --region REGION
Vai
gcloud beta run deploy go-log-function \ --source . \ --function ProcessLogEntry \ --base-image go122 \ --region REGION
Java
gcloud beta run deploy java-log-function \ --source . \ --function StackdriverLogging \ --base-image java21 \ --region REGION
Sostituisci:
REGION con la regione Google Cloud in cui vuoi eseguire il deployment della funzione. Ad esempio:
us-central1
.Il flag
--function
specifica il punto di contatto della funzione nel codice sorgente di esempio. Questo è il codice che Cloud Run esegue quando viene eseguita la funzione. Il valore di questo flag deve essere un nome di funzione o un nome di classe completamente qualificato esistente nel codice sorgente.Il flag
--base-image
specifica l'ambiente dell'immagine di base per la funzione. Per ulteriori dettagli sulle immagini di base e sui pacchetti inclusi in ogni immagine, consulta Immagini di base dei runtime.
Esegui il comando seguente per creare un attivatore che filtra 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.com
Sostituisci:
TRIGGER_NAME con il nome dell'attivatore.
EVENTARC_TRIGGER_LOCATION con la posizione per l'trigger Eventarc. In generale, la posizione di un trigger Eventarc deve corrispondere alla posizione della risorsa Google Cloud che vuoi monitorare per rilevare gli eventi. Nella maggior parte dei casi, devi anche eseguire il deployment della funzione nella stessa regione. Per ulteriori 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 progetto Google Cloud. Gli attivatori Eventarc sono collegati agli account di servizio da utilizzare come identità quando viene invocata la funzione. L'account di servizio dell'attivatore Eventarc deve disporre dell'autorizzazione per richiamare la funzione. Per impostazione predefinita, Cloud Run utilizza l'account di servizio Compute predefinito.
Il flag
--event-filters
specifica i filtri eventi monitorati dall'attivatore. Un evento che corrisponde a tutti i filtrievent-filters
attiva le chiamate alla funzione. Ogni attivatore deve avere un tipo di evento supportato. Non puoi modificare il tipo di filtro evento dopo la creazione. Per modificare il tipo di filtro eventi, devi creare un nuovo attivatore ed eliminare quello precedente. Se vuoi, puoi ripetere il flag--event-filters
con un filtro supportato nel moduloATTRIBUTE=VALUE
per aggiungere altri filtri.
Voce di log di Cloud
Quando viene creata una voce di log Cloud corrispondente a uno dei tuoi filtri, le voci di log corrispondenti per la funzione nella console Google Cloud dovrebbero avere il seguente aspetto:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS