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 Schaltfläche für Webvorschau 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:

  1. 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.
  2. 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"
        }
      }'