Ce tutoriel simple montre comment rédiger, déployer et déclencher une fonction Cloud Run basée 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 Cloud Run Functions, consultez la page Déclencheurs Pub/Sub.
Si vous recherchez des exemples de code d'utilisation de Pub/Sub, consultez l'exemple de navigateur.
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.
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.
Accédez au répertoire contenant l'exemple de code Cloud Run Functions permettant d'accéder à Pub/Sub :
Node.js
cd nodejs-docs-samples/functions/helloworld/
Python
cd python-docs-samples/functions/helloworld/
Go
cd golang-samples/functions/helloworld/
Java
cd java-docs-samples/functions/helloworld/hello-pubsub/
Ruby
cd ruby-docs-samples/functions/helloworld/pubsub/
Consultez l'exemple de code :
Node.js
Python
Go
Java
Ruby
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 helloPubSub \ --runtime nodejs22 \
--trigger-topic YOUR_TOPIC_NAME
Utilisez le flag --runtime
pour spécifier l'ID d'environnement d'exécution d'une version Node.js compatible afin d'exécuter votre fonction.
Python
gcloud functions deploy hello_pubsub \ --runtime python312 \
--trigger-topic YOUR_TOPIC_NAME
Utilisez le flag --runtime
pour spécifier l'ID d'environnement d'exécution d'une version Python compatible afin d'exécuter votre fonction.
Go
gcloud functions deploy HelloPubSub \ --runtime go121 \
--trigger-topic YOUR_TOPIC_NAME
Utilisez le flag --runtime
pour spécifier l'ID d'environnement d'exécution d'une version Go compatible afin d'exécuter votre fonction.
Java
gcloud functions deploy java-pubsub-function \ --entry-point functions.HelloPubSub \ --runtime java17 \ --memory 512MB \
--trigger-topic YOUR_TOPIC_NAME
Utilisez le flag --runtime
pour spécifier l'ID d'environnement d'exécution d'une version Java compatible afin d'exécuter votre fonction.
Ruby
gcloud functions deploy hello_pubsub --runtime ruby33 \
--trigger-topic YOUR_TOPIC_NAME
Utilisez le flag --runtime
pour spécifier l'ID d'environnement d'exécution d'une version Ruby compatible afin d'exécuter votre fonction.
où YOUR_TOPIC_NAME
est le nom du sujet Pub/Sub auquel la fonction sera abonnée.
Si le sujet YOUR_TOPIC_NAME
n'existe pas encore, cette commande le crée automatiquement. Vous pouvez également créer un sujet avant d'exécuter la commande deploy
, en utilisant la consoleGoogle Cloud ou la commande gcloud
suivante :
gcloud pubsub topics create YOUR_TOPIC_NAME
Déclencher la fonction
Publiez un message dans votre sujet Cloud Pub/Sub. Dans cet exemple, le message est un nom que la fonction inclura dans un message d'accueil :
gcloud pubsub topics publish
YOUR_TOPIC_NAME
--messageYOUR_NAME
Remplacez
YOUR_TOPIC_NAME
par le nom de votre sujet Pub/Sub, etYOUR_NAME
par une chaîne arbitraire.Vérifiez les journaux pour vous assurer que les exécutions sont terminées :
gcloud functions logs read --limit 50
Vous pouvez également publier un message dans un sujet Pub/Sub à partir d'une fonction.