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
- Obtén información sobre cómo implementar una función de Cloud Run Functions en Google Cloud.