Tester en local avec l'émulateur Pub/Sub
Vous pouvez tester les fonctions localement avant de les déployer, à l'aide du framework des fonctions utilisé conjointement avec l'émulateur Pub/Sub. Les exemples de cette page sont basés sur Cloud Run Functions.
Utiliser le framework des fonctions avec l'émulateur Pub/Sub
Vous pouvez déclencher une fonction localement à l'aide d'un message push depuis l'émulateur Pub/Sub.
Testez cette fonctionnalité comme décrit ici. Notez que vous devez utiliser trois instances de terminal distinctes :
Assurez-vous que l'outil
pack
et Docker sont installés.Dans le premier terminal, démarrez l'émulateur Pub/Sub sur le port 8043 dans un projet local :
gcloud beta emulators pubsub start \ --project=abc \ --host-port='localhost:8043'
Dans le deuxième terminal, créez un sujet et un abonnement Pub/Sub :
curl -s -X PUT 'http://localhost:8043/v1/projects/abc/topics/mytopic'
Utilisez
http://localhost:8080
comme point de terminaison de l'abonnement push.curl -s -X PUT 'http://localhost:8043/v1/projects/abc/subscriptions/mysub' \ -H 'Content-Type: application/json' \ --data '{"topic":"projects/abc/topics/mytopic","pushConfig":{"pushEndpoint":"http://localhost:8080/projects/abc/topics/mytopic"}}'
Dans le troisième terminal, clonez l'exemple de dépôt 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.
Accédez au répertoire contenant l'exemple de code de Cloud Run Functions :
Node.js
cd nodejs-docs-samples/functions/v2/helloPubSub/
Python
cd python-docs-samples/functions/v2/pubsub/
Go
cd golang-samples/functions/functionsv2/hellopubsub/
Consultez l'exemple de code :
Node.js
Python
Go
Créez le pack de création (cela peut prendre quelques minutes) :
Node.js
pack build \ --builder gcr.io/buildpacks/builder:v1 \ --env GOOGLE_FUNCTION_SIGNATURE_TYPE=event \ --env GOOGLE_FUNCTION_TARGET=helloPubSub \ my-function
Python
pack build \ --builder gcr.io/buildpacks/builder:v1 \ --env GOOGLE_FUNCTION_SIGNATURE_TYPE=event \ --env GOOGLE_FUNCTION_TARGET=subscribe \ my-function
Go
pack build \ --builder gcr.io/buildpacks/builder:v1 \ --env GOOGLE_FUNCTION_SIGNATURE_TYPE=event \ --env GOOGLE_FUNCTION_TARGET=HelloPubSub \ my-function
Démarrez la fonction Pub/Sub sur le port 8080. C'est là que l'émulateur envoie des messages en mode push :
docker run --rm -p 8080:8080 my-function
Dans le deuxième terminal, appelez la fonction en publiant un message. Les données du message doivent être encodées en base64. Cet exemple utilise la chaîne
{"foo":"bar"}
encodée en base64.curl -s -X POST 'http://localhost:8043/v1/projects/abc/topics/mytopic:publish' \ -H 'Content-Type: application/json' \ --data '{"messages":[{"data":"eyJmb28iOiJiYXIifQ=="}]}'
Vous devriez voir la sortie de la fonction dans le troisième terminal.
Appuyez sur
Ctrl+C
pour annuler.