Molti Google Cloud eventi vengono registrati in Cloud Audit Logs. Puoi filtrarli e inoltrarli agli 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 servizio Google Cloud che produce log di controllo.
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, le funzioni
attivate dalle voci di log di Cloud Logging ricevono un
oggetto PubsubMessage
il cui parametro data
è una
stringa con codifica 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, ti serviranno:
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 di esempio
Puoi utilizzare una funzione attivata da Pub/Sub per rilevare e rispondere ai log di 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 REGION
Python
gcloud run deploy python-log-function \ --source . \ --function process_log_entry \ --base-image python312 \ --region REGION
Vai
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
Sostituisci:
REGION con la Google Cloud regione in cui vuoi eseguire il deployment della funzione. Ad esempio:
europe-west1
.Il flag
--function
specifica l'entry point della funzione nel codice sorgente di esempio. Questo è il codice che Cloud Run esegue quando la funzione viene eseguita. Il valore di questo flag deve essere un nome di funzione o un nome di classe completo che esiste nel codice sorgente.Il flag
--base-image
specifica l'ambiente dell'immagine di base per la tua 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.com
Sostituisci:
TRIGGER_NAME con il nome dell'attivatore.
EVENTARC_TRIGGER_LOCATION con la località del trigger Eventarc. In generale, la località di un trigger Eventarc deve corrispondere a quella della risorsa Google Cloud che vuoi monitorare per gli eventi. Nella maggior parte degli scenari, devi anche eseguire il deployment della funzione nella stessa regione. Per ulteriori dettagli sulle località dei trigger Eventarc, consulta la sezione Informazioni sulle località Eventarc.
SERVICE con il nome della funzione che stai eseguendo il deployment.
REGION con la regione di Cloud Run della funzione.
PROJECT_NUMBER con il numero del tuo progetto Google Cloud . I trigger Eventarc sono collegati agli account di servizio da utilizzare come identità quando viene richiamata la funzione. Il account di servizio del trigger 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 dal trigger. Un evento che corrisponde a tutti ievent-filters
, i filtri attiva le chiamate alla tua funzione. Ogni attivatore deve avere un tipo di evento supportato. Non puoi modificare il tipo di filtro eventi dopo la creazione. Per modificare il tipo di filtro eventi, devi creare un nuovo trigger ed eliminare quello precedente. (Facoltativo) Puoi ripetere il flag--event-filters
con un filtro supportato nel formatoATTRIBUTE=VALUE
per aggiungere altri filtri.
Voce di log di 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 console Google Cloud dovrebbero avere il seguente aspetto:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS