Ce tutoriel simple montre comment rédiger, déployer et déclencher une fonction Cloud basée sur des événements avec un déclencheur Cloud Pub/Sub.
Si vous débutez avec Pub/Sub et souhaitez en savoir plus, consultez la documentation correspondante, en particulier la gestion des sujets et des abonnements. Pour obtenir une présentation de l'utilisation des sujets et abonnements Pub/Sub dans Cloud Functions, consultez la page Déclencheurs Google Cloud Pub/Sub.
Si vous recherchez des exemples de code d'utilisation de Pub/Sub, consultez l'exemple de navigateur Google Cloud.
Objectifs
- Rédiger et déployer une fonction Cloud basée sur des événements
- Déclencher une fonction en publiant un message dans un sujet Pub/Sub
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
- Cloud Functions
- Cloud Build
- Pub/Sub
- Artifact Registry
- Eventarc
- Cloud Logging
Pour en savoir plus, consultez la page Tarifs de Cloud Functions.
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Avant de commencer
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Activer les API Cloud Functions, Cloud Build, Artifact Registry, Eventarc, Logging, and Pub/Sub.
- Installez Google Cloud CLI.
-
Pour initialiser gcloudCLI, exécutez la commande suivante :
gcloud init
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Activer les API Cloud Functions, Cloud Build, Artifact Registry, Eventarc, Logging, and Pub/Sub.
- Installez Google Cloud CLI.
-
Pour initialiser gcloudCLI, exécutez la commande suivante :
gcloud init
- Préparez votre environnement de développement.
Node.js
Python
Go
Java
C#
Ruby
PHP
Si la gcloud CLI est déjà installée, mettez-le à jour en exécutant la commande suivante :
gcloud components update
Prérequis
Créez un sujet Pub/Sub
gcloud pubsub topics create YOUR_TOPIC_NAME
Cette étape est obligatoire pour pouvoir déployer votre fonction. Dans Cloud Functions (2nd gen), les sujets Pub/Sub ne sont pas créés automatiquement lorsque vous déployez une fonction.
Préparer l'application
Clonez le dépôt de l'exemple d'application sur votre ordinateur local :
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
PHP
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Accédez au répertoire contenant l'exemple de code Cloud Functions permettant d'accéder à Pub/Sub :
Node.js
cd nodejs-docs-samples/functions/v2/helloPubSub/
Python
cd python-docs-samples/functions/v2/pubsub/
Go
cd golang-samples/functions/functionsv2/hellopubsub/
Java
cd java-docs-samples/functions/v2/pubsub/
C#
cd dotnet-docs-samples/functions/helloworld/HelloPubSub/
Ruby
cd ruby-docs-samples/functions/helloworld/pubsub/
PHP
cd php-docs-samples/functions/helloworld_pubsub/
Consultez l'exemple de code :
Node.js
Python
Go
Java
C#
Ruby
PHP
Déployer la fonction
Pour déployer la fonction avec un déclencheur Cloud Pub/Sub, exécutez la commande suivante dans le répertoire contenant l'exemple de code (ou, dans le cas de Java, le fichier pom.xml
) :
Node.js
gcloud functions deploy nodejs-pubsub-function \ --gen2 \ --runtime=nodejs20 \ --region=REGION
\ --source=. \ --entry-point=helloPubSub \
--trigger-topic=YOUR_TOPIC_NAME
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version Node.js compatible pour exécuter votre fonction.
Python
gcloud functions deploy python-pubsub-function \ --gen2 \ --runtime=python312 \ --region=REGION
\ --source=. \ --entry-point=subscribe \
--trigger-topic=YOUR_TOPIC_NAME
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version Python compatible pour exécuter votre fonction.
Go
gcloud functions deploy go-pubsub-function \ --gen2 \ --runtime=go121 \ --region=REGION
\ --source=. \ --entry-point=HelloPubSub \
--trigger-topic=YOUR_TOPIC_NAME
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version Go compatible pour exécuter votre fonction.
Java
gcloud functions deploy java-pubsub-function \ --gen2 \ --runtime=java17 \ --region=REGION
\ --source=. \ --entry-point=functions.SubscribeToTopic \ --memory=512MB \
--trigger-topic=YOUR_TOPIC_NAME
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version Java compatible pour exécuter votre fonction.
C#
gcloud functions deploy csharp-pubsub-function \ --gen2 \ --runtime=dotnet6 \ --region=REGION
\ --source=. \ --entry-point=HelloPubSub.Function \
--trigger-topic=YOUR_TOPIC_NAME
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version .NET compatible pour exécuter votre fonction.
Ruby
gcloud functions deploy ruby-pubsub-function \ --gen2 \ --runtime=ruby32 \ --region=REGION
\ --source=. \ --entry-point=hello_pubsub \
--trigger-topic=YOUR_TOPIC_NAME
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version Ruby compatible pour exécuter votre fonction.
PHP
gcloud functions deploy php-pubsub-function \ --gen2 \ --runtime=php82 \ --region=REGION
\ --source=. \ --entry-point=helloworldPubsub \
--trigger-topic=YOUR_TOPIC_NAME
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version PHP compatible pour exécuter votre fonction.
où YOUR_TOPIC_NAME
est le nom du sujet Pub/Sub auquel la fonction sera abonnée.
Vous devez créer un sujet avant d'exécuter la commande deploy
, à l'aide de la console Google Cloud ou de l'outil de ligne de commande gcloud
. Contrairement à Cloud Functions (1st gen), dans Cloud Functions (2nd gen), les sujets Pub/Sub ne sont pas créés automatiquement lorsque vous déployez une fonction avec un déclencheur Pub/Sub.
Déclencher la fonction
Pour tester la fonction Pub/Sub, procédez comme suit :
Publiez un message sur le sujet :
gcloud pubsub topics publish my-topic --message="Friend"
Lisez les journaux de la fonction pour afficher le résultat :
gcloud functions logs read \ --gen2 \ --region=REGION \ --limit=5 \ FUNCTION_NAME
Remplacez les éléments suivants :
- REGION correspond au nom de la région Google Cloud dans laquelle vous avez déployé votre fonction (par exemple,
us-west1
). - FUNCTION_NAME correspond au nom que vous avez attribué à la fonction lors de son déploiement (par exemple, la fonction Node.js de ce tutoriel a été déployée avec le nom de la fonction
nodejs-pubsub-function
).
Les résultats de journalisation incluant votre nouveau message "Friend" doivent s'afficher.
- REGION correspond au nom de la région Google Cloud dans laquelle vous avez déployé votre fonction (par exemple,
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet mais supprimez les ressources individuelles.
Supprimer le projet
Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.
Pour supprimer le projet :
- Dans la console Google Cloud, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.
Supprimer une fonction Cloud Functions
La suppression de fonctions Cloud Functions ne supprime pas les ressources stockées dans Cloud Storage.
Pour supprimer la fonction Cloud que vous avez créée dans ce tutoriel, exécutez la commande suivante :
Node.js
gcloud functions delete nodejs-pubsub-function --gen2 --region REGION
Python
gcloud functions delete python-pubsub-function --gen2 --region REGION
Go
gcloud functions delete go-pubsub-function --gen2 --region REGION
Java
gcloud functions delete java-pubsub-function --gen2 --region REGION
C#
gcloud functions delete csharp-pubsub-function --gen2 --region REGION
Ruby
gcloud functions delete ruby-pubsub-function --gen2 --region REGION
PHP
gcloud functions delete php-pubsub-function --gen2 --region REGION
Vous pouvez également supprimer des fonctions Cloud Functions à partir de Google Cloud Console.