事件筛选器
事件有时候会携带一些不必要的附加数据,可能会给
规则引擎带来负担。事件筛选器允许我们去除这些附加数据,以便我们
专注于针对规则来说至关重要的数据。事件筛选器也可以更改数据的格式
,来让规则条件能够更好地匹配数据。
事件定义为 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 服务器中正确报告事件。