Esegui test in locale con l'emulatore Pub/Sub
Puoi testare le funzioni localmente prima di eseguirne il deployment utilizzando il framework delle funzioni in combinazione con l'emulatore Pub/Sub. Gli esempi in questa pagina utilizzano Cloud Functions (2nd gen).
Usa il framework di Functions con l'emulatore Pub/Sub
Puoi attivare una funzione in locale utilizzando un messaggio push dall'emulatore Pub/Sub.
Testa questa funzionalità come descritto qui. Tieni presente che è necessario utilizzare tre istanze di terminale separate:
Assicurati di aver installato lo strumento
pack
e lo strumento Docker.Nel primo terminale, avvia l'emulatore Pub/Sub sulla porta 8043 in un progetto locale:
gcloud beta emulators pubsub start \ --project=abc \ --host-port='localhost:8043'
Nel secondo terminale, crea un argomento e una sottoscrizione Pub/Sub:
curl -s -X PUT 'http://localhost:8043/v1/projects/abc/topics/mytopic'
Usa
http://localhost:8080
come endpoint della sottoscrizione 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"}}'
Nel terzo terminale, clona il repository di esempio sulla tua macchina locale:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
In alternativa, puoi scaricare l'esempio come file ZIP ed estrarlo.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
In alternativa, puoi scaricare l'esempio come file ZIP ed estrarlo.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
In alternativa, puoi scaricare l'esempio come file ZIP ed estrarlo.
Passa alla directory che contiene il codice di esempio di Cloud 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/
Dai un'occhiata al codice campione:
Node.js
Python
Go
Crea il buildpack (l'operazione potrebbe richiedere alcuni minuti):
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
Avvia la funzione Pub/Sub sulla porta 8080. L'emulatore invierà i messaggi push a questo indirizzo:
docker run --rm -p 8080:8080 my-function
Nel secondo terminale, richiama la funzione pubblicando un messaggio. I dati del messaggio devono essere codificati in formato base64. Questo esempio utilizza la stringa codificata in 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=="}]}'
Dovresti vedere l'output della funzione nel terzo terminale.
Premi
Ctrl+C
per interrompere.