イベントとトリガー

このページでは、Google Cloud Functions のコンテキストでのイベントのコンセプトについて説明します。また、イベントが発生したときに実行されるように、トリガーを作成して関数に関連付ける方法についても説明します。

イベント

イベントは、クラウド環境内で発生するもので、対策を講じる必要があります。たとえば、データベースでのデータの変更、ストレージ システムへのファイルの追加、新しい仮想マシン インスタンスの作成などがイベントとして扱われます。 現在、Cloud Functions では次のプロバイダのイベントがサポートされています。

イベントが発生したときにトリガーが実行されるように、トリガーを関数に関連付ける方法については、チュートリアルをご覧ください。

イベントデータ

イベントにより Cloud ファンクションの実行がトリガーされると、イベントに関連するデータが関数のパラメータを介して渡されます。イベントのタイプは、関数に渡されるパラメータによって決まります。HTTP リクエスト イベントは HTTP 関数をトリガーし、他のイベントタイプはバックグラウンド関数をトリガーします。

Node.js

Node.js ランタイムでは、関数は次のパラメータを使用します。

  • HTTP 関数

    関数には ExpressJS パラメータ (request, response) が渡されます。response パラメータを使用してレスポンスを送信します。

  • バックグラウンド関数

    関数にはパラメータ (data, context, callback) が渡されます。パラメータの詳細については、バックグラウンド関数をご覧ください。

Python

Python ランタイムでは、関数は次のパラメータを使用します。

  • HTTP 関数

    関数には (request) という単一パラメータが渡されます。これは、Flask Request オブジェクトです。関数から Flask make_response メソッドで処理可能な値が返されます。結果は HTTP レスポンスに含まれます。

  • バックグラウンド関数

    関数にはパラメータ (data, context) が渡されます。パラメータの詳細については、バックグラウンド関数をご覧ください。

Go

Go ランタイムでは、関数は次のパラメータを使用します。

  • HTTP 関数

    関数には net/http パラメータ (http.ResponseWriter, *http.Request) が渡されます。ResponseWriter パラメータを使用してレスポンスを送信します。

  • バックグラウンド関数

    関数にはパラメータ (context.Context, Event) が渡されます。パラメータの詳細については、バックグラウンド関数をご覧ください。

Java

Java ランタイムでは、関数は次のパラメータを使用します。

  • HTTP 関数

    関数にはパラメータ (HttpRequest, HttpResponse) が渡されます。HttpResponse パラメータを使用してレスポンスを送信します。

  • バックグラウンド関数

    関数にはパラメータ (event, context) が渡されます。パラメータの詳細については、バックグラウンド関数をご覧ください。

トリガー

イベントへのレスポンスはトリガーにより行われます。トリガーは、特定のイベントや一連のイベントに関心があることを示すものにもなります。 関数をトリガーにバインドすると、イベントをキャプチャして処理できます。

以下は、サポートされているトリガーのタイプと、コマンドラインのデプロイ時に指定するために使用されるフラグの一覧です。

トリガー コマンドライン フラグ
HTTP --trigger-http
Google Cloud Pub/Sub --trigger-topic TOPIC_NAME
その他のソース(Firebase など) --trigger-event EVENT_TYPE --trigger-resource RESOURCE

コマンドライン フラグの詳細については、gcloud functions deploy リファレンスをご覧ください。

トリガーと関数のバインドは、デプロイ時に gcloud コマンドライン ツール、UI、Cloud Functions API のいずれかで行われます。関数とトリガーは多対 1 でバインドされます。つまり、一度に複数のトリガーに同じ関数をバインドすることはできません。ただし、同じトリガーを使用すると、同じトリガーで 2 つの異なる関数をデプロイするだけで、複数の関数を実行させることができます。