Chiama le funzioni locali
Configurazione
Questo documento presuppone che tu abbia
configurato una funzione eseguita localmente su
localhost utilizzando il framework di Functions
o Buildpack. Inoltre, presuppone che tu abbia installato lo strumento curl sulla tua macchina locale.
Invio di richieste a funzioni locali
Puoi attivare le funzioni eseguite localmente inviando loro richieste HTTP instradate tramite un processo di gestione locale.
Determina dove viene eseguita localmente la funzione controllando l'URL visualizzato
quando hai iniziato a eseguire la funzione. Per
impostazione predefinita, la tua funzione è ospitata su localhost:8080.
Funzioni HTTP
Quando testi la funzione HTTP dall'ambiente di sviluppo, in genere 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, devi inviare la richiesta HTTP dallo stesso sistema su cui viene eseguita la funzione. Negli esempi seguenti, 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 funzione, avviala
localmente nella finestra del terminale Cloud Shell, quindi invia la richiesta di trigger HTTP
da un browser o da un'istanza curl come segue:
Browser
Fai clic sull'icona
sulla barra degli strumenti di Cloud Shell e scegli porta 8080 o Cambia porta per
selezionare una porta diversa. Si apre una finestra del browser sul sistema corretto e viene inviata una richiesta GET alla porta indicata.
Curl
Per controllare il formato della richiesta HTTP o per visualizzare la risposta non formattata,
utilizza curl:
- Fai clic sull'icona + nella barra dei menu di Cloud Shell per aprire una nuova finestra del terminale nello stesso sistema in cui viene eseguita la funzione.
All'interno di questa finestra, esegui il comando
curlper attivare la funzione. Ad esempio:curl localhost:8080
Test delle funzioni HTTP sul computer server locale
Se stai creando ed eseguendo la funzione sul tuo computer locale, prima
avvia la funzione localmente, poi invia la richiesta di attivazione HTTP da un browser
o da un'istanza 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 su localhost:8080 sul computer server locale per attivare la funzione.
Curl
Apri una nuova finestra del terminale sul computer locale, quindi esegui il comando curl
in quella finestra per attivare la funzione. Ad esempio:
curl localhost:8080
Esegue il comando curl specificato per attivare la funzione e visualizza la risposta non formattata.
Funzioni CloudEvent
Puoi inviare eventi di esempio alle
funzioni CloudEvent
utilizzando curl. Le seguenti richieste curl mostrano come inviare eventi di esempio Cloud Pub/Sub e Cloud Storage a una funzione CloudEvent in esecuzione su 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" }'
Storage
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 di esempio Cloud Pub/Sub e Cloud Storage 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=" } }'
Storage
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" } }'