In diesem Leitfaden finden Sie Beispiele für Funktionen, die ausgelöst werden, wenn Sie Änderungen an einem Dokument innerhalb einer angegebenen Sammlung vornehmen.
Hinweise
Bevor Sie den Beispielcode in dieser Anleitung ausführen, müssen Sie Folgendes tun:
- APIs aktivieren und die erforderlichen Rollen für das Bereitstellen von Funktionen gewähren
- Firestore-Datenbank einrichten
Beispiele
In den folgenden Beispielen wird gezeigt, wie Sie Funktionen schreiben, die auf einen Firestore-Trigger reagieren.
Beispiel 1: Funktion „Hello Firestore“
Im folgenden Beispiel werden die Felder eines auslösenden Firestore-Ereignisses ausgegeben:
Node.js
Python
Go
Java
C#
Funktion "Hello Firestore" bereitstellen
Richten Sie Ihre Firestore-Datenbank ein, falls noch nicht geschehen.
Klicken Sie auf den Tab, um eine Anleitung zum gewünschten Tool zu erhalten.
Console
Wenn Sie eine Funktion in der Google Cloud Console erstellen, können Sie ihr auch einen Trigger hinzufügen. So erstellen Sie einen Trigger für Ihre Funktion:
Rufen Sie in der Google Cloud Console Cloud Run auf.
Klicken Sie auf Funktion schreiben und geben Sie die Funktionsdetails ein. Weitere Informationen zum Konfigurieren von Funktionen während der Bereitstellung finden Sie unter Funktionen bereitstellen.
Klicken Sie im Bereich Trigger auf Trigger hinzufügen.
Wählen Sie Firestore-Trigger aus.
Ändern Sie im Bereich Eventarc-Trigger die Triggerdetails so:
Geben Sie im Feld Triggername einen Namen für den Trigger ein oder verwenden Sie den Standardnamen.
Wählen Sie in der Liste einen Triggertyp aus, um einen der folgenden Triggertypen anzugeben:
Google-Quellen: Hier können Sie Trigger für Pub/Sub, Cloud Storage, Firestore und andere Google-Ereignisanbieter angeben.
Drittanbieter, um Nicht-Google-Anbieter einzubinden, die eine Eventarc-Quelle anbieten. Weitere Informationen finden Sie unter Drittanbieterereignisse in Eventarc.
Wählen Sie in der Liste Ereignisanbieter die Option Firestore aus, um ein Produkt auszuwählen, das den Ereignistyp angibt, den Sie für das Auslösen Ihrer Funktion benötigen. Eine Liste der Ereignisanbieter finden Sie unter Ereignisanbieter und -ziele.
Wählen Sie in der Liste Ereignistyp die Option type=google.cloud.firestore.document.v1.written aus. Die Triggerkonfiguration variiert je nach unterstütztem Ereignistyp. Weitere Informationen finden Sie unter Ereignistypen.
Wählen Sie im Bereich „Filter“ eine Datenbank, einen Vorgang und Attributwerte aus oder verwenden Sie die Standardauswahl.
Wenn das Feld Region aktiviert ist, wählen Sie einen Speicherort für den Eventarc-Trigger aus. Im Allgemeinen sollte der Standort eines Eventarc-Triggers mit dem Standort der Google Cloud-Ressource übereinstimmen, die Sie auf Ereignisse überwachen möchten. In den meisten Szenarien sollten Sie Ihre Funktion auch in derselben Region bereitstellen. Weitere Informationen zu Eventarc-Triggerstandorten finden Sie unter Informationen zu Eventarc-Standorten.
Wählen Sie im Feld Dienstkonto ein Dienstkonto aus. Eventarc-Trigger sind mit Dienstkonten verknüpft, um sie beim Aufrufen Ihrer Funktion als Identität zu verwenden. Das Dienstkonto Ihres Eventarc-Triggers muss die Berechtigung zum Aufrufen Ihrer Funktion haben. Cloud Run verwendet standardmäßig das Compute Engine-Standarddienstkonto.
Geben Sie optional den Dienst-URL-Pfad an, an den die eingehende Anfrage gesendet werden soll. Dies ist der relative Pfad im Zieldienst, an den die Ereignisse für den Trigger gesendet werden sollen. Beispiel:
/
,/route
,route
undroute/subroute
.
Wenn Sie alle erforderlichen Felder ausgefüllt haben, klicken Sie auf Trigger speichern.
gcloud
Wenn Sie eine Funktion mit der gcloud CLI erstellen, müssen Sie sie zuerst deploy und dann einen Trigger erstellen. So erstellen Sie einen Trigger für Ihre Funktion:
Führen Sie den folgenden Befehl in dem Verzeichnis aus, das den Beispielcode enthält, um die Funktion bereitzustellen:
gcloud beta run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE_ID \ --region REGION
Ersetzen Sie:
FUNCTION durch den Namen der Funktion, die Sie bereitstellen. Sie können diesen Parameter auch weglassen, werden dann jedoch nach dem Namen gefragt.
FUNCTION_ENTRYPOINT durch den Einstiegspunkt zur Funktion in Ihrem Quellcode. Dies ist der Code, der von Cloud Run ausgeführt wird, wenn Ihre Funktion ausgeführt wird. Der Wert dieses Flags muss ein Funktionsname oder ein voll qualifizierter Klassenname sein, der in Ihrem Quellcode vorhanden ist.
BASE_IMAGE_ID durch die Umgebung des Basis-Images für Ihre Funktion. Weitere Informationen zu Basis-Images und den in den einzelnen Images enthaltenen Paketen finden Sie unter Laufzeit-Basis-Images.
REGION durch die Google Cloud-Region, in der Sie die Funktion bereitstellen möchten. Beispiel:
us-central1
Führen Sie den folgenden Befehl aus, um einen Trigger zu erstellen, der Ereignisse filtert:
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
Ersetzen Sie:
TRIGGER_NAME durch den Namen des Triggers.
EVENTARC_TRIGGER_LOCATION mit dem Standort des Eventarc-Triggers. Im Allgemeinen sollte der Standort eines Eventarc-Triggers mit dem Standort der Google Cloud-Ressource übereinstimmen, die Sie auf Ereignisse überwachen möchten. In den meisten Szenarien sollten Sie Ihre Funktion auch in derselben Region bereitstellen. Weitere Informationen finden Sie unter Eventarc-Standorte.
FUNCTION durch den Namen der Funktion, die Sie bereitstellen.
REGION durch die Cloud Run-Region der Funktion.
PROJECT_NUMBER durch Ihre Google Cloud-Projektnummer. Eventarc-Trigger sind mit Dienstkonten verknüpft, um sie beim Aufrufen Ihrer Funktion als Identität zu verwenden. Das Dienstkonto Ihres Eventarc-Triggers muss die Berechtigung zum Aufrufen Ihrer Funktion haben. Cloud Run verwendet standardmäßig das Compute-Standarddienstkonto.
Das Flag
event-filters
gibt die Ereignisfilter an, die der Trigger überwacht. Ein Ereignis, das mit allenevent-filters
-Filtern übereinstimmt, löst Aufrufe Ihrer Funktion aus. Jeder Trigger muss einen unterstützten Ereignistyp haben. Der Ereignisfiltertyp kann nach dem Erstellen nicht mehr geändert werden. Wenn Sie den Ereignisfiltertyp ändern möchten, müssen Sie einen neuen Trigger erstellen und den alten löschen. Optional können Sie das Flag--event-filters
mit einem unterstützten Filter im FormatATTRIBUTE=VALUE
wiederholen, um weitere Filter hinzuzufügen.
Verwenden Sie die anderen Felder unverändert:
--event-filters=type=google.cloud.firestore.document.v1.written
gibt an, dass die Funktion ausgelöst wird, wenn ein Dokument gemäß dem Ereignistypgoogle.cloud.firestore.document.v1.written
erstellt, aktualisiert oder gelöscht wird.--event-filters=database='(default)'
gibt die Firebase-Datenbank an. Verwenden Sie(default)
als Standarddatenbanknamen.--event-filters-path-pattern=document='users/{username}'
enthält das Pfadmuster der Dokumente, die auf relevante Änderungen überwacht werden sollen. Dieses Pfadmuster gibt an, dass alle Dokumente in der Sammlungusers
überwacht werden sollen. Weitere Informationen finden Sie unter Informationen zu Pfadmustern.
Funktion "Hello Firestore" testen
Zum Testen der Funktion „Hello Firestore“ richten Sie eine Sammlung mit dem Namen users
in Ihrer Firestore-Datenbank ein:
Rufen Sie in der Google Cloud Console die Seite „Firestore-Datenbanken“ auf:
Klicken Sie auf Sammlung starten.
Geben Sie
users
als Sammlungs-ID an.Um das erste Dokument der Sammlung hinzuzufügen, akzeptieren Sie unter Erstes Dokument hinzufügen die automatisch generierte Dokument-ID.
Fügen Sie mindestens ein Feld für das Dokument hinzu und geben Sie einen Namen und einen Wert an. Geben Sie beispielsweise
username
in das Feld Feldname undrowan
in das Feld Feldwert ein.Wenn Sie fertig sind, klicken Sie auf Speichern.
Dadurch wird ein neues Dokument erstellt und die Funktion wird ausgelöst.
Klicken Sie auf der Cloud Run-Übersichtsseite in der Google Cloud Console auf den verknüpften Namen der Funktion, um die Seite Dienstdetails zu öffnen und zu prüfen, ob die Funktion ausgelöst wurde.
Wählen Sie den Tab Protokolle aus und suchen Sie nach diesem String:
Function triggered by change to: //firestore.googleapis.com/projects/your-project-id/databases/(default)'
Beispiel 2: Funktion "In Großbuchstaben umwandeln"
Im folgenden Beispiel wird der vom Nutzer hinzugefügte Wert abgerufen, der String an dieser Stelle in Großbuchstaben umgewandelt und der Wert durch den String in Großbuchstaben ersetzt:
Node.js
Verwenden Sie protobufjs, um die Ereignisdaten zu decodieren. Fügen Sie google.events.cloud.firestore.v1
data.proto
in Ihre Quelle ein.
Python
Go
Java
C#
Funktion "In Großbuchstaben umwandeln" bereitstellen
Richten Sie Ihre Firestore-Datenbank ein, falls noch nicht geschehen.
Klicken Sie auf den Tab, um eine Anleitung zum gewünschten Tool zu erhalten.
Console
Wenn Sie eine Funktion in der Google Cloud Console erstellen, können Sie ihr auch einen Trigger hinzufügen. So erstellen Sie einen Trigger für Ihre Funktion:
Rufen Sie in der Google Cloud Console Cloud Run auf.
Klicken Sie auf Funktion schreiben und geben Sie die Funktionsdetails ein. Weitere Informationen zum Konfigurieren von Funktionen während der Bereitstellung finden Sie unter Funktionen bereitstellen.
Klicken Sie im Bereich Trigger auf Trigger hinzufügen.
Wählen Sie Firestore-Trigger aus.
Ändern Sie im Bereich Eventarc-Trigger die Triggerdetails so:
Geben Sie im Feld Triggername einen Namen für den Trigger ein oder verwenden Sie den Standardnamen.
Wählen Sie in der Liste einen Triggertyp aus, um einen der folgenden Triggertypen anzugeben:
Google-Quellen: Hier können Sie Trigger für Pub/Sub, Cloud Storage, Firestore und andere Google-Ereignisanbieter angeben.
Drittanbieter, um Nicht-Google-Anbieter einzubinden, die eine Eventarc-Quelle anbieten. Weitere Informationen finden Sie unter Drittanbieterereignisse in Eventarc.
Wählen Sie in der Liste Ereignisanbieter die Option Firestore aus, um ein Produkt auszuwählen, das den Ereignistyp angibt, den Sie für das Auslösen Ihrer Funktion benötigen. Eine Liste der Ereignisanbieter finden Sie unter Ereignisanbieter und -ziele.
Wählen Sie in der Liste Ereignistyp die Option type=google.cloud.firestore.document.v1.written aus. Die Triggerkonfiguration variiert je nach unterstütztem Ereignistyp. Weitere Informationen finden Sie unter Ereignistypen.
Wählen Sie im Bereich „Filter“ eine Datenbank, einen Vorgang und Attributwerte aus oder verwenden Sie die Standardauswahl.
Wenn das Feld Region aktiviert ist, wählen Sie einen Speicherort für den Eventarc-Trigger aus. Im Allgemeinen sollte der Standort eines Eventarc-Triggers mit dem Standort der Google Cloud-Ressource übereinstimmen, die Sie auf Ereignisse überwachen möchten. In den meisten Szenarien sollten Sie Ihre Funktion auch in derselben Region bereitstellen. Weitere Informationen zu Eventarc-Triggerstandorten finden Sie unter Informationen zu Eventarc-Standorten.
Wählen Sie im Feld Dienstkonto ein Dienstkonto aus. Eventarc-Trigger sind mit Dienstkonten verknüpft, um sie beim Aufrufen Ihrer Funktion als Identität zu verwenden. Das Dienstkonto Ihres Eventarc-Triggers muss die Berechtigung zum Aufrufen Ihrer Funktion haben. Cloud Run verwendet standardmäßig das Compute Engine-Standarddienstkonto.
Geben Sie optional den Dienst-URL-Pfad an, an den die eingehende Anfrage gesendet werden soll. Dies ist der relative Pfad im Zieldienst, an den die Ereignisse für den Trigger gesendet werden sollen. Beispiel:
/
,/route
,route
undroute/subroute
.
Wenn Sie alle erforderlichen Felder ausgefüllt haben, klicken Sie auf Trigger speichern.
gcloud
Wenn Sie eine Funktion mit der gcloud CLI erstellen, müssen Sie sie zuerst deploy und dann einen Trigger erstellen. So erstellen Sie einen Trigger für Ihre Funktion:
Führen Sie den folgenden Befehl in dem Verzeichnis aus, das den Beispielcode enthält, um die Funktion bereitzustellen:
gcloud beta run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE_ID \ --region REGION
Ersetzen Sie:
FUNCTION durch den Namen der Funktion, die Sie bereitstellen. Sie können diesen Parameter auch weglassen, werden dann jedoch nach dem Namen gefragt.
FUNCTION_ENTRYPOINT durch den Einstiegspunkt zur Funktion in Ihrem Quellcode. Dies ist der Code, der von Cloud Run ausgeführt wird, wenn Ihre Funktion ausgeführt wird. Der Wert dieses Flags muss ein Funktionsname oder ein voll qualifizierter Klassenname sein, der in Ihrem Quellcode vorhanden ist.
BASE_IMAGE_ID durch die Umgebung des Basis-Images für Ihre Funktion. Weitere Informationen zu Basis-Images und den in den einzelnen Images enthaltenen Paketen finden Sie unter Laufzeit-Basis-Images.
REGION durch die Google Cloud-Region, in der Sie die Funktion bereitstellen möchten. Beispiel:
us-central1
Führen Sie den folgenden Befehl aus, um einen Trigger zu erstellen, der Ereignisse filtert:
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
Ersetzen Sie:
TRIGGER_NAME durch den Namen des Triggers.
EVENTARC_TRIGGER_LOCATION mit dem Standort des Eventarc-Triggers. Im Allgemeinen sollte der Standort eines Eventarc-Triggers mit dem Standort der Google Cloud-Ressource übereinstimmen, die Sie auf Ereignisse überwachen möchten. In den meisten Szenarien sollten Sie Ihre Funktion auch in derselben Region bereitstellen. Weitere Informationen finden Sie unter Eventarc-Standorte.
FUNCTION durch den Namen der Funktion, die Sie bereitstellen.
REGION durch die Cloud Run-Region der Funktion.
PROJECT_NUMBER durch Ihre Google Cloud-Projektnummer. Eventarc-Trigger sind mit Dienstkonten verknüpft, um sie beim Aufrufen Ihrer Funktion als Identität zu verwenden. Das Dienstkonto Ihres Eventarc-Triggers muss die Berechtigung zum Aufrufen Ihrer Funktion haben. Cloud Run verwendet standardmäßig das Compute-Standarddienstkonto.
Das Flag
event-filters
gibt die Ereignisfilter an, die der Trigger überwacht. Ein Ereignis, das mit allenevent-filters
-Filtern übereinstimmt, löst Aufrufe Ihrer Funktion aus. Jeder Trigger muss einen unterstützten Ereignistyp haben. Der Ereignisfiltertyp kann nach dem Erstellen nicht mehr geändert werden. Wenn Sie den Ereignisfiltertyp ändern möchten, müssen Sie einen neuen Trigger erstellen und den alten löschen. Optional können Sie das Flag--event-filters
mit einem unterstützten Filter im FormatATTRIBUTE=VALUE
wiederholen, um weitere Filter hinzuzufügen.
Verwenden Sie die anderen Felder unverändert:
--event-filters=type=google.cloud.firestore.document.v1.written
gibt an, dass die Funktion ausgelöst wird, wenn ein Dokument gemäß dem Ereignistypgoogle.cloud.firestore.document.v1.written
erstellt, aktualisiert oder gelöscht wird.--event-filters=database='(default)'
gibt die Firestore-Datenbank an. Verwenden Sie(default)
als Standarddatenbanknamen.--event-filters-path-pattern=document='messages/{pushId}'
enthält das Pfadmuster der Dokumente, die auf relevante Änderungen überwacht werden sollen. Dieses Pfadmuster gibt an, dass alle Dokumente in der Sammlungmessages
überwacht werden sollen. Weitere Informationen finden Sie unter Informationen zu Pfadmustern.
Funktion "In Großbuchstaben umwandeln" testen
Richten Sie eine Sammlung mit dem Namen messages
in Ihrer Firestore-Datenbank ein, um die gerade bereitgestellte Funktion „In Großbuchstaben umwandeln“ zu testen:
Rufen Sie in der Google Cloud Console die Seite „Firestore-Datenbanken“ auf:
Klicken Sie auf Sammlung starten.
Geben Sie
messages
als Sammlungs-ID an.Um das erste Dokument der Sammlung hinzuzufügen, akzeptieren Sie unter Erstes Dokument hinzufügen die automatisch generierte Dokument-ID.
Um die bereitgestellte Funktion auszulösen, fügen Sie ein Dokument mit dem Feldnamen
original
und dem Feldwertminka
hinzu.Beim Speichern des Dokuments wird das Wort in Kleinbuchstaben im Wertfeld in ein Wort in Großbuchstaben umgewandelt.
Wenn Sie den Feldwert anschließend so bearbeiten, dass er Kleinbuchstaben enthält, wird die Funktion noch einmal ausgelöst. Dadurch werden alle Kleinbuchstaben in Großbuchstaben umgewandelt.
Einschränkungen für Funktionen
- Die Reihenfolge ist nicht garantiert. Schnelle Änderungen können Funktionsaufrufe in einer unvorhergesehenen Reihenfolge auslösen.
- Ereignisse werden mindestens einmal übergeben. Ein einzelnes Ereignis kann aber zu mehreren Funktionsaufrufen führen. Vermeiden Sie die Abhängigkeit von genau einmal vorkommenden Verfahren und schreiben Sie idempotente Funktionen.
- Ein Trigger ist mit einer einzelnen Datenbank verknüpft. Sie können keinen Trigger erstellen, der mit mehreren Datenbanken übereinstimmt.
- Wenn Sie eine Datenbank löschen, werden nicht automatisch die Trigger für diese Datenbank gelöscht. Der Trigger sendet keine Ereignisse mehr, bleibt aber bestehen, bis Sie ihn löschen.