Llama a funciones locales
Configuración
En este documento, suponemos que ya
configuraste una función que se ejecuta de forma local
en localhost con 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, iníciala
de forma local en la ventana de 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
curlpara activar la función. Por ejemplo:curl localhost:8080
Prueba funciones de HTTP en el servidor de tu computadora de escritorio
Si compilas y ejecutas tu función en el sistema de tu computadora 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 ventana o pestaña del navegador nueva 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 el
servidor de tu computadora de escritorio para activar la función.
Curl
Abre una ventana de terminal nueva en la computadora de 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 mostrar
la respuesta sin formato.
Funciones de CloudEvent
Puedes enviar eventos de muestra a las
funciones de CloudEvent
usando 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
usando 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" } }'