Llama a funciones locales
Configuración
En este documento, suponemos que configuraste una función que se ejecuta de forma local en localhost
mediante Functions Frameworks o Buildpacks. También suponemos que instalaste la herramienta curl
en tu máquina local.
Envía solicitudes a funciones locales
Puedes activar funciones que se ejecuten de forma local si envías solicitudes HTTP enrutadas a través de un proceso de entrega local.
Para determinar la ubicación en la que se ejecuta la función de manera local, verifica la URL que se mostró cuando comenzaste a ejecutar la función. De forma predeterminada, la función se alojará en localhost:8080
.
Funciones de HTTP
Cuando pruebas tu función de HTTP desde tu entorno de desarrollo, esta suele
escuchar solicitudes en localhost:8080
. Solo se puede acceder a esta interfaz desde la máquina o VM en la que se ejecuta tu función; las solicitudes enviadas desde cualquier otro sistema no pueden acceder a la interfaz. Por este motivo, debes emitir la solicitud HTTP desde el
mismo sistema en el que se ejecuta tu función. En los siguientes ejemplos, si tu función escucha en un puerto distinto de 8080, reemplaza 8080 en el ejemplo por el número de puerto de tu función.
Prueba funciones de HTTP con Cloud Shell
Si usas Cloud Shell para compilar y probar tu función, inicia tu función de forma local en la ventana de la terminal de Cloud Shell y, luego, emite la solicitud del activador HTTP desde un navegador o una instancia curl
de la siguiente manera:
Navegador
Haz clic en el ícono en la barra de herramientas de Cloud Shell y elige puerto 8080 o Cambiar puerto para elegir otro. De este modo, se abrirá una ventana del navegador en el sistema correcto y se emitirá 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 ícono + en la barra de menú de Cloud Shell para abrir una ventana de terminal nueva en el mismo sistema en el que se ejecuta tu función.
Desde esa ventana, ejecuta el comando
curl
para activar la función. Por ejemplo:curl localhost:8080
Prueba funciones de HTTP en tu servidor de escritorio
Si compilas y ejecutas tu función en tu sistema de escritorio local, primero
iníciala de forma local y, luego, emite la solicitud del activador HTTP desde un navegador
o una instancia 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. De este modo, 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 el escritorio local y, luego, ejecuta el comando curl
en esa ventana para activar la función. Por ejemplo:
curl localhost:8080
Esto ejecuta el comando curl
especificado para activar la función y muestra
la respuesta sin formato.
Funciones de CloudEvent
Puedes enviar eventos de muestra a las funciones de CloudEvent mediante curl
. En las siguientes solicitudes curl
, se muestra cómo enviar eventos de muestra de Cloud Pub/Sub y Cloud Storage a una función de CloudEvent 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 las funciones en segundo plano mediante curl
. En las siguientes solicitudes curl
, se muestra cómo enviar eventos de muestra 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" } }'