Ejecuta funciones con Functions Emulator

Functions Emulator de Google Cloud CLI te permite administrar las instancias locales de tus funciones de Cloud Run Functions a través del comando gcloud alpha functions local. Esto te permite implementar y probar tus funciones en tu sistema local antes de implementarlas en el entorno de Google Cloud.

Functions Emulator usa los paquetes de compilación de Google Cloud para empaquetar el código de tu función en imágenes de contenedor que se pueden ejecutar de forma local. Luego, ejecutas estas imágenes de forma local con Docker.

Requisitos previos de la instalación

Antes de continuar, asegúrate de tener instalado lo siguiente:

Implementa tu función de forma local

Para implementar la función de forma local con Functions Emulator, usa el comando gcloud functions:

Node.js

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --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 \
    --runtime=go121

Java

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

C#

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

Ruby

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

PHP

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

Reemplaza lo siguiente:

  • LOCAL_DEPLOYMENT_NAME: El nombre en el que implementas la función de forma local.
  • ENTRY_POINT: El punto de entrada de tu función.

Puedes configurar mejor tu comando de implementación con las siguientes marcas opcionales:

Marcar Descripción
--port Es el puerto en el que se deben escuchar las solicitudes (predeterminado: 8080).
--builder Es el nombre del compilador de buildpack que se usará.

El valor de --builder se establece de forma predeterminada en el compilador de App Engine para el idioma de tu función. Por ejemplo, el valor predeterminado es gcr.io/gae-runtimes/buildpacks/google-gae-22/python/builder para Python.

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

Llama 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

Reemplaza LOCAL_DEPLOYMENT_NAME por el nombre con el que deseas implementar la 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 de HTTP

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

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

Reemplaza lo siguiente:

  • LOCAL_DEPLOYMENT_NAME: El nombre en el que se implementará la función de forma local.
  • ENTRY_POINT: El punto de entrada de tu función.
  • MESSAGE: Es una cadena de texto que se pasa como el cuerpo de la solicitud HTTP.

Función de CloudEvent

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

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

Reemplaza lo siguiente:

  • LOCAL_DEPLOYMENT_NAME: El nombre en el que se implementará la función de forma local.
  • ENTRY_POINT: El punto de entrada de tu función.
  • CLOUD_EVENT_JSON: Es una cadena codificada en JSON en modo de contenido estructurado que describe el evento activador. Para obtener más detalles y ejemplos, consulta CloudEvents: formato de evento JSON.

Aquí se incluye un ejemplo de una 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.

Borra la implementación de tu función local

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

gcloud alpha functions local delete LOCAL_DEPLOYMENT_NAME

Reemplaza LOCAL_DEPLOYMENT_NAME por el nombre con el que deseas implementar la función de forma local.

Este comando desimplementa la función, pero no borra su código.

Próximos pasos