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
- Consulta cómo desplegar una función de Cloud Run en Google Cloud.