第 12 章 事件过滤器插件


事件有时具有不必要的额外数据,并可能会给规则引擎造成混乱。使用事件过滤器删除该额外数据,以便您可以专注于规则的相关内容。事件过滤器也可以更改数据的格式,以便规则条件可以更好地匹配数据。

事件定义为 python 代码,并以集合的形式分发。默认 eda 集合 有以下过滤器:

Expand
名称描述

json_filter

此过滤器包括和排除事件对象中的键

dashes_to_underscores

此过滤器将有效负载中的所有键中的短划线更改为下划线

ansible.eda.insert_hosts_to_meta

此过滤器用于将主机信息添加到事件中,以便 ansible-rulebook 可以找到并使用它来

ansible.eda.normalize_keys

如果要将非 alpha 数字键更改为下划线,则使用此过滤器

您可以在另一个过滤器后链接事件过滤器,并将更新的数据从一个过滤器发送到下一个过滤器。在定义了源后,事件过滤器在规则手册中定义。当规则手册启动源插件时,它会关联正确的过滤器并在将数据放入队列之前转换数据。

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 过滤器。在事件有效负载中,键只能包含字母、数字和下划线。句点(.)用于访问嵌套密钥。

由于每个事件都应记录过滤器 eda.builtin.insert_meta_info 的起源,它由 ansible-rulebook 自动添加,以添加源名称、键入、和 received_atreceive _at 以 UTC ISO8601 格式存储一个日期时间,并包括微秒。uuid 存储事件的唯一 id。meta 键 用于存储有关事件及其在 aap-server 中正确报告事件所需的元数据。

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

其他资源

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat