Cloud Run functions の関数を直接呼び出す
Cloud Run functions では、迅速なイテレーションとデバッグをサポートするために、コマンドライン インターフェースで call
コマンドを、Google Cloud コンソール UI でテスト機能を使用できます。これにより、関数を直接呼び出し、予期した動作が行われているかどうか確認できます。特定のイベントに応答するように関数がデプロイされている場合でも、関数がすぐに実行されます。
Google Cloud CLI を使用して関数をテストする
gcloud CLI を使用して関数を直接呼び出すには、gcloud functions call
コマンドを使用し、関数が想定する任意のデータを JSON 形式で --data
引数に渡します。例:
gcloud functions call YOUR_FUNCTION_NAME --data '{"name":"Tristan"}'
YOUR_FUNCTION_NAME
は実行する関数の名前です。--data
引数は、関数に次のように渡されます。
- HTTP 関数の場合、指定したデータは POST リクエストの本体として送信されます。
- バックグラウンド関数の場合、データがイベントデータとして関数に直接渡されます。
- CloudEvent 関数の場合、データがイベントデータとして関数に直接渡されます。
詳細については、gcloud functions call
のドキュメントをご覧ください。
Google Cloud コンソールを使用して関数をテストする
Google Cloud コンソールから関数を直接呼び出すには、次の操作を行います。
呼び出す関数の名前をクリックします。
[テスト] タブをクリックします。
[トリガーとなるイベントを構成する] フィールドに、関数が 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); }
関数を直接呼び出すには、base64 でエンコードされたデータを想定する PubsubMessage
をイベントデータとして送信します。
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 コンソールから関数を呼び出すこともできます。