Chiama le funzioni locali

Configurazione

In questo documento si presuppone che tu abbia configurare una funzione eseguita in locale localhost utilizzando il framework delle funzioni o Buildpacks. Inoltre, presuppone che tu abbia ha 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 pubblicazione locale.

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

Funzioni HTTP

Quando testi la funzione HTTP dall'ambiente di sviluppo, di solito rimane in ascolto delle richieste su localhost:8080. Questa interfaccia è accessibile solo da la macchina o la VM su cui è in esecuzione la funzione; richieste inviate da altri utenti sistema non riesce a raggiungerlo. Per questo motivo, è necessario inviare la richiesta HTTP dal lo stesso sistema su cui è in esecuzione la tua funzione. Nei seguenti esempi, se il tuo è in ascolto su una porta diversa da 8080, sostituisci 8080 nella esempio con il numero di porta per la funzione.

Test delle funzioni HTTP con Cloud Shell

Se utilizzi Cloud Shell per creare e testare la tua funzione, avvia localmente nella finestra del terminale Cloud Shell, quindi invia da un browser o da un'istanza curl nel seguente modo:

Browser

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

Curl

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

  1. Fai clic sull'icona + sulla barra dei menu di Cloud Shell per aprire un nuovo 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, per prima cosa avviare la funzione localmente, quindi inviare la richiesta di trigger HTTP da un browser o curl, come segue:

Browser

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

Curl

Apri una nuova finestra del terminale sul desktop locale, quindi 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 visualizzato la risposta senza formattazione.

Funzioni CloudEvent

Puoi inviare eventi di esempio a Funzioni di CloudEvent utilizzando curl. Le seguenti richieste di curl mostrano come inviare un campione Pub/Sub e Cloud Storage in un Funzione CloudEvent in esecuzione alle ore 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"
      }'