Chame funções do Cloud Run diretamente
Para suportar a iteração e a depuração rápidas, as funções do Cloud Run fornecem um comando call
na interface de linhas de comando e funcionalidades de teste na IU da consolaGoogle Cloud . Isto permite-lhe invocar diretamente uma função para garantir que está a funcionar conforme esperado. Isto faz com que a função seja executada imediatamente, mesmo que tenha sido implementada para responder a um evento específico.
Teste a sua função com a CLI do Google Cloud
Para invocar diretamente uma função através da CLI gcloud, use o comando gcloud functions call
e forneça todos os dados que a sua função espera como JSON no argumento --data
. Por exemplo:
gcloud functions call YOUR_FUNCTION_NAME --data '{"name":"Tristan"}'
onde YOUR_FUNCTION_NAME
é o nome da função que quer executar. O argumento --data
é enviado para a sua função da seguinte forma:
- Para funções HTTP, os dados que fornece são enviados como o corpo de um pedido POST.
- Para funções em segundo plano,os dados são transmitidos diretamente como dados de eventos para a sua função.
- Para funções CloudEvent, os dados são transmitidos diretamente como os dados do evento para a sua função.
Para mais informações, consulte a documentação gcloud functions call
.
Teste a sua função com a Google Cloud consola
Para invocar diretamente uma função a partir da Google Cloud consola, siga estes passos:
Clique no nome da função que quer invocar.
Clique no separador Testes.
No campo Configurar evento de acionamento, introduza quaisquer dados que a sua função espere como JSON.
Clique em Testar a função.
A resposta da sua função aparece no campo Output e os registos da execução individual aparecem no campo Logs.
Exemplo de função orientada por eventos do Cloud Pub/Sub
Este exemplo mostra como invocar diretamente uma função orientada por eventos acionada por eventos do 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 a função diretamente, envie um
PubsubMessage
,
que espera dados codificados em base64, como os dados do 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'"}'
Este exemplo da CLI usa a sintaxe bash
ou sh
. Funciona em ambientes Linux e Mac, mas não no Windows.
Também pode invocar a função a partir da Google Cloud consola usando os mesmos dados de eventos no campo Evento de acionamento.