5.7. 高度なトリガーフィルター


高度なトリガーフィルターを使用すると、より正確なイベントルーティングのための高度なオプションが提供されます。イベントは、完全一致、接頭辞、接尾辞、および CloudEvent 拡張機能によってフィルタリングできます。制御を追加することで、イベントのフローを微調整しやすくなり、関連するイベントのみが特定のアクションをトリガーできるようになります。

重要

高度なトリガーフィルター機能は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

5.7.1. 高度なトリガーフィルターの概要

高度なトリガーフィルター機能により、CloudEvents Subscriptions API で定義されたフィルター API フィールドと一致する新しい filters フィールドがトリガーに追加されます。フィルター式を指定できます。各式は各イベントに対して true または false として評価されます。

次の例は、高度なフィルターフィールドを使用するトリガーを示しています。

apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
  name: my-service-trigger
spec:
  broker: default
  filters:
    - cesql: "source LIKE '%commerce%' AND type IN ('order.created', 'order.updated', 'order.canceled')"
  subscriber:
    ref:
      apiVersion: serving.knative.dev/v1
      kind: Service
      name: my-service

filters フィールドにはフィルター式の配列が含まれ、各評価は true または false になります。いずれかの式が false と評価された場合、イベントはサブスクライバーに送信されません。各フィルター式では、フィルターのタイプと式内で許可される追加プロパティーのセットを決定する特定の方言が使用されます。

5.7.2. サポートされているフィルター方言

方言を使用すると、特定のイベントを対象とする柔軟なフィルター式を定義できます。

高度なトリガーフィルターは、イベントを一致およびフィルター処理するさまざまな方法を提供する次の方言をサポートしています。

  • exact
  • prefix
  • suffix
  • all
  • any
  • not
  • cesql

各方言では、特定の基準に基づいてイベントをフィルタリングする方法が各種提供されており、処理するイベントを正確に選択できるようにします。

5.7.2.1. exact フィルター方言

exact 方言は、CloudEvent 属性の文字列値が指定された文字列と正確に一致するかどうかを比較してイベントをフィルタリングします。比較では大文字と小文字が区別されます。属性が文字列でない場合、フィルターは指定された値と比較する前に、属性を文字列表現に変換します。

exact フィルター方言の例

apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
  ...
spec:
  ...
  filters:
    - exact:
        type: com.github.push

5.7.2.2. prefix フィルター方言

prefix 方言は、指定された文字列で始まる CloudEvent 属性の文字列値を比較してイベントをフィルタリングします。この比較は、大文字と小文字が区別されます。属性が文字列でない場合、フィルターは指定された値と照合する前に、属性を文字列表現に変換します。

prefix フィルター方言の例

apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
  ...
spec:
  ...
  filters:
    - prefix:
        type: com.github.

5.7.2.3. suffix フィルター方言

suffix 方言は、指定された文字列で終わる CloudEvent 属性の文字列値を比較してイベントをフィルタリングします。この比較では、大文字と小文字が区別されます。属性が文字列でない場合、フィルターは指定された値と照合する前に、属性を文字列表現に変換します。

suffix フィルター方言の例

apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
  ...
spec:
  ...
  filters:
    - suffix:
        type: .created

5.7.2.4. all フィルター方言

all フィルター方言では、イベントを処理するために、ネストされたすべてのフィルター式が true と評価される必要があります。ネストされた式のいずれかが false を返す場合、イベントはサブスクライバーに送信されません。

all のフィルター方言の例

apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
  ...
spec:
  ...
  filters:
    - all:
        - exact:
            type: com.github.push
        - exact:
            subject: https://github.com/cloudevents/spec

5.7.2.5. any フィルター方言

any フィルター方言では、ネストされたフィルター式の少なくとも 1 つが true と評価される必要があります。ネストされた式がいずれも true を返さない場合、イベントはサブスクライバーに送信されません。

any フィルター方言の例

apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
  ...
spec:
  ...
  filters:
    - any:
        - exact:
            type: com.github.push
        - exact:
            subject: https://github.com/cloudevents/spec

5.7.2.6. not フィルター方言

not フィルター方言では、イベントを処理するには、ネストされたフィルター式が false と評価される必要があります。ネストされた式が true と評価された場合、イベントはサブスクライバーに送信されません。

not フィルター方言の例

apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
  ...
spec:
  ...
  filters:
    - not:
        exact:
          type: com.github.push

5.7.2.7. cesql フィルター方言

CloudEvents SQL 式 (cesql) を使用すると、構造化クエリー言語 (SQL) WHERE 句の構文に依存する複雑な式に対して CloudEvent 属性の値を計算し、一致させることができます。

cesql フィルター方言は、CloudEvents SQL 式を使用してイベントをフィルターします。提供される CESQL 式は、イベントを処理するには true と評価される必要があります。

cesql フィルター方言の例

apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
  ...
spec:
  ...
  filters:
    - cesql: "source LIKE '%commerce%' AND type IN ('order.created', 'order.updated', 'order.canceled')"

cesql フィルター方言の構文および機能の詳細は、CloudEvents SQL Expression Language を参照してください。

5.7.3. 既存のフィルターフィールドとの競合

filters と既存の filter フィールドを同時に使用できます。新しい new-trigger-filters 機能を有効にし、オブジェクトに filterfilters の両方が含まれている場合は、filters フィールドが上書きされます。この設定により、既存のフィルターのサポートを維持しながら、新しい filters フィールドをテストできます。新しいフィールドを既存のトリガーオブジェクトに徐々に導入できます。

filters フィールドをオーバーライドする filter フィールドの例:

apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
  name: my-service-trigger
spec:
  broker: default
  # Existing filter field. This will be ignored when the new filters field is present.
  filter:
    attributes:
      type: dev.knative.foo.bar
      myextension: my-extension-value
  # New filters field. This takes precedence over the old filter field.
  filters:
    - cesql: "type = 'dev.knative.foo.bar' AND myextension = 'my-extension-value'"
  subscriber:
    ref:
      apiVersion: serving.knative.dev/v1
      kind: Service
      name: my-service

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.