Llamar directamente a funciones de Cloud Run
Para facilitar la iteración y la depuración rápidas, Cloud Run functions proporciona el comando call
en la interfaz de línea de comandos y la función de prueba en la interfaz de usuario de la consolaGoogle Cloud . De esta forma, puedes invocar directamente una función para asegurarte de que se comporta como esperas. Esto hace que la función se ejecute inmediatamente, aunque se haya implementado para responder a un evento específico.
Probar la función con Google Cloud CLI
Para invocar directamente una función mediante gcloud CLI, usa el comando gcloud functions call
y proporciona los datos que espere tu función en formato JSON en el argumento --data
. Por ejemplo:
gcloud functions call YOUR_FUNCTION_NAME --data '{"name":"Tristan"}'
En este comando, YOUR_FUNCTION_NAME
es el nombre de la función que quieres ejecutar. El argumento --data
se envía a tu función de la siguiente manera:
- En el caso de las funciones HTTP, los datos que proporciones se enviarán como cuerpo de una solicitud POST.
- En el caso de las funciones en segundo plano, los datos se transfieren directamente a tu función como datos de evento.
- En el caso de las funciones de CloudEvents, los datos se transfieren directamente a tu función como datos de evento.
Para obtener más información, consulta la documentación de gcloud functions call
.
Prueba tu función con la Google Cloud consola
Para invocar directamente una función desde la consola Google Cloud , sigue estos pasos:
Haz clic en el nombre de la función que quieras invocar.
Haz clic en la pestaña Pruebas.
En el campo Configurar evento de activación, introduce los datos que espera tu función en formato JSON.
Haz clic en Probar la función.
La respuesta de la función aparece en el campo Salida y los registros de la ejecución individual se muestran en el campo Registros.
Ejemplo de función basada en eventos de Cloud Pub/Sub
En este ejemplo se muestra cómo invocar directamente una función basada en eventos activada por eventos de Cloud Pub/Sub:
Node.js
Python
Go
Java
C#
using CloudNative.CloudEvents; using Google.Cloud.Functions.Framework; using Google.Events.Protobuf.Cloud.PubSub.V1; using Microsoft.Extensions.Logging; using System.Threading; using System.Threading.Tasks; namespace HelloPubSub; public class Function : ICloudEventFunction<MessagePublishedData> { private readonly ILogger _logger; public Function(ILogger<Function> logger) => _logger = logger; public Task HandleAsync(CloudEvent cloudEvent, MessagePublishedData data, CancellationToken cancellationToken) { string nameFromMessage = data.Message?.TextData; string name = string.IsNullOrEmpty(nameFromMessage) ? "world" : nameFromMessage; _logger.LogInformation("Hello {name}", name); return Task.CompletedTask; } }
Ruby
PHP
use CloudEvents\V1\CloudEventInterface; use Google\CloudFunctions\FunctionsFramework; // Register the function with Functions Framework. // This enables omitting the `FUNCTIONS_SIGNATURE_TYPE=cloudevent` environment // variable when deploying. The `FUNCTION_TARGET` environment variable should // match the first parameter. FunctionsFramework::cloudEvent('helloworldPubsub', 'helloworldPubsub'); function helloworldPubsub(CloudEventInterface $event): void { $log = fopen(getenv('LOGGER_OUTPUT') ?: 'php://stderr', 'wb'); $cloudEventData = $event->getData(); $pubSubData = base64_decode($cloudEventData['message']['data']); $name = $pubSubData ? htmlspecialchars($pubSubData) : 'World'; fwrite($log, "Hello, $name!" . PHP_EOL); }
Para invocar la función directamente, envía un
PubsubMessage
,
que espera datos codificados en base64, como datos de evento:
Node.js
DATA=$(printf 'Hello!'|base64) && gcloud functions call helloPubSub --data '{"data":"'$DATA'"}'
Python
DATA=$(printf 'Hello!'|base64) && gcloud functions call hello_pubsub --data '{"data":"'$DATA'"}'
Go
DATA=$(printf 'Hello!'|base64) && gcloud functions call HelloPubSub --data '{"data":"'$DATA'"}'
Java
DATA=$(printf 'Hello!'|base64) && gcloud functions call java-hello-pubsub --data '{"data":"'$DATA'"}'
C#
DATA=$(printf 'Hello!'|base64) && gcloud functions call csharp-hello-pubsub --data '{"data":"'$DATA'"}'
Ruby
DATA=$(printf 'Hello!'|base64) && gcloud functions call hello_pubsub --data '{"data":"'$DATA'"}'
PHP
DATA=$(printf 'Hello!'|base64) && gcloud functions call helloworldPubsub --data '{"data":"'$DATA'"}'
En este ejemplo de CLI se usa la sintaxis bash
o sh
. Funciona en entornos Linux y Mac, pero no en Windows.
También puedes invocar la función desde la consola Google Cloud usando los mismos datos de evento en el campo Evento de activación.