Chiama le funzioni locali

Configurazione

Questo documento presuppone che tu abbia configurato una funzione in esecuzione in locale su localhost utilizzando il framework delle funzioni o Buildpacks. Inoltre, presuppone che tu abbia installato lo strumento curl sulla macchina locale.

Invio di richieste alle funzioni locali

Puoi attivare funzioni eseguite localmente inviando loro richieste HTTP instradate tramite un processo di gestione locale.

Determina dove la tua funzione viene eseguita localmente controllando l'URL visualizzato quando hai avviato l'esecuzione della funzione. Per impostazione predefinita, la funzione sarà ospitata su localhost:8080.

Funzioni HTTP

Quando testi la funzione HTTP dall'ambiente di sviluppo, di solito quest'ultima rimane in ascolto delle richieste su localhost:8080. Questa interfaccia è accessibile solo dalla macchina o dalla VM su cui è in esecuzione la funzione; le richieste inviate da qualsiasi altro sistema non possono raggiungerla. Per questo motivo, è necessario inviare la richiesta HTTP dallo stesso sistema su cui è in esecuzione la funzione. Nei seguenti esempi, se la tua funzione è in ascolto su una porta diversa da 8080, sostituisci 8080 nell'esempio con il numero di porta della tua funzione.

Test delle funzioni HTTP con Cloud Shell

Se utilizzi Cloud Shell per creare e testare la tua funzione, avviala localmente nella finestra del terminale Cloud Shell, quindi invia la richiesta di trigger HTTP da un browser o dall'istanza curl come segue:

Browser

Fai clic sull'icona Pulsante Anteprima web sulla barra degli strumenti di Cloud Shell e scegli porta 8080 o Cambia porta per scegliere una porta diversa. Si apre una finestra del browser sul sistema corretto ed emette una richiesta GET alla porta indicata.

Curl

Per controllare il formato della richiesta HTTP o per visualizzare la risposta senza formattazione, utilizza curl:

  1. Fai clic sull'icona + nella barra dei menu di Cloud Shell per aprire una nuova finestra del terminale sullo stesso sistema su cui è in esecuzione la funzione.
  2. Dalla finestra, esegui il comando curl per attivare la funzione. Ad esempio:

    curl localhost:8080
    

Test delle funzioni HTTP sul server desktop

Se stai creando ed eseguendo la funzione sul tuo sistema desktop locale, prima avvia la funzione localmente, quindi invia la richiesta di trigger HTTP da un browser o dall'istanza curl come segue:

Browser

Apri una nuova finestra o scheda del browser e digita http://localhost:8080 nella barra degli indirizzi del browser. Viene aperta una finestra del browser in localhost:8080 sul tuo server desktop per attivare la funzione.

Curl

Apri una nuova finestra del terminale sul desktop locale ed esegui il comando curl in quella finestra per attivare la funzione. Ad esempio:

 curl localhost:8080

Viene eseguito il comando curl specificato per attivare la funzione e viene visualizzata la risposta senza formattazione.

Funzioni CloudEvent

Puoi inviare eventi di esempio alle funzioni CloudEvent utilizzando curl. Le seguenti richieste curl mostrano come inviare eventi Cloud Pub/Sub e Cloud Storage di esempio a una funzione CloudEvent in esecuzione alle localhost:8080.

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"
      }'
    

Archiviazione

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"
      }'
    

Funzioni in background

Puoi inviare eventi di esempio alle funzioni in background utilizzando curl. Le seguenti richieste curl mostrano come inviare eventi Cloud Pub/Sub e Cloud Storage di esempio a una funzione in background in esecuzione su localhost:8080.

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="
        }
      }'
    

Archiviazione

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"
        }
      }'