Functions エミュレータを使用して関数を実行する
Google Cloud CLI の Functions エミュレータを使用すると、gcloud alpha functions local コマンドで Cloud Run functions のローカル インスタンスを管理できます。これにより、関数を Google Cloud 環境にデプロイする前に、ローカル システム上にデプロイしてテストできます。
Functions エミュレータは、Google Cloud の buildpack を使用して、関数コードをローカルで実行可能なコンテナ イメージにパッケージ化します。その後、Docker を使用してこれらのイメージをローカルで実行します。
インストールの前提条件
続行する前に、以下がインストールされていることを確認してください。
関数をローカルにデプロイする
Functions エミュレータを使用して関数をローカルでデプロイするには、gcloud functions
コマンドを使用します。
Node.js
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=nodejs20
Python
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=python312
Go
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=go121
Java
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=java17
C#
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=dotnet6
Ruby
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=ruby32
PHP
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=php82
次のように置き換えます。
- LOCAL_DEPLOYMENT_NAME: 関数をローカルにデプロイする際の名前。
- ENTRY_POINT: 関数のエントリ ポイント。
デプロイ コマンドは、次のオプション フラグを使用してさらに細かく構成できます。
フラグ | 説明 |
---|---|
--port |
リクエストをリッスンするポート(デフォルト: 8080 )。 |
--builder |
使用する Buildpack ビルダーの名前。 |
--builder
の値のデフォルトは、関数の言語の App Engine ビルダーです。たとえば Python の場合、デフォルトは gcr.io/serverless-runtimes/google-22-full/builder/python
です。
gcloud alpha
コマンドを初めて使用する場合は、gcloud
コマンドから gcloud alpha コマンドセットをインストールするように求められます。
ローカル関数を呼び出す
データなしでローカル関数を呼び出すには、次のコマンドを使用します。
gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME
LOCAL_DEPLOYMENT_NAME は、関数をローカルにデプロイする際の名前に置き換えます。
ローカル関数の呼び出しにデータを指定するには、関数のタイプに合わせてタブを選択します。
HTTP 関数
ローカル HTTP 関数を次のように呼び出します。
gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
--data='{"message": "MESSAGE"}'
次のように置き換えます。
- LOCAL_DEPLOYMENT_NAME: 関数をローカルにデプロイする際の名前。
- ENTRY_POINT: 関数のエントリ ポイント。
- MESSAGE: HTTP リクエストの本文として渡すテキスト文字列。
CloudEvent 関数
ローカルの CloudEvent 関数を呼び出すには、トリガー イベントを表す CloudEvent
JSON オブジェクトを次のように指定する必要があります。
gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
--cloud-event="CLOUD_EVENT_JSON"
次のように置き換えます。
- LOCAL_DEPLOYMENT_NAME: 関数をローカルにデプロイする際の名前。
- ENTRY_POINT: 関数のエントリ ポイント。
- CLOUD_EVENT_JSON: トリガーとなるイベントを記述する、構造化コンテンツ モードの JSON エンコード文字列。詳細と例については、CloudEvents - JSON イベントの形式をご覧ください。
コマンドラインの例を次に示します。
gcloud alpha functions local call my-function --cloud-event='{
"specversion" : "1.0",
"type" : "com.github.pull.create",
"source" : "https://github.com/cloudevents/spec/pull",
"subject" : "123",
"id" : "ce",
"time" : "2021-01-27T18:30:00Z", "data" : "{\n \"subscription\": \"projects\/test-project\/subscriptions\/my-subscription\",\n \"message\": {\n \"attributes\": {\n \"attr1\":\"attr1-value\"\n },\n \"data\": \"d29ybGQ=\",\n \"messageId\": \"message-id\",\n \"publishTime\":\"2021-02-05T04:06:14.109Z\",\n \"orderingKey\": \"ordering-key\"\n }\n}"
}'
CloudEvents の JSON 形式の定義方法について詳しくは、CloudEvent の仕様をご覧ください。
ローカル関数のデプロイを削除する
次のコマンドを使用して、ローカル関数のデプロイを削除します。
gcloud alpha functions local delete LOCAL_DEPLOYMENT_NAME
LOCAL_DEPLOYMENT_NAME は、関数をローカルにデプロイする際の名前に置き換えます。
このコマンドは関数のデプロイを解除しますが、関数コードは削除しません。
次のステップ
- Google Cloud に Cloud Run 関数のデプロイ方法を学習する。