Ejecutar funciones con el emulador de Functions

El emulador de funciones de la CLI de Google Cloud te permite gestionar instancias locales de tus funciones de Cloud Run mediante el comando gcloud alpha functions local. De esta forma, puedes desplegar y probar tus funciones en tu sistema local antes de desplegarlas en el entorno deGoogle Cloud .

Functions Emulator usa buildpacks de Google Cloud para empaquetar el código de tu función en imágenes de contenedor que se pueden ejecutar localmente. A continuación, ejecuta estas imágenes de forma local con Docker.

Requisitos previos de la instalación

Antes de continuar, asegúrate de que tienes instalado lo siguiente:

Desplegar tu función de forma local

Para desplegar tu función de forma local con el emulador de Functions, usa el comando gcloud functions:

Node.js

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --no-gen2 \
    --runtime=nodejs20

Python

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=python312

Go

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --no-gen2 \
    --runtime=go121

Java

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --no-gen2 \
    --runtime=java17 

Ruby

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=ruby33

Sustituye:

  • LOCAL_DEPLOYMENT_NAME: el nombre con el que vas a implementar tu función de forma local.
  • ENTRY_POINT: el punto de entrada de tu función.

Puede configurar aún más el comando de implementación con las siguientes marcas opcionales:

Bandera Descripción
--port Puerto en el que se escuchan las solicitudes (valor predeterminado: 8080).
--builder El nombre del compilador de paquetes de compilación que se va a usar.

El valor de --builder se asigna de forma predeterminada al compilador de App Engine del idioma de tu función. Por ejemplo, el valor predeterminado es gcr.io/serverless-runtimes/google-22-full/builder/python en Python.

La primera vez que uses el comando gcloud alpha, el comando gcloud te pedirá que instales el conjunto de comandos gcloud alpha.

Llamar a tu función local

Para llamar a tu función local sin datos, usa el siguiente comando:

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME

Sustituye LOCAL_DEPLOYMENT_NAME por el nombre con el que quieras desplegar tu función de forma local.

Para incluir datos en la llamada a tu función local, elige la pestaña que coincida con el tipo de función:

Función HTTP

Llama a tu función HTTP local de la siguiente manera:

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
    --data='{"message": "MESSAGE"}'

Sustituye:

  • LOCAL_DEPLOYMENT_NAME: nombre con el que se desplegará tu función de forma local.
  • ENTRY_POINT: el punto de entrada de tu función.
  • MESSAGE: cadena de texto que se debe enviar como cuerpo de la solicitud HTTP.

Función de CloudEvent

Para llamar a tu función CloudEvent local, debes proporcionar un objeto CloudEvent JSON que describa el evento de activación:

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
    --cloud-event="CLOUD_EVENT_JSON"

Sustituye:

  • LOCAL_DEPLOYMENT_NAME: nombre con el que se desplegará tu función de forma local.
  • ENTRY_POINT: el punto de entrada de tu función.
  • CLOUD_EVENT_JSON: una cadena codificada en JSON en el modo de contenido estructurado que describe el evento activador. Para obtener más información y ejemplos, consulta CloudEvents - JSON event format (CloudEvents: formato de evento JSON).

Aquí tienes un ejemplo de línea de comandos:

gcloud alpha functions local call my-function --cloud-event='{
 "specversion" : "1.0",
  "type" : "com.github.pull.create",
  "source" : "https://github.com/cloudevents/spec/pull",
  "subject" : "123",
  "id" : "ce",
  "time" : "2021-01-27T18:30:00Z", "data" : "{\n \"subscription\": \"projects\/test-project\/subscriptions\/my-subscription\",\n \"message\": {\n \"attributes\": {\n \"attr1\":\"attr1-value\"\n },\n \"data\": \"d29ybGQ=\",\n \"messageId\": \"message-id\",\n \"publishTime\":\"2021-02-05T04:06:14.109Z\",\n \"orderingKey\": \"ordering-key\"\n }\n}"
  }'

Consulta las especificaciones de CloudEvents para obtener más información sobre cómo se define el formato JSON para CloudEvents.

Eliminar la implementación de la función local

Elimina la implementación de la función local con el siguiente comando:

gcloud alpha functions local delete LOCAL_DEPLOYMENT_NAME

Sustituye LOCAL_DEPLOYMENT_NAME por el nombre con el que quieres desplegar tu función localmente.

Este comando anula la implementación de tu función, pero no elimina el código de la función.

Pasos siguientes