事件过滤器
事件有时会有不必要的额外数据,这可能会使规则引擎不堪重负。
事件过滤器允许我们删除这些额外的数据,以便我们可以
专注于对我们的规则重要的内容。事件过滤器还可以更改数据的格式
以便规则条件可以更好地匹配数据。
事件被定义为 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-server 中的事件。