Open6

Cloud Functions トリガー

chima91chima91

Cloud Functions とは

  • Cloud Functions は、GCP が提供するサーバーレス実行環境
  • 開発者はバックエンドのサーバーを管理することなく、コードを直接クラウドにデプロイして実行可能
  • 監視対象のイベントが発生した時、あるいは、HTTP リクエストが行われた時に関数がトリガーされる。
chima91chima91

トリガーの分類

トリガーは2つのカテゴリに分類される。

  • HTTP トリガー: HTTP(S) リクエストに応答し、HTTP関数に対応。
    • HTTP トリガーは特定の URL に対する HTTP リクエストを受け取るためのエンドポイントを提供する。このトリガーを使用すると、Web アプリや他のサービスからのリクエストに応じて関数を実行できる。
import * as functions from 'firebase-functions';

export const helloWorld = functions.https.onRequest((req, res) => {
    const name = req.query.name || 'World'
    res.send(`Hello, ${name}!`);
});
  • イベントトリガー: Google Cloud プロジェクト内のイベントに応答し、イベントドリブン関数に対応。
    • Google Cloud 内のサービスからのイベントによって起動される。
import * as functions from 'firebase-functions';

export const pubsubFunction = functions.pubsub.onMessagePublished('topic-name', (message, _context) => {
    const data = message.json;
    console.log(`Received message with data: ${JSON.stringify(data)}`);
});

備考

  • トリガーは関数のデプロイ時に指定する。
  • 同じ関数を一度に複数のトリガーにバインドすることはできない。
  • 同じトリガー設定で複数の関数をデプロイすることで、同じイベントの発生時に複数の関数を実行できる。
chima91chima91

第2世代でサポートされているトリガー

Cloud Functions (第 2 世代) では次のタイプのトリガーがサポートされている。

  • HTTP トリガー
  • イベントトリガー
    • Pub/Sub トリガー
    • Cloud Storage トリガー
    • Firestore トリガー
    • 汎用の Eventarc トリガー (Eventarc でサポートされているすべてのイベントタイプをサポート)
      • Directly from a Google Cloud source
      • Using Cloud Audit Logs
      • Using third-party sources
chima91chima91

第1世代でサポートされているトリガー

Cloud Functions (第 1 世代) では次のタイプのトリガーがサポートされている。

  • HTTP トリガー
  • イベント トリガー
    • Pub/Sub トリガー
    • Cloud Storage トリガー
    • Firestore トリガー
    • Firebase 向け Google アナリティクス トリガー
    • Firebase Realtime Database トリガー
    • Firebase Authentication トリガー
    • Firebase Remote Config トリガー
chima91chima91

Pub/Sub と Webhook による追加のトリガー

Cloud Functions は Pub/Sub トピックのメッセージによってトリガーできるため、Cloud Functions をイベントバスとして Pub/Sub をサポートする他の Google サービスと統合できます。また、HTTP トリガーを使用して、HTTP コールバックを提供するサービス(Webhook)と統合することもできます。

  • Cloud Logging
    • Cloud Logging はログを Pub/Sub トピックに転送し、Cloud Functions で使用できる。
  • Cloud Scheduler
    • Cloud Scheduler ジョブは Pub/Sub トピックにメッセージを送信でき、Cloud Functions で使用できる。
  • Cloud Tasks
    • Cloud Tasks HTTP Target タスクを使用すると任意の HTTP エンドポイントでタスクハンドラを実行できるため、HTTP トリガーを含む Cloud Functions 関数をタスクハンドラとして使用できる。
  • Gmail
    • Gmail の Push Notification API を使用することで、Gmail のイベントを Pub/Sub トピックに送信し、Cloud Functions で使用できる。