Memanggil Cloud Run Functions secara langsung
Untuk mendukung iterasi dan proses debug yang cepat,
Cloud Run Functions menyediakan perintah call di antarmuka command line dan fungsi pengujian
di UI konsolGoogle Cloud . Hal ini memungkinkan Anda memanggil fungsi secara langsung
untuk memastikan bahwa fungsi tersebut berperilaku seperti yang diharapkan. Langkah ini akan membuat fungsi segera dijalankan,
meskipun mungkin telah di-deploy
untuk merespons peristiwa tertentu.
Menguji fungsi dengan Google Cloud CLI
Untuk memanggil fungsi secara langsung
menggunakan gcloud CLI, gunakan perintah gcloud functions call dan masukkan data apa pun yang diharapkan fungsi Anda
sebagai JSON dalam argumen --data. Contoh:
gcloud functions call YOUR_FUNCTION_NAME --data '{"name":"Tristan"}'
dengan YOUR_FUNCTION_NAME adalah nama fungsi
yang ingin Anda jalankan. Argumen --data dikirim ke fungsi Anda sebagai berikut:
- Untuk fungsi HTTP, data yang Anda berikan akan dikirim sebagai isi permintaan POST.
- Untuk fungsi latar belakang, data diteruskan secara langsung sebagai data peristiwa ke fungsi Anda.
- Untuk fungsi CloudEvent, data diteruskan secara langsung sebagai data peristiwa ke fungsi Anda.
Untuk mengetahui informasi selengkapnya, lihat dokumentasi gcloud functions call.
Menguji fungsi dengan Konsol Google Cloud
Untuk memanggil fungsi secara langsung dari konsol Google Cloud , ikuti langkah-langkah berikut:
Klik nama fungsi yang ingin dipanggil.
Klik tab Testing.
Di kolom Configure Triggering Event, masukkan data apa pun yang diharapkan fungsi Anda sebagai JSON.
Klik Test the function.
Respons fungsi akan muncul di kolom Output, dan log untuk setiap eksekusi akan muncul di kolom Logs.
Contoh fungsi berbasis peristiwa Cloud Pub/Sub
Contoh ini menunjukkan cara memanggil fungsi berbasis peristiwa secara langsung yang dipicu oleh peristiwa 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); }
Untuk memanggil fungsi secara langsung, kirim
PubsubMessage,
yang mengharapkan data berenkode base64, sebagai data peristiwa:
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'"}'
Contoh CLI ini menggunakan sintaksis bash atau sh. Hal ini berfungsi di lingkungan Linux dan Mac, tetapi tidak di Windows.
Anda juga dapat memanggil fungsi ini dari konsol Google Cloud menggunakan data peristiwa yang sama di kolom Triggering event.