Realiza pruebas localmente con el emulador de Pub/Sub
Puedes probar funciones de forma local antes de implementarlas mediante Functions Framework junto con el emulador de Pub/Sub. Los ejemplos de esta página se basan en Cloud Run. Functions.
Usa Functions Framework con el emulador de Pub/Sub
Puedes activar una función de forma local con un mensaje push desde el emulador de Pub/Sub.
Prueba esta función como se describe aquí. Ten en cuenta que es necesario que uses tres instancias de terminal independientes:
Asegúrate de haber instalado la herramienta de
pack
y Docker.En la primera terminal, inicia el emulador de Pub/Sub en el puerto 8043 en un proyecto local:
gcloud beta emulators pubsub start \ --project=abc \ --host-port='localhost:8043'
En la segunda terminal, crea un tema y una suscripción de Pub/Sub:
curl -s -X PUT 'http://localhost:8043/v1/projects/abc/topics/mytopic'
Usa
http://localhost:8080
como el extremo de la suscripción de envío.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"}}'
En la tercera terminal, clona el repositorio de muestra en tu máquina local:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.
Ve al directorio que contiene el código de muestra de funciones de Cloud Run:
Node.js
cd nodejs-docs-samples/functions/v2/helloPubSub/
Python
cd python-docs-samples/functions/v2/pubsub/
Go
cd golang-samples/functions/functionsv2/hellopubsub/
Observa el código de muestra:
Node.js
Python
Go
Crea el paquete de compilación (esto puede demorar unos minutos):
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
Inicia la función de Pub/Sub en el puerto 8080. Aquí es donde el emulador enviará mensajes push:
docker run --rm -p 8080:8080 my-function
En la segunda terminal, invoca la función mediante la publicación de un mensaje. Los datos del mensaje deben estar codificados en formato Base64. En este ejemplo, se usa la string codificada en Base64
{"foo":"bar"}
.curl -s -X POST 'http://localhost:8043/v1/projects/abc/topics/mytopic:publish' \ -H 'Content-Type: application/json' \ --data '{"messages":[{"data":"eyJmb28iOiJiYXIifQ=="}]}'
Deberías ver el resultado de la función en la tercera terminal.
Presiona
Ctrl+C
para anular.