5.7. 高度なトリガーフィルター
高度なトリガーフィルターを使用すると、より正確なイベントルーティングのための高度なオプションが提供されます。イベントは、完全一致、接頭辞、接尾辞、および CloudEvent 拡張機能によってフィルタリングできます。制御を追加することで、イベントのフローを微調整しやすくなり、関連するイベントのみが特定のアクションをトリガーできるようになります。
高度なトリガーフィルター機能は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
5.7.1. 高度なトリガーフィルターの概要 リンクのコピーリンクがクリップボードにコピーされました!
高度なトリガーフィルター機能により、CloudEvents Subscriptions API で定義されたフィルター API フィールドと一致する新しい filters フィールドがトリガーに追加されます。フィルター式を指定できます。各式は各イベントに対して true または false として評価されます。
次の例は、高度なフィルターフィールドを使用するトリガーを示しています。
filters フィールドにはフィルター式の配列が含まれ、各評価は true または false になります。いずれかの式が false と評価された場合、イベントはサブスクライバーに送信されません。各フィルター式では、フィルターのタイプと式内で許可される追加プロパティーのセットを決定する特定の方言が使用されます。
5.7.2. サポートされているフィルター方言 リンクのコピーリンクがクリップボードにコピーされました!
方言を使用すると、特定のイベントを対象とする柔軟なフィルター式を定義できます。
高度なトリガーフィルターは、イベントを一致およびフィルター処理するさまざまな方法を提供する次の方言をサポートしています。
-
exact -
prefix -
suffix -
all -
any -
not -
cesql
各方言では、特定の基準に基づいてイベントをフィルタリングする方法が各種提供されており、処理するイベントを正確に選択できるようにします。
5.7.2.1. exact フィルター方言 リンクのコピーリンクがクリップボードにコピーされました!
exact 方言は、CloudEvent 属性の文字列値が指定された文字列と正確に一致するかどうかを比較してイベントをフィルタリングします。比較では大文字と小文字が区別されます。属性が文字列でない場合、フィルターは指定された値と比較する前に、属性を文字列表現に変換します。
exact フィルター方言の例
5.7.2.2. prefix フィルター方言 リンクのコピーリンクがクリップボードにコピーされました!
prefix 方言は、指定された文字列で始まる CloudEvent 属性の文字列値を比較してイベントをフィルタリングします。この比較は、大文字と小文字が区別されます。属性が文字列でない場合、フィルターは指定された値と照合する前に、属性を文字列表現に変換します。
prefix フィルター方言の例
5.7.2.3. suffix フィルター方言 リンクのコピーリンクがクリップボードにコピーされました!
suffix 方言は、指定された文字列で終わる CloudEvent 属性の文字列値を比較してイベントをフィルタリングします。この比較では、大文字と小文字が区別されます。属性が文字列でない場合、フィルターは指定された値と照合する前に、属性を文字列表現に変換します。
suffix フィルター方言の例
5.7.2.4. all フィルター方言 リンクのコピーリンクがクリップボードにコピーされました!
all フィルター方言では、イベントを処理するために、ネストされたすべてのフィルター式が true と評価される必要があります。ネストされた式のいずれかが false を返す場合、イベントはサブスクライバーに送信されません。
all のフィルター方言の例
5.7.2.5. any フィルター方言 リンクのコピーリンクがクリップボードにコピーされました!
any フィルター方言では、ネストされたフィルター式の少なくとも 1 つが true と評価される必要があります。ネストされた式がいずれも true を返さない場合、イベントはサブスクライバーに送信されません。
any フィルター方言の例
5.7.2.6. not フィルター方言 リンクのコピーリンクがクリップボードにコピーされました!
not フィルター方言では、イベントを処理するには、ネストされたフィルター式が false と評価される必要があります。ネストされた式が true と評価された場合、イベントはサブスクライバーに送信されません。
not フィルター方言の例
5.7.2.7. cesql フィルター方言 リンクのコピーリンクがクリップボードにコピーされました!
CloudEvents SQL 式 (cesql) を使用すると、構造化クエリー言語 (SQL) WHERE 句の構文に依存する複雑な式に対して CloudEvent 属性の値を計算し、一致させることができます。
cesql フィルター方言は、CloudEvents SQL 式を使用してイベントをフィルターします。提供される CESQL 式は、イベントを処理するには true と評価される必要があります。
cesql フィルター方言の例
cesql フィルター方言の構文および機能の詳細は、CloudEvents SQL Expression Language を参照してください。
5.7.3. 既存のフィルターフィールドとの競合 リンクのコピーリンクがクリップボードにコピーされました!
filters と既存の filter フィールドを同時に使用できます。新しい new-trigger-filters 機能を有効にし、オブジェクトに filter と filters の両方が含まれている場合は、filters フィールドが上書きされます。この設定により、既存のフィルターのサポートを維持しながら、新しい filters フィールドをテストできます。新しいフィールドを既存のトリガーオブジェクトに徐々に導入できます。
filters フィールドをオーバーライドする filter フィールドの例: