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.
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 de Google Cloudsuivants :
- Cloud Run functions
- Pub/Sub
Vous pouvez obtenir une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions and Cloud Pub/Sub APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions and Cloud Pub/Sub APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init - Préparez votre environnement de développement.
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
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_NAMERemplacez
YOUR_TOPIC_NAMEpar le nom de votre sujet Pub/Sub, etYOUR_NAMEpar une chaîne arbitraire.Vérifiez les journaux pour vous assurer que les exécutions sont terminées :
gcloud functions logs read --limit 50
- 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.
Si la gcloud CLI est déjà installée, mettez-la à jour en exécutant la commande suivante :
gcloud components update
Préparer l'application
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_NAMEDéclencher la fonction
Vous pouvez également publier un message dans un sujet Pub/Sub à partir d'une fonction.
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 :
Supprimer la fonction
La suppression de fonctions Cloud Run ne supprime pas les ressources stockées dans Cloud Storage.
Pour supprimer la fonction que vous avez créée dans ce tutoriel, exécutez la commande suivante :
Node.js
gcloud functions delete helloPubSub
Python
gcloud functions delete hello_pubsub
Go
gcloud functions delete HelloPubSub
Java
gcloud functions delete java-pubsub-function
Ruby
gcloud functions delete hello_pubsub
Vous pouvez également supprimer des fonctions Cloud Run à partir de la consoleGoogle Cloud .