Cloud Audit Logs registra eventi in molti servizi Google Cloud . Utilizzando i sink, puoi filtrare questi log e inoltrarli ad argomenti Pub/Sub che attivano Cloud Run Functions. In questo modo puoi rispondere agli eventi di qualsiasi servizioGoogle Cloud che produce audit log.
Questa pagina mostra un esempio di come richiamare funzioni da voci di log indirizzate a un argomento Pub/Sub. Questo tutorial utilizza i trigger Eventarc, ma in alternativa puoi utilizzare i trigger Pub/Sub diretti per attivare la funzione.
Struttura degli eventi delle 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 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 di Cloud Logging esportati:
Node.js
Python
Go
Java
Esegui il deployment e attiva 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 quanto segue:
- REGION: la regione Google Cloud 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 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 completo esistente nel codice sorgente. - Il flag
--base-imagespecifica 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.
- REGION: la regione Google Cloud in cui vuoi eseguire il deployment della funzione. Ad esempio
Esegui questo comando per creare un trigger 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" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_NAME \ --service-account=PROJECT_NUMBER-compute@Sostituisci quanto segue:
- TRIGGER_NAME: il nome del trigger.
- EVENTARC_TRIGGER_LOCATION: la località del trigger Eventarc. In generale, la località di un trigger Eventarc deve corrispondere alla località della risorsaGoogle Cloud che vuoi monitorare per gli eventi. Nella maggior parte degli scenari, devi eseguire il deployment della funzione nella stessa regione. Per ulteriori dettagli sulle località dei trigger Eventarc, consulta Informazioni sulle località Eventarc.
- SERVICE: il nome della funzione di cui stai eseguendo il deployment.
- REGION: la regione Cloud Run in cui hai eseguito il deployment della funzione.
- PROJECT_NUMBER: il tuo numero di progetto Google Cloud . I trigger Eventarc sono collegati ai service account da utilizzare come identità quando richiami 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-filtersspecifica i filtri degli eventi monitorati dal trigger. Quando un evento corrisponde a tutti i filtri, attiva una chiamata 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. Se vuoi, puoi ripetere il flag--event-filterscon un filtro supportato nel formatoATTRIBUTE=VALUEper aggiungere altri filtri. - TOPIC_NAME: il nome dell'argomento Pub/Sub che riceve gli eventi voce di log.
- Il flag
--transport-topicspecifica l'argomento Pub/Sub utilizzato da Eventarc per trasportare gli eventi alla tua funzione. Tieni presente che questo flag non è obbligatorio se non hai creato in precedenza un argomento Pub/Sub.
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 consoleGoogle Cloud dovrebbero essere simili alle seguenti:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS