3. イベントサブスクリプション

3.1. 概要

イベントサブスクリプションは、イベントの検知・フィルタリング・ハンドリングからなる、イベント駆動の設定です。

イベントサブスクリプションは、JSON・YAML形式で定義します。

以下に、イベントサブスクリプションの例を示します。(同じ内容を、JSON・YAMLの両方で示します。)

3.1.1. JSON形式

{
    "name": "photo-event",
    "source": {
        "type": "fileStorage"
    },
    "filter": {
        "bucketName": "photos",
        "action": {
            "$in": ["file.created", "file.updated"]
        }
    },
    "handler": {
        "type": "cloudFunction",
        "functionName": "makeThumbnail"
    }
}

3.1.2. YAML形式

name: photo-event
source:
    type: fileStorage
filter:
    bucketName: photos
    action:
      $in: [file.created, file.updated]
handler:
    type: cloudFunction
    functionName: makeThumbnail

注釈

イベントサブスクリプションは、モバイルバックエンド基盤の内部ではJSON形式で保存されます。 ユーザがYAML形式で定義した場合でも、JSON形式に変換されて保存されます。

3.2. フォーマット

イベントサブスクリプションは、JSON・YAML形式のいずれかで記述します。

  • name: イベントサブスクリプションの識別名です。テナント内で一意な名前としてください。(必須)
  • source: イベントソースを指定します。(必須)
    • type: イベントソースの種類を指定します。fileStorage, scheduler のいずれかを指定します。(必須)
  • filter: イベントフィルタを定義します。詳細は後述します。(オプショナル)
  • handler: イベントハンドラを指定します。(必須)
    • type: イベントハンドラの種類を指定します。v7.5.0ではcloudFunctionのみがサポートされます。(必須)
    • functionName: イベントハンドラのファンクション名を指定します。typeがcloudFunctionの場合に必須です。

3.2.1. イベントフィルタ

イベントフィルタは、MongoDBクエリのサブセットで定義します。

イベントフィルタは、イベントのdataに適用され、マッチした場合にのみハンドラが起動されます。 なお、イベントフィルタは省略可能であり、省略した場合は必ずハンドラが起動されます。

イベントフィルタで使用できるクエリは、MongoDB の以下の演算子相当のものに限定されます。 $eq, $ne, $gt, $gte, $lte, $lt, $in, $nin, $all, $exists, $and, $or, $nor, $not, $regex。