Ce tutoriel simple montre comment rédiger, déployer et déclencher des fonctions Cloud Run basées sur des événements avec un déclencheur 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 les fonctions Cloud Run, consultez la page Déclencheurs Pub/Sub.
Si vous recherchez des exemples de code d'utilisation de Pub/Sub, consultez l'exemple de navigateur.
Objectifs
- Rédiger et déployer une fonction Cloud Run 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 Run functions
- Cloud Build
- Pub/Sub
- Artifact Registry
- Eventarc
- Cloud Logging
For details, see Cloud Run functions pricing.
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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, Eventarc, Logging, and Pub/Sub APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, Eventarc, Logging, and Pub/Sub APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
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 les fonctions Cloud Run, 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 des fonctions Cloud Run 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 aux fonctions Cloud Run (1re génération), dans les fonctions Cloud Run, 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 :
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Supprimer la fonction Cloud Run
La suppression de fonctions Cloud Run ne supprime pas les ressources stockées dans Cloud Storage.
Pour supprimer la fonction Cloud Run 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 Run à partir de la console Google Cloud.