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 } ] }}設定パラメータ
Section titled “設定パラメータ”- rules(必須、最小1):フィールドごとのルールのリスト
- onInvalid(必須):少なくとも1つのルールが失敗した場合の動作 —
drop、forward、またはtag - invalidTag:
tagモードでペイロードに書き込まれるキー(デフォルト_valid)
ルールフィールド
Section titled “ルールフィールド”- key(必須):チェックするペイロードフィールド名
- type(必須):
string、number、またはboolean - required:
trueの場合、フィールドが存在しないとルールが失敗。falseの場合、フィールドが存在しないとルールがスキップされます。 - min、max: 包括的な数値範囲(
type: numberでのみ有効) - pattern: 正規表現(
type: stringでのみ有効)
- number —
float64に強制変換可能な任意の数値(int、floatなど)を受け入れます。型不一致はエラーとして報告されます。 - string — Goの
stringを受け入れます。patternが設定されている場合、値は一致する必要があります。 - boolean — Goの
boolを受け入れます。
範囲とパターン
Section titled “範囲とパターン”min / maxは包括的です。正確に-40のtemperatureはmin: -40にパスします。正規表現パターンは起動時にGoのRE2構文で一度コンパイルされます。無効なパターンはコネクタの起動を妨げます。
On Invalidポリシー
Section titled “On Invalidポリシー”Dropモード
Section titled “Dropモード”{ "onInvalid": "drop" }失敗したペイロードは静かに破棄されます(エラーはエラーチャネルに表示されます)。有効なペイロードのみが転送されます。
Forwardモード
Section titled “Forwardモード”{ "onInvalid": "forward" }妥当性に関係なく、すべてのペイロードが転送されます。監視のみに使用します。
Tagモード
Section titled “Tagモード”{ "onInvalid": "tag", "invalidTag": "is_valid"}無効なペイロードは、タグキーがfalseに設定された状態で転送されます。有効なペイロードは変更されずに通過します。invalidTagが省略された場合、キーはデフォルトで_validになります。
ユースケース
Section titled “ユースケース”- ストレージに到達する前に不正なセンサー読み取りを拒否
- 正規表現パターンによるID規約の強制(例:資産タグ)
- 既知の動作エンベロープを持つ物理センサーの範囲ゲーティング
- ダウンストリームのRouterベースの処理のための
tagモードによるソフト検証
例: 厳格なドロップ
Section titled “例: 厳格なドロップ”{ "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]の範囲外であるペイロードはドロップされます。
例: タグとルート
Section titled “例: タグとルート”{ "type": "MeddleValidation", "config": { "onInvalid": "tag", "invalidTag": "is_valid", "rules": [ { "key": "pressure", "type": "number", "required": true, "min": 0, "max": 200 } ] }}is_validでブランチするダウンストリームのRouterと組み合わせて、クリーンなペイロードと汚れたペイロードを異なるシンクに送信します。
ベストプラクティス
Section titled “ベストプラクティス”- 信頼できる/信頼できないデータの境界での厳格なスキーマには
dropを使用 - 無効なペイロードを失うのではなく検査または隔離したい場合は、
tag+ Routerを使用 - 偶発的な部分一致を避けるために、正規表現パターンをアンカー(
^...$)に保つ - 物理的/運用的限界に基づいて厳しい数値範囲を設定 — これにより早期にセンサー障害を捕捉します
- ダウンストリームコネクタが整形式のペイロードを想定できるように、Validationをパイプラインの開始近くに配置