Ejecuta funciones con Functions Emulator

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

Esta función funciona con las funciones de 1ª gen. y 2ª gen.

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 la 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 aún más el comando de implementación con las siguientes marcas opcionales:

Flag Descripción
--port El puerto en el que se escuchan las solicitudes (predeterminado: 8080).
--builder El nombre del compilador de paquetes de compilación que se usará.

El valor --builder es el compilador de App Engine de forma predeterminada para el lenguaje 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 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 tu función de forma local.

Para incluir datos en la llamada a tu función local, elige la pestaña que coincida con tu 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: Una string de texto para pasar como el cuerpo de la solicitud HTTP.

Función de CloudEvent

Para llamar a tu función local de CloudEvent, 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: Una string codificada en JSON en modo de contenido estructurado que describe el evento de activación. 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 CloudEvent 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 en el que implementarás tu función de forma local.

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

Próximos pasos