Llama a funciones locales

Crear

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 la función de HTTP desde tu entorno de desarrollo, en general, escucha las 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 la 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 Botón Vista previa en la Web en la barra de herramientas de Cloud Shell y elige puerto 8080 o Cambiar puerto para elegir otro. Se abrirá una ventana del navegador en el sistema correcto y emitirá una solicitud GET al puerto indicado.

Curl

Para controlar el formato de tu solicitud HTTP o ver la respuesta sin formato, usa curl:

  1. 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.
  2. 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 la función en el sistema de escritorio local, primero inicia la función de forma local y, luego, emite la solicitud del activador HTTP desde un navegador o la instancia curl de la siguiente manera:

Navegador

Abre una ventana o pestaña nueva 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 ventana de terminal nueva en tu 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"
      }'
    

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"
      }'
    

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="
        }
      }'
    

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"
        }
      }'