12장. 이벤트 필터 플러그인
이벤트에는 불필요한 추가 데이터가 있고 규칙 엔진을 덮어쓸 수 있는 경우가 있습니다. 규칙에 중요한 사항에 집중할 수 있도록 이벤트 필터를 사용하여 추가 데이터를 제거합니다. 이벤트 필터에서는 규칙 조건이 데이터와 더 적합할 수 있도록 데이터의 형식을 변경할 수도 있습니다.
이벤트는 Python 코드로 정의되고 컬렉션으로 배포됩니다. 기본 eda 컬렉션에 는 다음과 같은 필터가 있습니다.
| 이름 | 설명 |
|---|---|
| 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:
이 예에서 데이터는 먼저 json_filter 를 통과한 다음 dashes_to_underscores 필터를 통해 전달됩니다. 이벤트 페이로드에서 키는 문자, 숫자, 밑줄만 포함할 수 있습니다. 마침표(.)는 중첩된 키에 액세스하는 데 사용됩니다.
모든 이벤트는 이벤트의 출처를 기록해야 하므로 eda.builtin.insert_meta_info 는 소스 이름,유형, received_at 을 추가하기 위해 ansible-rulebook에 의해 자동으로 추가됩니다. received_at 는 UTC ISO8601 형식으로 날짜 시간을 저장하고 microseconds를 포함합니다. uuid 는 이벤트의 고유 ID를 저장합니다. 메타 키는 이벤트 및 이벤트에 대한 메타데이터를 저장하는 데 사용됩니다. 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
이 필터를 이벤트 소스의 필터 목록에 추가하여 룰북에서 사용할 수 있습니다.
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
추가 리소스