直接呼叫 Cloud Run 函式
為支援快速迭代和偵錯,Cloud Run 函式會在指令列介面中提供 call
指令,並在Google Cloud 控制台 UI 中提供測試功能。這樣一來,您就能直接叫用函式,確保函式運作正常。這樣可使函式立即執行,即使它可能已部署來因應特定事件也是如此。
使用 Google Cloud CLI 測試函式
如要使用 gcloud CLI 直接叫用函式,請使用 gcloud functions call
指令,並在 --data
引數中以 JSON 格式提供函式預期的任何資料。例如:
gcloud functions call YOUR_FUNCTION_NAME --data '{"name":"Tristan"}'
其中 YOUR_FUNCTION_NAME
是您要執行的函式名稱。--data
引數會傳送至函式,如下所示:
- 對於 HTTP 函式,您提供的資料會以 POST 要求的主體傳送。
- 對於背景函式,資料會直接以事件資料形式傳遞至函式。
- 如果是 CloudEvent 函式,資料會直接以事件資料的形式傳遞至函式。
詳情請參閱 gcloud functions call
說明文件。
使用 Google Cloud 控制台測試函式
如要直接從 Google Cloud 控制台叫用函式,請按照下列步驟操作:
按一下要叫用的函式名稱。
按一下 [Testing] (測試) 分頁標籤。
在「設定觸發事件」欄位中,輸入函式預期的任何資料,格式為 JSON。
按一下 [測試函式]。
您函式的回應會顯示在 [輸出] 欄位中,且個別執行的記錄會顯示在 [記錄] 欄位中。
Cloud Pub/Sub 事件驅動函式範例
以下範例說明如何直接叫用由 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); }
如要直接叫用函式,請傳送 PubsubMessage
,該函式會將 base64 編碼資料做為事件資料:
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'"}'
本範例 CLI 使用 bash
或 sh
語法。這項功能適用於 Linux 和 Mac 環境,但不適用於 Windows。
您也可以使用「觸發事件」欄位中的相同事件資料,從 Google Cloud 主控台叫用函式。