Questa guida mostra esempi di funzioni 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:
- Abilitare le API e concedere i ruoli richiesti per il deployment delle funzioni
- Configura un database Firestore
Esempi
Gli esempi riportati di seguito mostrano come scrivere funzioni che rispondono a un trigger Firestore.
Esempio 1: funzione Hello Firestore
Il seguente esempio stampa i campi di un evento Firestore trigger:
Node.js
Python
Go
Java
C#
Esegui il deployment della funzione Hello Firestore
Se non l'hai ancora fatto, configura il tuo database Firestore.
Dopo aver eseguito il deployment di una funzione, puoi configurare un trigger utilizzando la console Google Cloud , Google Cloud CLI o Terraform.
Console
Quando utilizzi la console Google Cloud per creare una funzione, puoi anche aggiungere un trigger alla funzione. Per creare un attivatore per la tua 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 Esegui il deployment delle funzioni.
Nella sezione Attivatore, fai clic su Aggiungi attivatore.
Seleziona Trigger di Firestore.
Nel riquadro Trigger Eventarc, modifica i dettagli del trigger come segue:
Inserisci un nome per l'attivatore nel campo Nome attivatore o utilizza il nome predefinito.
Seleziona un tipo di trigger dall'elenco:
Origini Google per specificare i trigger per Pub/Sub, Cloud Storage, Firestore e altri provider di eventi Google.
Terze parti per l'integrazione con provider non Google che offrono un'origine Eventarc. Per saperne di più, vedi Eventi di terze parti in Eventarc.
Seleziona Cloud Firestore dall'elenco Provider di eventi per selezionare un prodotto che fornisca il tipo di evento per attivare la funzione. Per l'elenco dei fornitori di eventi, vedi Fornitori e destinazioni di eventi.
Seleziona type=google.cloud.firestore.document.v1.written dall'elenco Tipo di evento. La configurazione del trigger varia a seconda del tipo di evento supportato. Per saperne di più, consulta Tipi di eventi.
Lascia invariato il campo Tipo di contenuti dei dati sugli eventi.
Nella sezione Filtri, seleziona un database, un'operazione e valori degli attributi oppure utilizza le selezioni predefinite.
Se il campo Regione è attivo, seleziona una posizione per il trigger Eventarc. In generale, la località di un trigger Eventarc deve corrispondere a quella della risorsaGoogle 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.
Nel campo Service account, seleziona un account di servizio. I trigger Eventarc sono collegati a service account 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 predefinito di Compute Engine.
(Facoltativo) Specifica il percorso dell'URL del servizio a cui inviare la richiesta in entrata. Questo è il percorso relativo nel servizio di destinazione a cui devono essere inviati gli eventi per il trigger. Ad esempio:
/,/route,routeeroute/subroute.(Facoltativo) Per abilitare i nuovi tentativi se il tentativo di consegna non va a buon fine, seleziona la casella di controllo Abilita ripetizione dei tentativi in caso di errore; in caso contrario, il comportamento predefinito è un singolo tentativo di consegna senza ripetizioni. Per saperne di più, consulta Nuovi tentativi per gli eventi.
Una volta compilati i campi obbligatori, fai clic su Salva attivatore.
Fai clic su Crea.
Nella scheda Origine, modifica il codice sorgente se necessario, poi seleziona Salva e ridistribuisci.
gcloud
Quando crei una funzione utilizzando gcloud CLI, devi prima eseguirne il deployment e poi creare un trigger. Per creare un trigger per la tua funzione:
Esegui questo comando nella directory che contiene il codice campione per eseguire il deployment della funzione:
gcloud run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE_ID \ --region REGIONSostituisci quanto segue:
FUNCTION: il nome della funzione di cui stai eseguendo il deployment. Puoi omettere completamente questo parametro, ma ti verrà chiesto il nome se lo ometti.FUNCTION_ENTRYPOINT: l'entry point 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 completo esistente nel codice sorgente.BASE_IMAGE_ID: 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.REGION: la regione Google Cloudin cui vuoi eseguire il deployment della funzione. Ad esempio:europe-west1.
Esegui questo comando per creare un trigger che filtri ed esegua il routing degli eventi:
gcloud eventarc triggers create TRIGGER_NAME \ --location=LOCATION \ --destination-run-service=FUNCTION \ --destination-run-region=DESTINATION_RUN_REGION \ --event-filters="type=EVENT_FILTER_TYPE" \ --event-filters=database='(default)' \ --event-data-content-type=application/protobuf \ --event-filters-path-pattern=document='users/{username}' \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.Sostituisci quanto segue:
TRIGGER_NAME: l'ID del trigger o un identificatore completo.LOCATION: la posizione del trigger Eventarc. In alternativa, puoi impostare la proprietàeventarc/location, ad esempiogcloud config set eventarc/location us-central1.Per evitare problemi di prestazioni e residenza dei dati, la località deve corrispondere a quella del Google Cloud servizio che genera eventi. Per saperne di più, consulta Località Eventarc.
-
FUNCTION: il nome della funzione Cloud Run di cui è stato eseguito il deployment che riceve gli eventi per il trigger. -
DESTINATION_RUN_REGION: (facoltativo) la posizione di Cloud Run in cui si trova la funzione Cloud Run di destinazione. Se non specificato, si presume che la funzione si trovi nella stessa regione del trigger. EVENT_FILTER_TYPE: l'identificatore dell'evento. Viene generato un evento quando una chiamata API per il metodo ha esito positivo. Per le operazioni a lunga esecuzione, l'evento viene generato solo al termine dell'operazione e solo se l'azione viene eseguita correttamente. Per un elenco dei tipi di eventi supportati, consulta Tipi di eventi Google supportati da Eventarc.SERVICE_ACCOUNT_NAME: il nome del account di servizio gestito dall'utente.PROJECT_ID: il tuo ID progetto Google Cloud .
Note:
- Una volta creato un trigger, non è possibile modificare il tipo di filtro eventi. Per un tipo di evento diverso, devi creare un nuovo trigger.
--event-filters=type=google.cloud.firestore.document.v1.writtenspecifica che la funzione viene attivata quando un documento viene creato, aggiornato o eliminato, in base al 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 da monitorare per le modifiche pertinenti. Questo pattern di percorso indica che devono essere monitorati tutti i documenti della raccoltausers. Per saperne di più, vedi Informazioni sui pattern di percorso.- (Facoltativo) Per specificare un singolo tentativo di invio di eventi senza ripetizioni, utilizza il flag
--max-retry-attempts. L'unico valore valido è1. Se ometti il flag, viene applicato il comportamento di ripetizione standard. Per saperne di più, vedi Nuovi tentativi per gli eventi. - Sono disponibili altri flag. Per saperne di più, vedi
gcloud eventarc triggers create.
Terraform
Per creare un trigger Eventarc per una funzione Cloud Run, consulta Creare un trigger utilizzando Terraform.
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
userscome ID raccolta.Per iniziare ad aggiungere il primo documento della raccolta, accetta l'ID documento generato automaticamente in Aggiungi il primo documento.
Aggiungi almeno un campo per il documento, specificando un nome e un valore. Ad esempio, in Nome campo, inserisci
usernamee 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 console Google Cloud nella pagina Panoramica di Cloud Run per aprire la pagina Dettagli servizio.
Nella scheda Osservabilità, seleziona la scheda Log e cerca la seguente stringa:
Function triggered by change to: //firestore.googleapis.com/projects/your-project-id/databases/(default)'
Esempio 2: funzione Converti in maiuscolo
L'esempio seguente recupera il valore aggiunto dall'utente, converte la stringa in quella posizione in maiuscolo 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
nella tua fonte.
Python
Go
Java
C#
Esegui il deployment della funzione Converti in maiuscolo
Se non l'hai ancora fatto, configura il tuo database Firestore.
Dopo aver eseguito il deployment di una funzione, puoi configurare un trigger utilizzando la console Google Cloud , Google Cloud CLI o Terraform.
Console
Quando utilizzi la console Google Cloud per creare una funzione, puoi anche aggiungere un trigger alla funzione. Per creare un attivatore per la tua 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 Esegui il deployment delle funzioni.
Nella sezione Attivatore, fai clic su Aggiungi attivatore.
Seleziona Trigger di Firestore.
Nel riquadro Trigger Eventarc, modifica i dettagli del trigger come segue:
Inserisci un nome per l'attivatore nel campo Nome attivatore o utilizza il nome predefinito.
Seleziona un tipo di trigger dall'elenco:
Origini Google per specificare i trigger per Pub/Sub, Cloud Storage, Firestore e altri provider di eventi Google.
Terze parti per l'integrazione con provider non Google che offrono un'origine Eventarc. Per saperne di più, vedi Eventi di terze parti in Eventarc.
Seleziona Firestore dall'elenco Provider di eventi per selezionare un prodotto che fornisca il tipo di evento per attivare la funzione. Per l'elenco dei fornitori di eventi, vedi Fornitori e destinazioni di eventi.
Seleziona type=google.cloud.firestore.document.v1.written dall'elenco Tipo di evento. La configurazione del trigger varia a seconda del tipo di evento supportato. Per saperne di più, consulta Tipi di eventi.
Lascia invariato il campo Tipo di contenuti dei dati sugli eventi.
Nella sezione Filtri, seleziona un database, un'operazione e valori degli attributi oppure utilizza le selezioni predefinite. Se hai assegnato un nome al database, inseriscilo nel campo Valore dell'attributo 1.
Se il campo Regione è attivo, seleziona una posizione per il trigger Eventarc. In generale, la località di un trigger Eventarc deve corrispondere a quella della risorsaGoogle 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.
Nel campo Service account, seleziona un account di servizio. I trigger Eventarc sono collegati a service account 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 predefinito di Compute Engine.
(Facoltativo) Specifica il percorso dell'URL del servizio a cui inviare la richiesta in entrata. Questo è il percorso relativo nel servizio di destinazione a cui devono essere inviati gli eventi per il trigger. Ad esempio:
/,/route,routeeroute/subroute.(Facoltativo) Per abilitare i nuovi tentativi se il tentativo di consegna non va a buon fine, seleziona la casella di controllo Abilita ripetizione dei tentativi in caso di errore; in caso contrario, il comportamento predefinito è un singolo tentativo di consegna senza ripetizioni. Per saperne di più, consulta Nuovi tentativi per gli eventi.
Una volta compilati i campi obbligatori, fai clic su Salva attivatore.
Fai clic su Crea.
Nella scheda Origine, modifica il codice sorgente se necessario, poi seleziona Salva e ridistribuisci.
gcloud
Quando crei una funzione utilizzando gcloud CLI, devi prima eseguirne il deployment e poi creare un trigger. Per creare un trigger per la tua funzione:
Esegui questo comando nella directory che contiene il codice campione per eseguire il deployment della funzione:
gcloud run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE_ID \ --region REGIONSostituisci quanto segue:
FUNCTION: il nome della funzione di cui stai eseguendo il deployment. Puoi omettere completamente questo parametro, ma ti verrà chiesto il nome se lo ometti.FUNCTION_ENTRYPOINT: l'entry point 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 completo esistente nel codice sorgente.BASE_IMAGE_ID: 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.REGION: la regione Google Cloudin cui vuoi eseguire il deployment della funzione. Ad esempio:europe-west1.
Esegui questo comando per creare un trigger che filtri ed esegua il routing degli eventi:
gcloud eventarc triggers create TRIGGER_NAME \ --location=LOCATION \ --destination-run-service=FUNCTION \ --destination-run-region=DESTINATION_RUN_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=SERVICE_ACCOUNT_NAME@PROJECT_ID.Sostituisci quanto segue:
TRIGGER_NAME: l'ID del trigger o un identificatore completo.LOCATION: la posizione del trigger Eventarc. In alternativa, puoi impostare la proprietàeventarc/location, ad esempiogcloud config set eventarc/location us-central1.Per evitare problemi di prestazioni e residenza dei dati, la località deve corrispondere a quella del Google Cloud servizio che genera eventi. Per saperne di più, consulta Località Eventarc.
-
FUNCTION: il nome della funzione Cloud Run di cui è stato eseguito il deployment che riceve gli eventi per il trigger. -
DESTINATION_RUN_REGION: (facoltativo) la posizione di Cloud Run in cui si trova la funzione Cloud Run di destinazione. Se non specificato, si presume che la funzione si trovi nella stessa regione del trigger. EVENT_FILTER_TYPE: l'identificatore dell'evento. Viene generato un evento quando una chiamata API per il metodo ha esito positivo. Per le operazioni a lunga esecuzione, l'evento viene generato solo al termine dell'operazione e solo se l'azione viene eseguita correttamente. Per un elenco dei tipi di eventi supportati, consulta Tipi di eventi Google supportati da Eventarc.SERVICE_ACCOUNT_NAME: il nome del account di servizio gestito dall'utente.PROJECT_ID: il tuo ID progetto Google Cloud .
Note:
- Una volta creato un trigger, non è possibile modificare il tipo di filtro eventi. Per un tipo di evento diverso, devi creare un nuovo trigger.
--event-filters=type=google.cloud.firestore.document.v1.writtenspecifica che la funzione viene attivata quando un documento viene creato, aggiornato o eliminato, in base al 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 da monitorare per le modifiche pertinenti. Questo pattern di percorso indica che devono essere monitorati tutti i documenti della raccoltausers. Per saperne di più, vedi Informazioni sui pattern di percorso.- (Facoltativo) Per specificare un singolo tentativo di invio di eventi senza ripetizioni, utilizza il flag
--max-retry-attempts. L'unico valore valido è1. Se ometti il flag, viene applicato il comportamento di ripetizione standard. Per saperne di più, vedi Nuovi tentativi per gli eventi. - Sono disponibili altri flag. Per saperne di più, vedi
gcloud eventarc triggers create.
Terraform
Per creare un trigger Eventarc per una funzione Cloud Run, consulta Creare un trigger utilizzando Terraform.
Utilizza gli altri campi così come sono:
--event-filters=type=google.cloud.firestore.document.v1.writtenspecifica che la funzione viene attivata quando un documento viene creato, aggiornato o eliminato, in base algoogle.cloud.firestore.document.v1.writtentipo 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 modifiche pertinenti. Questo pattern di percorso indica che devono essere monitorati tutti i documenti nella raccoltamessages. Per saperne di più, vedi Informazioni sui pattern di percorso.
Testare la funzione Converti in maiuscolo
Per testare la funzione Converti in maiuscolo che hai appena implementato, configura
una raccolta denominata messages nel tuo
database Firestore:
Nella console Google Cloud , vai alla pagina dei database Firestore:
Seleziona l'ID database per il tuo database Firestore.
Fai clic su Avvia una raccolta.
Specifica
messagescome ID raccolta.Per iniziare ad aggiungere il primo documento della raccolta, accetta l'ID documento generato automaticamente in Aggiungi il primo documento.
Per attivare la funzione di cui è stato eseguito il deployment, aggiungi un documento in cui il Nome campo è
originale il Valore campo èminka.Quando salvi il documento, puoi vedere la parola in minuscolo nel campo valore convertita in maiuscolo.
Se in seguito modifichi il valore del campo in modo che contenga lettere minuscole, la funzione viene attivata di nuovo, convertendo tutte le lettere minuscole in maiuscole.
Limitazioni per le funzioni
- L'ordinamento non è garantito. Le modifiche rapide possono attivare le chiamate di funzioni 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 sulla meccanica di esecuzione "esattamente una volta" e scrivi funzioni idempotenti.
- Un trigger è associato a un singolo database. Non puoi creare un trigger che corrisponda a più database.
- L'eliminazione di un database non comporta l'eliminazione automatica di eventuali trigger per quel database. Il trigger smette di inviare eventi, ma continua a esistere finché non lo elimini.