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 Ihre HTTP-Funktion in Ihrer Entwicklungsumgebung testen, wartet sie normalerweise auf Anfragen unter localhost:8080
. Diese Schnittstelle ist nur von dem Computer oder der VM aus zugänglich, auf dem bzw. der Ihre Funktion ausgeführt wird. Anfragen, die von einem anderen System gesendet werden, können sie nicht erreichen. Aus diesem Grund müssen Sie die HTTP-Anfrage von demselben System aus 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 Ihrer Funktion verwenden, starten Sie die Funktion lokal im Cloud Shell-Terminalfenster und senden Sie dann die HTTP-Triggeranfrage über einen Browser oder eine curl
-Instanz wie unten beschrieben:
Browser
Klicken Sie in der Cloud Shell-Symbolleiste 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 ein GET-Request an den angegebenen Port gesendet.
Curl
Wenn Sie das Format Ihrer HTTP-Anfrage steuern oder die unformatierte Antwort sehen möchten, verwenden Sie curl
:
- Klicken Sie in der Cloud Shell-Menüleiste auf das Symbol +, um ein neues Terminalfenster auf demselben System zu öffnen, auf dem Ihre 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 Ihre Funktion auf Ihrem lokalen Desktopsystem erstellen und ausführen, starten Sie sie zuerst lokal und senden Sie dann die HTTP-Triggeranfrage über einen Browser oder eine curl
-Instanz wie unten beschrieben:
Browser
Öffnen Sie ein neues Browserfenster oder einen neuen Tab und geben Sie http://localhost:8080
in die Adressleiste des Browsers ein. Dadurch wird ein Browserfenster mit localhost:8080
auf Ihrem Desktopserver geöffnet, um Ihre Funktion auszulösen.
Curl
Öffnen Sie auf Ihrem lokalen Computer ein neues Terminalfenster 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" } }'