第12章 イベントフィルタープラグイン


イベントには、ルールエンジンに過度の負荷をかける余分なデータが含まれている場合があります。イベントフィルターを使用して余分なデータを削除することで、ルールにとって重要なものに絞り込むことができます。イベントフィルターは、ルール条件とデータの照合をより適切に行うために、データの形式を変更することもあります。

イベントは Python コードとして定義され、コレクションとして提供されます。デフォルトの eda コレクション には次のフィルターがあります。

Expand
名前説明

json_filter

このフィルターは、イベントオブジェクトからキーを追加または除外します。

dashes_to_underscores

このフィルターは、ペイロード内のすべてのキーのダッシュをアンダースコアに変更します。

ansible.eda.insert_hosts_to_meta

このフィルターは、ansible-rulebook がイベントを検出して使用できるように、イベントにホスト情報を追加するために使用されます。

ansible.eda.normalize_keys

このフィルターは、英数字以外のキーをアンダースコアに変更する場合に使用します。

イベントフィルターは次々と連結することができます。その場合、更新されたデータが、フィルターから次のフィルターに送信されます。イベントフィルターは、ソースを定義した後にルールブックで定義します。ルールブックがソースプラグインを起動すると、正しいフィルターが関連付けられ、データがキューに追加される前に変換されます。

sources:
  - name: azure_service_bus
    ansible.eda.azure_service_bus:
      conn_str: "{{connection_str}}"
      queue_name: "{{queue_name}}"
    filters:
      - json_filter:
          include_keys: ['clone_url']
          exclude_keys: ['*_url', '_links', 'base', 'sender', 'owner', 'user']
      - dashes_to_underscores:
Copy to Clipboard Toggle word wrap

この例では、データがまず json_filter を通過し、次に dashes_to_underscores フィルターを通過します。イベントペイロードでは、キーに文字、数字、アンダースコアのみを含めることができます。ネストされたキーにアクセスするには、ピリオド (.) を使用します。

すべてのイベントはイベントの発生元を記録する必要があるため、source nametype、および received_at を追加するために、フィルター eda.builtin.insert_meta_info が ansible-rulebook によって自動的に追加されます。received_at には、日付時刻が UTC ISO8601 形式で格納され、マイクロ秒が含まれます。uuid には、イベントの一意の ID が格納されます。meta key は、イベントに関するメタデータを格納するために使用されます。これは、aap サーバー内のイベントを正確に報告するために必要です。

12.1. イベントフィルターの作成

イベントフィルターは、イベントデータに対して変換を実行する Python モジュール内の関数です。イベントフィルターを使用すると、イベントデータ構造内の任意のデータを削除、追加、変更、または移動できます。イベントフィルターは、イベントを最初の引数として受け取ります。ルールブックの設定によって、追加のキーワード引数が提供されます。

基本的な構造は次のとおりです。

   # my_namespace.my_collection/extensions/eda/plugins/event_filter/my_filter.py
    def main(event: dict, arg1, arg2):
        # Process event data here
        return event
Copy to Clipboard Toggle word wrap

このフィルターをルールブックで使用するには、イベントソースのフィルターリストに追加します。

  sources:
    - name: azure_service_bus
      ansible.eda.azure_service_bus:
        conn_str: "{{connection_str}}"
        queue_name: "{{queue_name}}"
      filters:
        - my_namespace.my_collection.my_filter:
            arg1: hello
            arg2: world
Copy to Clipboard Toggle word wrap

関連情報

作成方法の詳細な例は、ansible.eda コレクション のイベントフィルタープラグインを参照してください。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat