Chiama direttamente le funzioni Cloud Run
Per supportare l'iterazione e il debug rapidi, le funzioni Cloud Run forniscono un comando call
nell'interfaccia a riga di comando e la funzionalità di test nell'interfaccia utente della consoleGoogle Cloud . In questo modo puoi richiamare direttamente una funzione per assicurarti che funzioni come previsto. Di conseguenza, la funzione viene eseguita
immediatamente, anche se potrebbe essere stata implementata per rispondere a un
evento specifico.
Testa la funzione con Google Cloud CLI
Per invocare direttamente una funzione utilizzando gcloud CLI, utilizza il comando gcloud functions call
e fornisci tutti i dati previsti dalla funzione come JSON nell'argomento --data
. Ad esempio:
gcloud functions call YOUR_FUNCTION_NAME --data '{"name":"Tristan"}'
dove YOUR_FUNCTION_NAME
è il nome della funzione
da eseguire. L'argomento --data
viene inviato alla funzione come segue:
- Per le funzioni HTTP,i dati forniti vengono inviati come corpo di una richiesta POST.
- Per le funzioni in background,i dati vengono trasmessi direttamente come dati dell'evento alla funzione.
- Per le funzioni CloudEvent,i dati vengono passati direttamente come dati dell'evento alla funzione.
Per ulteriori informazioni, consulta la documentazione di gcloud functions call
.
Testa la funzione con la Google Cloud console
Per richiamare direttamente una funzione dalla Google Cloud console, segui questi passaggi:
Fai clic sul nome della funzione da richiamare.
Fai clic sulla scheda Test.
Nel campo Configura evento di attivazione, inserisci i dati previsti dalla funzione come JSON.
Fai clic su Testa la funzione.
La risposta della funzione viene visualizzata nel campo Output, mentre i log per la singola esecuzione vengono visualizzati nel campo Log.
Esempio di funzione basata su eventi Cloud Pub/Sub
Questo esempio mostra come richiamare direttamente una funzione basata su eventi attivata dagli eventi Cloud Pub/Sub:
Node.js
Python
Vai
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); }
Per invocare direttamente la funzione, invia un messaggio PubsubMessage
, che prevede dati codificati in base64, come dati dell'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'"}'
Vai
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'"}'
Questo esempio di interfaccia a riga di comando utilizza la sintassi bash
o sh
. Funziona in ambienti Linux e Mac, ma non Windows.
Puoi anche richiamare la funzione dalla Google Cloud console utilizzando gli stessi dati evento nel campo Evento di attivazione.