Menguji secara lokal dengan emulator Pub/Sub
Anda dapat menguji fungsi secara lokal sebelum men-deploy-nya, menggunakan Functions Framework bersama dengan emulator Pub/Sub. Contoh di halaman ini menggunakan Cloud Functions (generasi ke-2).
Menggunakan Functions Framework dengan emulator Pub/Sub
Anda dapat memicu fungsi secara lokal menggunakan pesan push dari emulator Pub/Sub.
Uji fitur ini seperti yang dijelaskan di sini. Perhatikan bahwa Anda harus menggunakan tiga instance terminal terpisah:
Di terminal pertama, jalankan emulator Pub/Sub pada port 8043 di project lokal:
gcloud beta emulators pubsub start \ --project=abc \ --host-port='localhost:8043'
Di terminal kedua, buat topik dan langganan Pub/Sub:
curl -s -X PUT 'http://localhost:8043/v1/projects/abc/topics/mytopic'
Gunakan
http://localhost:8080
sebagai endpoint langganan 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"}}'
Di terminal ketiga, clone repositori sampel ke mesin lokal Anda:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Atau, Anda dapat mendownload sampel sebagai file ZIP dan mengekstraknya.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Atau, Anda dapat mendownload sampel sebagai file ZIP dan mengekstraknya.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Atau, Anda dapat mendownload sampel sebagai file ZIP dan mengekstraknya.
Ubah ke direktori yang memuat kode contoh 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/
Lihat kode contoh:
Node.js
Python
Go
Buat buildpack (mungkin perlu waktu beberapa menit):
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
Mulai fungsi Pub/Sub pada port 8080. Di sinilah emulator akan mengirim pesan push:
docker run --rm -p 8080:8080 my-function
Di terminal kedua, panggil fungsi dengan memublikasikan pesan. Data pesan harus dienkode dalam base64. Contoh ini menggunakan
{"foo":"bar"}
string berenkode base64.curl -s -X POST 'http://localhost:8043/v1/projects/abc/topics/mytopic:publish' \ -H 'Content-Type: application/json' \ --data '{"messages":[{"data":"eyJmb28iOiJiYXIifQ=="}]}'
Anda akan melihat output fungsi di terminal ketiga.
Tekan
Ctrl+C
untuk membatalkan.