Lokale Funktionen aufrufen
Einrichtung
In diesem Dokument wird davon ausgegangen, dass Sie mithilfe von Functions Frameworks
oder Buildpacks eine lokal ausgeführte Funktion in localhost
eingerichtet haben. Außerdem wird angenommen, dass das curl
-Tool auf Ihrem lokalen Computer installiert ist.
Anfragen an lokale Funktionen senden
Sie können lokal ausgeführte Funktionen auslösen, indem Sie HTTP-Anfragen senden, die über einen lokalen Bereitstellungsprozess weitergeleitet werden.
Sie können bestimmen, wo Ihre Funktion lokal ausgeführt wird. Dazu prüfen Sie die URL, die beim Starten der Funktion angezeigt wurde. Standardmäßig wird Ihre Funktion unter localhost:8080
gehostet.
HTTP-Funktionen
Wenn Sie die HTTP-Funktion in der Entwicklungsumgebung testen, überwacht sie in der Regel Anfragen auf localhost:8080
. Diese Schnittstelle ist nur über den Computer oder die VM zugänglich, auf der die Funktion ausgeführt wird. Anfragen von einem anderen System können es nicht erreichen. Aus diesem Grund müssen Sie die HTTP-Anfrage von demselben System senden, auf dem Ihre Funktion ausgeführt wird. Wenn Ihre Funktion in den folgenden Beispielen einen anderen Port als 8080 überwacht, ersetzen Sie 8080 im Beispiel durch die Portnummer für Ihre Funktion.
HTTP-Funktionen mit Cloud Shell testen
Wenn Sie Cloud Shell zum Erstellen und Testen der Funktion verwenden, starten Sie die Funktion lokal im Cloud Shell-Terminalfenster und geben Sie dann die HTTP-Triggeranfrage in einem Browser oder in der curl
-Instanz aus:
Browser
Klicken Sie in der Symbolleiste der Cloud Shell auf das Symbol und wählen Sie Port 8080 oder Port ändern aus, um einen anderen Port auszuwählen. Dadurch wird ein Browserfenster auf dem richtigen System geöffnet und eine GET-Anfrage an den angegebenen Port gesendet.
Curl
Verwenden Sie curl
, um das Format Ihrer HTTP-Anfrage zu steuern oder die unformatierte Antwort zu sehen:
- Klicken Sie in der Menüleiste von Cloud Shell auf das Symbol +, um ein neues Terminalfenster auf demselben System zu öffnen, auf dem die Funktion ausgeführt wird.
Führen Sie in diesem Fenster den Befehl
curl
aus, um die Funktion auszulösen. Beispiel:curl localhost:8080
HTTP-Funktionen auf dem Desktopserver testen
Wenn Sie eine Funktion auf Ihrem lokalen Computersystem erstellen und ausführen, starten Sie die Funktion zuerst lokal und geben Sie dann in einem Browser oder einer curl
-Instanz die HTTP-Triggeranfrage aus:
Browser
Öffnen Sie ein neues Browserfenster oder einen neuen Browsertab und geben Sie http://localhost:8080
in die Adressleiste des Browsers ein. Daraufhin wird auf Ihrem Desktop-Server ein Browserfenster zu localhost:8080
geöffnet, das die Funktion auslöst.
Curl
Öffnen Sie ein neues Terminalfenster auf Ihrem lokalen Desktop und führen Sie dann den Befehl curl
in diesem Fenster aus, um die Funktion auszulösen. Beispiel:
curl localhost:8080
Dadurch wird der angegebene curl
-Befehl ausgeführt, um die Funktion auszulösen, und die unformatierte Antwort wird angezeigt.
CloudEvent-Funktionen
Mit curl
können Sie Beispielereignisse an CloudEvent-Funktionen senden. Die folgenden curl
-Anfragen zeigen, wie Beispiele für Cloud Pub/Sub- und Cloud Storage-Ereignisse an eine CloudEvent-Funktion gesendet werden, die unter localhost:8080
ausgeführt wird.
Pub/Sub
curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -H "ce-id: 123451234512345" \ -H "ce-specversion: 1.0" \ -H "ce-time: 2020-01-02T12:34:56.789Z" \ -H "ce-type: google.cloud.pubsub.topic.v1.messagePublished" \ -H "ce-source: //pubsub.googleapis.com/projects/MY-PROJECT/topics/MY-TOPIC" \ -d '{ "message": { "data": "d29ybGQ=", "attributes": { "attr1":"attr1-value" } }, "subscription": "projects/MY-PROJECT/subscriptions/MY-SUB" }'
Speicher
curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -H "ce-id: 123451234512345" \ -H "ce-specversion: 1.0" \ -H "ce-time: 2020-01-02T12:34:56.789Z" \ -H "ce-type: google.cloud.storage.object.v1.finalized" \ -H "ce-source: //storage.googleapis.com/projects/_/buckets/MY-BUCKET-NAME" \ -H "ce-subject: objects/MY_FILE.txt" \ -d '{ "bucket": "MY_BUCKET", "contentType": "text/plain", "kind": "storage#object", "md5Hash": "...", "metageneration": "1", "name": "MY_FILE.txt", "size": "352", "storageClass": "MULTI_REGIONAL", "timeCreated": "2020-04-23T07:38:57.230Z", "timeStorageClassUpdated": "2020-04-23T07:38:57.230Z", "updated": "2020-04-23T07:38:57.230Z" }'
Hintergrundfunktionen
Mit curl
können Sie Beispielereignisse an Hintergrundfunktionen senden. Die folgenden curl
-Anfragen zeigen, wie Beispiele für Cloud Pub/Sub- und Cloud Storage-Ereignisse an eine Hintergrundfunktion gesendet werden, die unter localhost:8080
ausgeführt wird.
Pub/Sub
# 'world' base64-encoded is 'd29ybGQ=' curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -d '{ "context": { "eventId":"1144231683168617", "timestamp":"2020-05-06T07:33:34.556Z", "eventType":"google.pubsub.topic.publish", "resource":{ "service":"pubsub.googleapis.com", "name":"projects/sample-project/topics/gcf-test", "type":"type.googleapis.com/google.pubsub.v1.PubsubMessage" } }, "data": { "@type": "type.googleapis.com/google.pubsub.v1.PubsubMessage", "attributes": { "attr1":"attr1-value" }, "data": "d29ybGQ=" } }'
Speicher
curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -d '{ "context": { "eventId": "1147091835525187", "timestamp": "2020-04-23T07:38:57.772Z", "eventType": "google.storage.object.finalize", "resource": { "service": "storage.googleapis.com", "name": "projects/_/buckets/MY_BUCKET/MY_FILE.txt", "type": "storage#object" } }, "data": { "bucket": "MY_BUCKET", "contentType": "text/plain", "kind": "storage#object", "md5Hash": "...", "metageneration": "1", "name": "MY_FILE.txt", "size": "352", "storageClass": "MULTI_REGIONAL", "timeCreated": "2020-04-23T07:38:57.230Z", "timeStorageClassUpdated": "2020-04-23T07:38:57.230Z", "updated": "2020-04-23T07:38:57.230Z" } }'