コンテンツにスキップ

Validationコネクタ

Validationコネクタは、各ペイロードをフィールドルールのリストと照合してチェックします。ルールが失敗すると、設定されたonInvalidポリシーがペイロードをドロップするか、そのまま転送するか、妥当性フラグでタグ付けするかを決定します。

コネクタタイプ: MeddleValidation

{
"type": "MeddleValidation",
"config": {
"onInvalid": "drop",
"rules": [
{ "key": "temperature", "type": "number", "required": true, "min": -40, "max": 150 },
{ "key": "sensor_id", "type": "string", "required": true, "pattern": "^S-[0-9]{4}$" },
{ "key": "active", "type": "boolean", "required": false }
]
}
}
  • rules(必須、最小1):フィールドごとのルールのリスト
  • onInvalid(必須):少なくとも1つのルールが失敗した場合の動作 — dropforward、またはtag
  • invalidTag: tagモードでペイロードに書き込まれるキー(デフォルト _valid
  • key(必須):チェックするペイロードフィールド名
  • type(必須):stringnumber、またはboolean
  • required: trueの場合、フィールドが存在しないとルールが失敗。falseの場合、フィールドが存在しないとルールがスキップされます。
  • minmax: 包括的な数値範囲(type: numberでのみ有効)
  • pattern: 正規表現(type: stringでのみ有効)
  • numberfloat64に強制変換可能な任意の数値(int、floatなど)を受け入れます。型不一致はエラーとして報告されます。
  • string — Goのstringを受け入れます。patternが設定されている場合、値は一致する必要があります。
  • boolean — Goのboolを受け入れます。

min / maxは包括的です。正確に-40temperaturemin: -40にパスします。正規表現パターンは起動時にGoのRE2構文で一度コンパイルされます。無効なパターンはコネクタの起動を妨げます。

{ "onInvalid": "drop" }

失敗したペイロードは静かに破棄されます(エラーはエラーチャネルに表示されます)。有効なペイロードのみが転送されます。

{ "onInvalid": "forward" }

妥当性に関係なく、すべてのペイロードが転送されます。監視のみに使用します。

{
"onInvalid": "tag",
"invalidTag": "is_valid"
}

無効なペイロードは、タグキーがfalseに設定された状態で転送されます。有効なペイロードは変更されずに通過します。invalidTagが省略された場合、キーはデフォルトで_validになります。

  1. ストレージに到達する前に不正なセンサー読み取りを拒否
  2. 正規表現パターンによるID規約の強制(例:資産タグ)
  3. 既知の動作エンベロープを持つ物理センサーの範囲ゲーティング
  4. ダウンストリームのRouterベースの処理のためのtagモードによるソフト検証
{
"type": "MeddleValidation",
"config": {
"onInvalid": "drop",
"rules": [
{ "key": "device_id", "type": "string", "required": true, "pattern": "^DEV-[A-Z0-9]+$" },
{ "key": "temperature", "type": "number", "required": true, "min": -20, "max": 120 },
{ "key": "online", "type": "boolean", "required": true }
]
}
}

フィールドが欠落している、正規表現に失敗している、またはtemperature[-20, 120]の範囲外であるペイロードはドロップされます。

{
"type": "MeddleValidation",
"config": {
"onInvalid": "tag",
"invalidTag": "is_valid",
"rules": [
{ "key": "pressure", "type": "number", "required": true, "min": 0, "max": 200 }
]
}
}

is_validでブランチするダウンストリームのRouterと組み合わせて、クリーンなペイロードと汚れたペイロードを異なるシンクに送信します。

  • 信頼できる/信頼できないデータの境界での厳格なスキーマにはdropを使用
  • 無効なペイロードを失うのではなく検査または隔離したい場合は、tag + Routerを使用
  • 偶発的な部分一致を避けるために、正規表現パターンをアンカー(^...$)に保つ
  • 物理的/運用的限界に基づいて厳しい数値範囲を設定 — これにより早期にセンサー障害を捕捉します
  • ダウンストリームコネクタが整形式のペイロードを想定できるように、Validationをパイプラインの開始近くに配置
  • Router - _validタグでブランチ
  • Transform - 検証前にフィールドを導出または名前変更
  • Filter - 不要なキーをドロップ