事件筛选器

事件有时候会携带一些不必要的附加数据,可能会给
规则引擎带来负担。事件筛选器允许我们去除这些附加数据,以便我们
专注于针对规则来说至关重要的数据。事件筛选器也可以更改数据的格式
,来让规则条件能够更好地匹配数据。
事件定义为 Python 代码,并作为数据集进行分发。默认
eda 数据集包含以下筛选器
事件筛选器

名称

描述

json_filter

包含和排除事件对象中的键

dashes_to_underscores

此筛选器会将有效负载中所有键中的破折号更改为下划线。

事件筛选器可以依次链接使用,且更新后的数据会
从一个筛选器发送到另一个筛选器。
事件筛选器在规则库中源定义之后进行定义。
当规则库启动源插件时,它会关联正确的筛选器
并在将数据放入队列之前对数据进行转换。

例如:

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:
在上面的示例中,数据首先会经过 json_filter,然后
再经过 dashes_to_underscores 筛选器。
事件有效负载中的键只能包含字母、数字和下划线。
句点 (.) 用于访问嵌套键。
由于每个事件都应记录事件的来源,所以我们有一个筛选器
eda.builtin.insert_meta_info,ansible-rulebook 会自动添加此筛选器
来添加源名称、类型和 received_at。
received_at 使用 UTC ISO8601 格式存储日期和时间,并包含
微秒数。
uuid 存储事件的唯一 ID。
事件有效负载将被修改为包含以下数据
meta 键用于存储有关事件的元数据,需要此键才能
在 aap 服务器中正确报告事件。