Chiamare funzioni locali
Configurazione
Questo documento presuppone che tu abbia
configurato una funzione in esecuzione in locale su
localhost
utilizzando il framework delle funzioni
o Buildpack. Inoltre, presuppone che tu abbia installato lo strumento curl
sulla tua macchina locale.
Invio di richieste a funzioni locali
Puoi attivare funzioni eseguite in locale inviando loro richieste HTTP instradate tramite un processo di pubblicazione locale.
Per determinare dove la funzione viene eseguita in locale, controlla l'URL visualizzato quando hai iniziato a eseguire la funzione. Per impostazione predefinita, la funzione sarà ospitata su localhost:8080
.
Funzioni HTTP
Quando testi la funzione HTTP dall'ambiente di sviluppo, di solito
rispetta le 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 in cui viene eseguita la funzione. Nei seguenti esempi, se la funzione è in ascolto su una porta diversa da 8080, sostituisci 8080 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
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 non formattata, utilizza curl
:
- Fai clic sull'icona + nella barra dei menu di Cloud Shell per aprire una nuova finestra del terminale sullo stesso sistema in cui è in esecuzione la funzione.
Dall'interno della finestra, esegui il comando
curl
per attivare la funzione. Ad esempio:curl localhost:8080
Test delle funzioni HTTP sul server desktop
Se crei ed esegui la funzione sul tuo sistema desktop locale, per prima cosa avvia la funzione localmente, quindi invia la richiesta di trigger 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. Sul server desktop viene aperta una finestra del browser in cui localhost:8080
viene attivata 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 visualizzata 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 il giorno 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 di esempio Cloud Pub/Sub e Cloud Storage a una funzione in background in esecuzione in 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" } }'