Questa guida mostra esempi di funzioni che vengono attivate quando apporti modifiche a un documento all'interno di una raccolta specificata.
Prima di iniziare
Prima di eseguire il codice campione in questa guida, devi:
- Abilita le API e concedi i ruoli richiesti per il deployment delle funzioni
- Configurare un database Firestore
Esempi
Gli esempi riportati di seguito mostrano come scrivere funzioni che rispondono a un trigger Firestore.
Esempio 1: funzione Ciao Firestore
L'esempio seguente stampa i campi di un evento Firestore attivante:
Node.js
Python
Vai
Java
C#
Esegui il deployment della funzione Hello Firestore
Se non l'hai ancora fatto, configura il database Firestore.
Fai clic sulla scheda per visualizzare le istruzioni per utilizzare lo strumento che preferisci.
Console
Quando utilizzi la console Google Cloud per creare una funzione, puoi anche aggiungere un trigger. Per creare un attivatore per la funzione:
Nella console Google Cloud, vai a Cloud Run:
Fai clic su Scrivi una funzione e inserisci i dettagli della funzione. Per ulteriori informazioni sulla configurazione delle funzioni durante il deployment, consulta Eseguire il deployment delle funzioni.
Nella sezione Attivazione, fai clic su Aggiungi attivatore.
Seleziona Trigger di Firestore.
Nel riquadro Trigger Eventarc, modifica i dettagli dell'attivatore come segue:
Inserisci un nome per l'attivatore nel campo Nome trigger o utilizza il nome predefinito.
Seleziona un Tipo di attivatore dall'elenco per specificare uno dei seguenti tipi di attivatore:
Origini Google per specificare gli trigger per Pub/Sub, Cloud Storage, Firestore e altri fornitori di eventi Google.
Di terze parti per l'integrazione con fornitori non Google che offrono un'origine Eventarc. Per ulteriori informazioni, consulta Eventi di terze parti in Eventarc.
Seleziona Firestore dall'elenco Provider di eventi per selezionare un prodotto che fornisce il tipo di evento per attivare la funzione. Per l'elenco dei fornitori di eventi, consulta Fornitori e destinazioni di eventi.
Seleziona type=google.cloud.firestore.document.v1.written dall'elenco Tipo di evento. La configurazione dell'attivatore varia a seconda del tipo di evento supportato. Per saperne di più, consulta Tipi di eventi.
Nella sezione Filtri, seleziona un database, un'operazione e i valori degli attributi oppure utilizza le selezioni predefinite.
Se il campo Regione è attivato, seleziona una località per l'attivatore Eventarc. In generale, la posizione di un trigger Eventarc deve corrispondere alla posizione della risorsa Google Cloud per la quale vuoi monitorare gli eventi. Nella maggior parte degli scenari, devi anche eseguire il deployment della funzione nella stessa regione. Consulta la sezione Informazioni sulle località Eventarc per ulteriori dettagli sulle località dei trigger Eventarc.
Nel campo Account di servizio, seleziona un account di servizio. Gli attivatori Eventarc sono collegati agli account di servizio da usare 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 predefinito di Compute Engine.
Se vuoi, specifica il percorso dell'URL del servizio a cui inviare la richiesta in arrivo. Si tratta del percorso relativo nel servizio di destinazione a cui devono essere inviati gli eventi per l'attivatore. Ad esempio:
/
,/route
,route
eroute/subroute
.
Dopo aver compilato i campi obbligatori, fai clic su Salva trigger.
gcloud
Quando crei una funzione utilizzando gcloud CLI, devi prima eseguirne il deployment e poi creare un attivatore. Per creare un attivatore per la funzione:
Esegui il seguente comando nella directory contenente il codice campione per eseguire il deployment della funzione:
gcloud beta run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE_ID \ --region REGION
Sostituisci:
FUNCTION con il nome della funzione di cui stai eseguendo il deployment. Puoi omettere del tutto questo parametro, ma se lo fai ti verrà chiesto il nome.
FUNCTION_ENTRYPOINT con il punto di ingresso della funzione nel codice sorgente. 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.
BASE_IMAGE_ID con 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.
REGION con la regione Google Cloud in cui vuoi eseguire il deployment della funzione. Ad esempio:
us-central1
.
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=FUNCTION \ --destination-run-region=REGION \ --event-filters=type=google.cloud.firestore.document.v1.written \ --event-filters=database='(default)' \ --event-data-content-type=application/protobuf \ --event-filters-path-pattern=document='users/{username}' \ --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 degli scenari, devi anche eseguire il deployment della funzione nella stessa regione. Per ulteriori informazioni, consulta Località Eventarc.
FUNCTION 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 evento, devi creare un nuovo attivatore ed eliminare quello precedente. Se vuoi, puoi ripetere il flag--event-filters
con un filtro supportato nel formatoATTRIBUTE=VALUE
per aggiungere altri filtri.
Utilizza gli altri campi così come sono:
--event-filters=type=google.cloud.firestore.document.v1.written
specifica che la funzione viene attivata quando un documento viene creato, aggiornato o eliminato, in base algoogle.cloud.firestore.document.v1.written
tipo di evento.--event-filters=database='(default)'
specifica il database Firebase. Per il nome del database predefinito, utilizza(default)
.--event-filters-path-pattern=document='users/{username}'
fornisce il pattern del percorso dei documenti che devono essere monitorati per rilevare eventuali modifiche pertinenti. Questo pattern di percorso indica che tutti i documenti della raccoltausers
devono essere monitorati. Per ulteriori informazioni, consulta Informazioni sui pattern di percorso.
Testa la funzione Hello Firestore
Per testare la funzione Hello Firestore, configura una raccolta denominata
users
nel tuo database Firestore:
Nella console Google Cloud, vai alla pagina dei database Firestore:
Fai clic su Avvia una raccolta.
Specifica
users
come ID raccolta.Per iniziare ad aggiungere il primo documento della raccolta, in Aggiungi il primo documento accetta l'ID documento generato automaticamente.
Aggiungi almeno un campo per il documento, specificando un nome e un valore. Ad esempio, in Nome campo, inserisci
username
e in Valore campo, inseriscirowan
.Quando hai terminato, fai clic su Salva.
Questa azione crea un nuovo documento, attivando così la funzione.
Per verificare che la funzione sia stata attivata, fai clic sul nome collegato della funzione nella pagina Panoramica di Cloud Run della console Google Cloud per aprire la pagina Dettagli servizio.
Seleziona la scheda Log e cerca questa stringa:
Function triggered by change to: //firestore.googleapis.com/projects/your-project-id/databases/(default)'
Esempio 2: funzione di conversione in maiuscolo
Il seguente esempio recupera il valore aggiunto dall'utente, converte la stringa in quella posizione in lettere maiuscole e sostituisce il valore con la stringa in maiuscolo:
Node.js
Utilizza protobufjs per decodificare i dati
dell'evento. Includi google.events.cloud.firestore.v1
data.proto
nel codice sorgente.
Python
Vai
Java
C#
Esegui il deployment della funzione Converti in maiuscolo
Se non l'hai ancora fatto, configura il database Firestore.
Fai clic sulla scheda per le istruzioni relative allo strumento che preferisci.
Console
Quando utilizzi la console Google Cloud per creare una funzione, puoi anche aggiungere un trigger. Per creare un attivatore per la funzione:
Nella console Google Cloud, vai a Cloud Run:
Fai clic su Scrivi una funzione e inserisci i dettagli della funzione. Per ulteriori informazioni sulla configurazione delle funzioni durante il deployment, consulta Eseguire il deployment delle funzioni.
Nella sezione Attivazione, fai clic su Aggiungi attivatore.
Seleziona Trigger di Firestore.
Nel riquadro Trigger Eventarc, modifica i dettagli dell'attivatore come segue:
Inserisci un nome per l'attivatore nel campo Nome trigger o utilizza il nome predefinito.
Seleziona un Tipo di attivatore dall'elenco per specificare uno dei seguenti tipi di attivatore:
Origini Google per specificare gli trigger per Pub/Sub, Cloud Storage, Firestore e altri fornitori di eventi Google.
Di terze parti per l'integrazione con fornitori non Google che offrono un'origine Eventarc. Per ulteriori informazioni, consulta Eventi di terze parti in Eventarc.
Seleziona Firestore dall'elenco Provider di eventi per selezionare un prodotto che fornisce il tipo di evento per attivare la funzione. Per l'elenco dei fornitori di eventi, consulta Fornitori e destinazioni di eventi.
Seleziona type=google.cloud.firestore.document.v1.written dall'elenco Tipo di evento. La configurazione dell'attivatore varia a seconda del tipo di evento supportato. Per saperne di più, consulta Tipi di eventi.
Nella sezione Filtri, seleziona un database, un'operazione e i valori degli attributi oppure utilizza le selezioni predefinite.
Se il campo Regione è attivato, seleziona una località per l'attivatore Eventarc. In generale, la posizione di un trigger Eventarc deve corrispondere alla posizione della risorsa Google Cloud per la quale vuoi monitorare gli eventi. Nella maggior parte degli scenari, devi anche eseguire il deployment della funzione nella stessa regione. Consulta la sezione Informazioni sulle località Eventarc per ulteriori dettagli sulle località dei trigger Eventarc.
Nel campo Account di servizio, seleziona un account di servizio. Gli attivatori Eventarc sono collegati agli account di servizio da usare 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 predefinito di Compute Engine.
Se vuoi, specifica il percorso dell'URL del servizio a cui inviare la richiesta in arrivo. Si tratta del percorso relativo nel servizio di destinazione a cui devono essere inviati gli eventi per l'attivatore. Ad esempio:
/
,/route
,route
eroute/subroute
.
Dopo aver compilato i campi obbligatori, fai clic su Salva trigger.
gcloud
Quando crei una funzione utilizzando gcloud CLI, devi prima eseguirne il deployment e poi creare un attivatore. Per creare un attivatore per la funzione:
Esegui il seguente comando nella directory contenente il codice campione per eseguire il deployment della funzione:
gcloud beta run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE_ID \ --region REGION
Sostituisci:
FUNCTION con il nome della funzione di cui stai eseguendo il deployment. Puoi omettere del tutto questo parametro, ma se lo fai ti verrà chiesto il nome.
FUNCTION_ENTRYPOINT con il punto di ingresso della funzione nel codice sorgente. 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.
BASE_IMAGE_ID con 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.
REGION con la regione Google Cloud in cui vuoi eseguire il deployment della funzione. Ad esempio:
us-central1
.
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=FUNCTION \ --destination-run-region=REGION \ --event-filters=type=google.cloud.firestore.document.v1.written \ --event-filters=database='(default)' \ --event-data-content-type=application/protobuf \ --event-filters-path-pattern=document='messages/{pushId}' \ --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 gli eventi. Nella maggior parte degli scenari, devi anche eseguire il deployment della funzione nella stessa regione. Per ulteriori informazioni, consulta Località Eventarc.
FUNCTION 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 evento, devi creare un nuovo attivatore ed eliminare quello precedente. Se vuoi, puoi ripetere il flag--event-filters
con un filtro supportato nel formatoATTRIBUTE=VALUE
per aggiungere altri filtri.
Utilizza gli altri campi così come sono:
--event-filters=type=google.cloud.firestore.document.v1.written
specifica che la funzione viene attivata quando viene creato, aggiornato o eliminato un documento, in base algoogle.cloud.firestore.document.v1.written
tipo di evento.--event-filters=database='(default)'
specifica il database Firestore. Per il nome del database predefinito, utilizza(default)
.--event-filters-path-pattern=document='messages/{pushId}'
fornisce il pattern del percorso dei documenti che devono essere monitorati per rilevare eventuali modifiche pertinenti. Questo pattern di percorso indica che tutti i documenti della raccoltamessages
devono essere monitorati. Per ulteriori informazioni, consulta Informazioni sui pattern di percorso.
Testare la funzione Converti in maiuscolo
Per testare la funzione Converti in maiuscolo che hai appena disegnato, configura
una raccolta denominata messages
nel
database Firestore:
Nella console Google Cloud, vai alla pagina dei database Firestore:
Fai clic su Avvia una raccolta.
Specifica
messages
come ID raccolta.Per iniziare ad aggiungere il primo documento della raccolta, in Aggiungi il primo documento accetta l'ID documento generato automaticamente.
Per attivare la funzione di cui è stato eseguito il deployment, aggiungi un documento in cui il nome del campo sia
original
e il valore del campo siaminka
.Quando salvi il documento, puoi vedere che la parola in minuscolo nel campo del valore viene convertita in maiuscolo.
Se successivamente modifichi il valore del campo in modo che contenga lettere minuscole, la funzione viene attivata di nuovo e tutte le lettere minuscole vengono convertite in maiuscole.
Limitazioni per le funzioni
- L'ordine non è garantito. Le variazioni rapide possono attivare le chiamate di funzione in un ordine imprevisto.
- Gli eventi vengono inviati almeno una volta, ma un singolo evento può comportare più chiamate di funzione. Evita di fare affidamento su meccanismi di esecuzione esattamente una volta e scrivi funzioni idempotenti.
- Un trigger è associato a un singolo database. Non puoi creare un attivatore che corrisponda a più database.
- L'eliminazione di un database non comporta l'eliminazione automatica degli attivatori per quel database. L'attivatore smette di inviare eventi, ma continua a esistere finché non lo elimini.