Mit dem Pub/Sub-Emulator lokal testen
Sie können Funktionen lokal testen, bevor Sie sie bereitstellen. Verwenden Sie dazu Functions Framework in Verbindung mit dem Pub/Sub-Emulator. Die Beispiele auf dieser Seite basieren auf Cloud Run-Funktionen.
Functions Framework mit Pub/Sub Emulator verwenden
Sie können eine Funktion lokal mit einer Push-Nachricht aus dem Pub/Sub-Emulator auslösen.
Testen Sie diese Funktion wie hier beschrieben. Beachten Sie, dass Sie drei separate Terminalinstanzen verwenden müssen:
Starten Sie im ersten Terminal den Pub/Sub-Emulator auf Port 8043 in einem lokalen Projekt:
gcloud beta emulators pubsub start \ --project=abc \ --host-port='localhost:8043'
Erstellen Sie im zweiten Terminal ein Pub/Sub-Thema und -Abo:
curl -s -X PUT 'http://localhost:8043/v1/projects/abc/topics/mytopic'
Verwenden Sie
http://localhost:8080
als Endpunkt des Push-Abos.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"}}'
Klonen Sie im dritten Terminal das Beispiel-Repository auf Ihren lokalen Computer:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Wechseln Sie in das Verzeichnis, das den Beispielcode für Cloud Run-Funktionen enthält:
Node.js
cd nodejs-docs-samples/functions/v2/helloPubSub/
Python
cd python-docs-samples/functions/v2/pubsub/
Go
cd golang-samples/functions/functionsv2/hellopubsub/
Sehen Sie sich den Beispielcode an:
Node.js
Python
Go
Erstellen Sie den Buildpack (dies kann einige Minuten dauern):
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
Starten Sie die Pub/Sub-Funktion auf Port 8080. Der Emulator sendet Push-Nachrichten:
docker run --rm -p 8080:8080 my-function
Rufen Sie die Funktion im zweiten Terminal auf, indem Sie eine Nachricht veröffentlichen. Die Nachrichtendaten müssen in base64 codiert sein. In diesem Beispiel wird der base64-codierte String
{"foo":"bar"}
verwendet.curl -s -X POST 'http://localhost:8043/v1/projects/abc/topics/mytopic:publish' \ -H 'Content-Type: application/json' \ --data '{"messages":[{"data":"eyJmb28iOiJiYXIifQ=="}]}'
Die Funktionsausgabe sollte im dritten Terminal angezeigt werden.
Drücken Sie zum Abbrechen
Ctrl+C
.