Llamar a funciones locales
Configuración
En este documento se presupone que has configurado una función que se ejecuta de forma local en localhost
mediante Functions Framework o Buildpacks. También se presupone que has instalado la herramienta curl
en tu máquina local.
Enviar solicitudes a funciones locales
Puedes activar funciones que se ejecutan de forma local enviándoles solicitudes HTTP enrutadas a través de un proceso de servicio local.
Para determinar dónde se ejecuta tu función de forma local, consulta la URL que se muestra cuando inicias la función. De forma predeterminada, tu función se alojará en localhost:8080
.
Funciones HTTP
Cuando pruebas tu función HTTP desde tu entorno de desarrollo, normalmente escucha las solicitudes en localhost:8080
. Solo se puede acceder a esta interfaz desde la máquina o la VM en la que se ejecuta tu función. Las solicitudes enviadas desde cualquier otro sistema no pueden acceder a ella. Por este motivo, debes enviar la solicitud HTTP desde el mismo sistema en el que se ejecuta tu función. En los ejemplos siguientes, si tu función está escuchando en un puerto que no sea 8080, sustituye 8080 por el número de puerto de tu función.
Probar funciones HTTP con Cloud Shell
Si usas Cloud Shell para compilar y probar tu función, inicia la función de forma local en la ventana de terminal de Cloud Shell y, a continuación, envía la solicitud de activación HTTP desde un navegador o una instancia de curl
de la siguiente manera:
Navegador
Haz clic en el icono de la barra de herramientas de Cloud Shell y elige puerto 8080 o Cambiar puerto para seleccionar otro puerto. Se abrirá una ventana del navegador en el sistema correcto y se enviará una solicitud GET al puerto indicado.
Curl
Para controlar el formato de tu solicitud HTTP o ver la respuesta sin formato,
usa curl
:
- Haz clic en el icono + de la barra de menú de Cloud Shell para abrir una nueva ventana de terminal en el mismo sistema en el que se ejecuta tu función.
En esa ventana, ejecuta el comando
curl
para activar la función. Por ejemplo:curl localhost:8080
Probar funciones HTTP en el servidor de tu ordenador
Si vas a compilar y ejecutar tu función en tu sistema de escritorio local, primero inicia la función localmente y, a continuación, envía la solicitud de activación HTTP desde un navegador o una instancia de curl
de la siguiente manera:
Navegador
Abre una nueva ventana o pestaña del navegador y escribe http://localhost:8080
en la barra de direcciones del navegador. Se abrirá una ventana del navegador en localhost:8080
en tu servidor de escritorio para activar la función.
Curl
Abre una nueva ventana de terminal en tu escritorio local y, a continuación, ejecuta el comando curl
en esa ventana para activar tu función. Por ejemplo:
curl localhost:8080
De esta forma, se ejecuta el comando curl
especificado para activar la función y se muestra la respuesta sin formato.
Funciones de CloudEvent
Puedes enviar eventos de muestra a funciones de CloudEvent mediante curl
. Las siguientes solicitudes curl
muestran cómo enviar eventos de ejemplo de Cloud Pub/Sub y Cloud Storage a una función de CloudEvents que se ejecuta en 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" }'
Almacenamiento
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" }'
Funciones en segundo plano
Puedes enviar eventos de muestra a funciones en segundo plano mediante curl
. Las siguientes solicitudes curl
muestran cómo enviar eventos de ejemplo de Cloud Pub/Sub y Cloud Storage a una función en segundo plano que se ejecuta en 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=" } }'
Almacenamiento
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" } }'