Ce guide présente des exemples de fonctions déclenchées lorsque vous apportez des modifications à un document au sein d'une collection spécifiée.
Avant de commencer
Avant d'exécuter l'exemple de code de ce guide, vous devez effectuer les opérations suivantes:
- Activer les API et attribuer les rôles requis pour déployer des fonctions
- Configurer une base de données Firestore
Examples
Les exemples suivants montrent comment écrire des fonctions qui répondent à un déclencheur Firestore.
Exemple 1 : Fonction Hello Firestore
L'exemple suivant imprime les champs d'un événement Firestore déclencheur:
Node.js
Python
Go
Java
C#
Déployer la fonction Hello Firestore
Si ce n'est pas déjà fait, configurez votre base de données Firestore.
Cliquez sur l'onglet pour obtenir des instructions concernant l'utilisation de l'outil de votre choix.
Console
Lorsque vous utilisez la console Google Cloud pour créer une fonction, vous pouvez également ajouter un déclencheur à votre fonction. Pour créer un déclencheur pour votre fonction, procédez comme suit:
Dans la console Google Cloud, accédez à Cloud Run :
Cliquez sur Écrire une fonction, puis saisissez les détails de la fonction. Pour en savoir plus sur la configuration des fonctions lors du déploiement, consultez la section Déployer des fonctions.
Dans la section Déclencheur, cliquez sur Ajouter un déclencheur.
Sélectionnez Déclencheur Firestore.
Dans le volet Déclencheur Eventarc, modifiez les détails du déclencheur comme suit:
Saisissez un nom pour le déclencheur dans le champ Trigger name (Nom du déclencheur) ou utilisez le nom par défaut.
Sélectionnez un type de déclencheur dans la liste pour spécifier l'un des types de déclencheur suivants:
Sources Google pour spécifier des déclencheurs pour Pub/Sub, Cloud Storage, Firestore et d'autres fournisseurs d'événements Google.
Tiers pour intégrer des fournisseurs autres que Google qui proposent une source Eventarc. Pour en savoir plus, consultez la section Événements tiers dans Eventarc.
Sélectionnez Firestore dans la liste Fournisseur d'événements pour sélectionner un produit qui fournit le type d'événement pour déclencher votre fonction. Pour obtenir la liste des fournisseurs d'événements, consultez la section Fournisseurs et destinations d'événements.
Sélectionnez type=google.cloud.firestore.document.v1.written dans la liste Type d'événement. La configuration du déclencheur varie en fonction du type d'événement accepté: Pour en savoir plus, consultez la section Types d'événements.
Dans la section "Filtres", sélectionnez une base de données, une opération et des valeurs d'attribut, ou utilisez les sélections par défaut.
Si le champ Région est activé, sélectionnez un emplacement pour le déclencheur Eventarc. En général, l'emplacement d'un déclencheur Eventarc doit correspondre à celui de la ressource Google Cloud dont vous souhaitez surveiller les événements. Dans la plupart des scénarios, vous devez également déployer votre fonction dans la même région. Consultez la section Comprendre les emplacements Eventarc pour en savoir plus sur les emplacements des déclencheurs Eventarc.
Dans le champ Compte de service, sélectionnez un compte de service. Les déclencheurs Eventarc sont associés à des comptes de service, destinés à être utilisés comme identité lors de l'appel de votre fonction. Le compte de service de votre déclencheur Eventarc doit être autorisé à appeler votre fonction. Par défaut, Cloud Run utilise le compte de service Compute Engine par défaut.
Vous pouvez éventuellement spécifier le chemin d'URL du service auquel envoyer la requête entrante. Il s'agit du chemin relatif sur le service de destination auquel les événements du déclencheur doivent être envoyés. Par exemple:
/
,/route
,route
etroute/subroute
.
Une fois les champs obligatoires renseignés, cliquez sur Enregistrer le déclencheur.
gcloud
Lorsque vous créez une fonction à l'aide de gcloud CLI, vous devez d'abord deploy, puis créer un déclencheur. Pour créer un déclencheur pour votre fonction, procédez comme suit:
Pour déployer votre fonction, exécutez la commande suivante dans le répertoire contenant l'exemple de code:
gcloud beta run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE_ID \ --region REGION
Remplacez :
FUNCTION par le nom de la fonction que vous déployez. Vous pouvez omettre ce paramètre, mais dans ce cas le nom vous sera demandé.
FUNCTION_ENTRYPOINT par le point d'entrée de votre fonction dans votre code source. Il s'agit du code exécuté par Cloud Run lorsque votre fonction est exécutée. La valeur de cette option doit être un nom de fonction ou un nom de classe complet qui existe dans votre code source.
BASE_IMAGE_ID par l'environnement d'image de base de votre fonction. Pour en savoir plus sur les images de base et les packages inclus dans chaque image, consultez la section Images de base des environnements d'exécution.
REGION par la région Google Cloud dans laquelle vous souhaitez déployer votre fonction. Par exemple,
us-central1
.
Exécutez la commande suivante pour créer un déclencheur qui filtre les événements:
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
Remplacez :
TRIGGER_NAME par le nom de votre déclencheur.
EVENTARC_TRIGGER_LOCATION par l'emplacement du déclencheur Eventarc. En général, l'emplacement d'un déclencheur Eventarc doit correspondre à celui de la ressource Google Cloud dont vous souhaitez surveiller les événements. Dans la plupart des scénarios, vous devez également déployer votre fonction dans la même région. Pour en savoir plus, consultez la page Emplacements Eventarc.
FUNCTION par le nom de la fonction que vous déployez.
REGION par la région Cloud Run de la fonction.
PROJECT_NUMBER par le numéro de votre projet Google Cloud Les déclencheurs Eventarc sont associés à des comptes de service, destinés à être utilisés comme identité lors de l'appel de votre fonction. Le compte de service de votre déclencheur Eventarc doit être autorisé à appeler votre fonction. Par défaut, Cloud Run utilise le compte de service Compute par défaut.
L'option
event-filters
spécifie les filtres d'événements que le déclencheur surveille. Un événement correspondant à tous les filtresevent-filters
déclenche des appels vers votre fonction. Chaque déclencheur doit avoir un type d'événement compatible. Vous ne pouvez pas modifier le type de filtre d'événements après sa création. Pour modifier le type de filtre d'événement, vous devez créer un nouveau déclencheur et supprimer l'ancien. Facultatif : vous pouvez répéter l'option--event-filters
avec un filtre compatible au formatATTRIBUTE=VALUE
pour ajouter d'autres filtres.
Laissez les autres champs inchangés :
--event-filters=type=google.cloud.firestore.document.v1.written
spécifie que la fonction est déclenchée lors de la création, de la mise à jour ou de la suppression d'un document, selon le type d'événementgoogle.cloud.firestore.document.v1.written
.--event-filters=database='(default)'
spécifie la base de données Firebase. Pour spécifier le nom de la base de données par défaut, utilisez(default)
.--event-filters-path-pattern=document='users/{username}'
fournit le format de chemin d'accès des documents à surveiller pour y détecter des modifications pertinentes. Ce format de chemin d'accès indique que tous les documents de la collectionusers
doivent être surveillés. Pour en savoir plus, consultez la page Comprendre les formats de chemin d'accès.
Tester la fonction Hello Firestore
Pour tester la fonction Hello Firestore, configurez une collection appelée users
dans votre base de données Firestore:
Dans la console Google Cloud, accédez à la page des bases de données Firestore:
Cliquez sur Commencer une collection.
Spécifiez
users
comme ID de collection.Pour commencer à ajouter le premier document de la collection, sous Ajouter le premier document, acceptez l'ID de document généré automatiquement.
Ajoutez au moins un champ pour le document, en spécifiant un nom et une valeur. Par exemple, dans Nom du champ, saisissez
username
et dans Valeur du champ, saisissezrowan
.Lorsque vous avez terminé, cliquez sur Save (Enregistrer).
Cette action crée un document, ce qui va donc déclencher votre fonction.
Pour vérifier que votre fonction a été déclenchée, cliquez sur le nom de la fonction associée dans la page de présentation de Cloud Run dans la console Google Cloud, pour afficher la page Détails du service.
Sélectionnez l'onglet Journaux et recherchez cette chaîne:
Function triggered by change to: //firestore.googleapis.com/projects/your-project-id/databases/(default)'
Exemple 2 : Fonction de conversion en majuscules
L'exemple suivant récupère la valeur ajoutée par l'utilisateur, convertit la chaîne à cet emplacement en majuscules, et remplace la valeur par la chaîne en majuscules:
Node.js
Utilisez protobufjs pour décoder les données d'événement. Incluez la propriété google.events.cloud.firestore.v1
data.proto
dans votre source.
Python
Go
Java
C#
Déployer la fonction de conversion en majuscules
Si ce n'est pas déjà fait, configurez votre base de données Firestore.
Cliquez sur l'onglet pour obtenir des instructions concernant l'utilisation de l'outil de votre choix.
Console
Lorsque vous utilisez la console Google Cloud pour créer une fonction, vous pouvez également ajouter un déclencheur à votre fonction. Pour créer un déclencheur pour votre fonction, procédez comme suit:
Dans la console Google Cloud, accédez à Cloud Run :
Cliquez sur Écrire une fonction, puis saisissez les détails de la fonction. Pour en savoir plus sur la configuration des fonctions lors du déploiement, consultez la section Déployer des fonctions.
Dans la section Déclencheur, cliquez sur Ajouter un déclencheur.
Sélectionnez Déclencheur Firestore.
Dans le volet Déclencheur Eventarc, modifiez les détails du déclencheur comme suit:
Saisissez un nom pour le déclencheur dans le champ Trigger name (Nom du déclencheur) ou utilisez le nom par défaut.
Sélectionnez un type de déclencheur dans la liste pour spécifier l'un des types de déclencheur suivants:
Sources Google pour spécifier des déclencheurs pour Pub/Sub, Cloud Storage, Firestore et d'autres fournisseurs d'événements Google.
Tiers pour intégrer des fournisseurs autres que Google qui proposent une source Eventarc. Pour en savoir plus, consultez la section Événements tiers dans Eventarc.
Sélectionnez Firestore dans la liste Fournisseur d'événements pour sélectionner un produit qui fournit le type d'événement pour déclencher votre fonction. Pour obtenir la liste des fournisseurs d'événements, consultez la section Fournisseurs et destinations d'événements.
Sélectionnez type=google.cloud.firestore.document.v1.written dans la liste Type d'événement. La configuration du déclencheur varie en fonction du type d'événement accepté: Pour en savoir plus, consultez la section Types d'événements.
Dans la section "Filtres", sélectionnez une base de données, une opération et des valeurs d'attribut, ou utilisez les sélections par défaut.
Si le champ Région est activé, sélectionnez un emplacement pour le déclencheur Eventarc. En général, l'emplacement d'un déclencheur Eventarc doit correspondre à celui de la ressource Google Cloud dont vous souhaitez surveiller les événements. Dans la plupart des scénarios, vous devez également déployer votre fonction dans la même région. Consultez la section Comprendre les emplacements Eventarc pour en savoir plus sur les emplacements des déclencheurs Eventarc.
Dans le champ Compte de service, sélectionnez un compte de service. Les déclencheurs Eventarc sont associés à des comptes de service, destinés à être utilisés comme identité lors de l'appel de votre fonction. Le compte de service de votre déclencheur Eventarc doit être autorisé à appeler votre fonction. Par défaut, Cloud Run utilise le compte de service Compute Engine par défaut.
Vous pouvez éventuellement spécifier le chemin d'URL du service auquel envoyer la requête entrante. Il s'agit du chemin relatif sur le service de destination auquel les événements du déclencheur doivent être envoyés. Par exemple:
/
,/route
,route
etroute/subroute
.
Une fois les champs obligatoires renseignés, cliquez sur Enregistrer le déclencheur.
gcloud
Lorsque vous créez une fonction à l'aide de gcloud CLI, vous devez d'abord deploy, puis créer un déclencheur. Pour créer un déclencheur pour votre fonction, procédez comme suit:
Pour déployer votre fonction, exécutez la commande suivante dans le répertoire contenant l'exemple de code:
gcloud beta run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE_ID \ --region REGION
Remplacez :
FUNCTION par le nom de la fonction que vous déployez. Vous pouvez omettre ce paramètre, mais dans ce cas le nom vous sera demandé.
FUNCTION_ENTRYPOINT par le point d'entrée de votre fonction dans votre code source. Il s'agit du code exécuté par Cloud Run lorsque votre fonction est exécutée. La valeur de cette option doit être un nom de fonction ou un nom de classe complet qui existe dans votre code source.
BASE_IMAGE_ID par l'environnement d'image de base de votre fonction. Pour en savoir plus sur les images de base et les packages inclus dans chaque image, consultez la section Images de base des environnements d'exécution.
REGION par la région Google Cloud dans laquelle vous souhaitez déployer votre fonction. Par exemple,
us-central1
.
Exécutez la commande suivante pour créer un déclencheur qui filtre les événements:
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
Remplacez :
TRIGGER_NAME par le nom de votre déclencheur.
EVENTARC_TRIGGER_LOCATION par l'emplacement du déclencheur Eventarc. En général, l'emplacement d'un déclencheur Eventarc doit correspondre à celui de la ressource Google Cloud dont vous souhaitez surveiller les événements. Dans la plupart des scénarios, vous devez également déployer votre fonction dans la même région. Pour en savoir plus, consultez la page Emplacements Eventarc.
FUNCTION par le nom de la fonction que vous déployez.
REGION par la région Cloud Run de la fonction.
PROJECT_NUMBER par le numéro de votre projet Google Cloud Les déclencheurs Eventarc sont associés à des comptes de service, destinés à être utilisés comme identité lors de l'appel de votre fonction. Le compte de service de votre déclencheur Eventarc doit être autorisé à appeler votre fonction. Par défaut, Cloud Run utilise le compte de service Compute par défaut.
L'option
event-filters
spécifie les filtres d'événements que le déclencheur surveille. Un événement correspondant à tous les filtresevent-filters
déclenche des appels vers votre fonction. Chaque déclencheur doit avoir un type d'événement compatible. Vous ne pouvez pas modifier le type de filtre d'événements après sa création. Pour modifier le type de filtre d'événement, vous devez créer un nouveau déclencheur et supprimer l'ancien. Facultatif : vous pouvez répéter l'option--event-filters
avec un filtre compatible au formatATTRIBUTE=VALUE
pour ajouter d'autres filtres.
Laissez les autres champs inchangés :
--event-filters=type=google.cloud.firestore.document.v1.written
spécifie que la fonction est déclenchée lors de la création, de la mise à jour ou de la suppression d'un document, selon le type d'événementgoogle.cloud.firestore.document.v1.written
.--event-filters=database='(default)'
spécifie la base de données Firestore. Pour spécifier le nom de la base de données par défaut, utilisez(default)
.--event-filters-path-pattern=document='messages/{pushId}'
fournit le format de chemin d'accès des documents à surveiller pour y détecter des modifications pertinentes. Ce format de chemin d'accès indique que tous les documents de la collectionmessages
doivent être surveillés. Pour en savoir plus, consultez la page Comprendre les formats de chemin d'accès.
Tester la fonction de conversion en majuscules
Pour tester la fonction de conversion en majuscules que vous venez de déployer, configurez une collection appelée messages
dans votre base de données Firestore:
Dans la console Google Cloud, accédez à la page des bases de données Firestore:
Cliquez sur Commencer une collection.
Spécifiez
messages
comme ID de collection.Pour commencer à ajouter le premier document de la collection, sous Ajouter le premier document, acceptez l'ID de document généré automatiquement.
Pour déclencher votre fonction déployée, ajoutez un document dont le nom de champ est
original
et la valeur du champ estminka
.Lorsque vous enregistrez le document, le mot en minuscules du champ de valeur est converti en majuscules.
Si vous modifiez ensuite la valeur du champ pour y faire figurer des lettres minuscules, la fonction va à nouveau être déclenchée, ce qui va convertir toutes les lettres minuscules en majuscules.
Limites des fonctions
- L'ordre n'est pas garanti. Les modifications rapides peuvent déclencher des appels de fonctions dans un ordre inattendu.
- Bien que les événements soient diffusés une fois au moins, un même événement peut produire plusieurs appels de fonction. Évitez de dépendre de procédés dits "exactement une fois" et écrivez des fonctions idempotentes.
- Un déclencheur est associé à une seule base de données. Vous ne pouvez pas créer un déclencheur qui correspond à plusieurs bases de données.
- La suppression d'une base de données ne supprime pas automatiquement les déclencheurs de cette base de données. Le déclencheur cesse de diffuser des événements, mais continue d'exister jusqu'à ce que vous le supprimiez.