转换处理器
转换处理器通过添加、复制、移动或移除字段来修改日志事件的结构。
add_entries 处理器
向日志事件添加静态键值对。一个管道最多可以添加 1 个 add_entries 处理器。
配置
使用以下参数配置 add_entries 处理器:
processor: - add_entries: entries: - key: "environment" value: "production" overwrite_if_key_exists: false
参数
entries(必需)-
要添加到每个日志事件的键值对的数组。
entries[].key(必需)-
要添加到日志事件的字段名称。支持使用点表示法的嵌套字段。
entries[].value(必需)-
要分配给密钥的静态值。
entries[].overwrite_if_key_exists(可选)-
布尔值标志,用于确定密钥已经存在时的行为。默认值为 false。
when(可选)-
处理器级条件表达式。指定后,如果表达式的计算结果为 false,则会跳过整个处理器。最大长度为 256 个字符。请参阅条件处理的表达式语法。
entries[].when(可选)-
条目级条件表达式。指定后,如果表达式的计算结果为 false,则仅跳过此条目。最大长度为 256 个字符。请参阅条件处理的表达式语法。
entries[].when_else(可选)-
仅当同一处理器中的其他
when条件都不匹配时,才会执行的回退条目。表达式值确定要考虑的when条件。最大长度为 256 个字符。请参阅条件处理的表达式语法。
copy_values 处理器
将值从一个字段复制到另一个字段。一个管道最多可以添加 1 个 copy_values 处理器。
配置
使用以下参数配置 copy_values 处理器:
processor: - copy_values: entries: - from_key: "user_id" to_key: "backup_user" overwrite_if_to_key_exists: false
参数
entries(必需)-
要对每个日志事件执行的复制操作数组。
entries[].from_key(必需)-
要从中复制值的字段名称。对嵌套字段使用点表示法。
entries[].to_key(必需)-
要将值复制到的字段名称。如果使用点表示法,将创建嵌套结构。
entries[].overwrite_if_to_key_exists(可选)-
目标字段已经存在时,控制行为的布尔值标志。默认值为 false。
when(可选)-
处理器级条件表达式。指定后,如果表达式的计算结果为 false,则会跳过整个处理器。最大长度为 256 个字符。请参阅条件处理的表达式语法。
entries[].when(可选)-
条目级条件表达式。指定后,如果表达式的计算结果为 false,则仅跳过此条目。最大长度为 256 个字符。请参阅条件处理的表达式语法。
entries[].when_else(可选)-
仅当同一处理器中的其他
when条件都不匹配时,才会执行的回退条目。表达式值确定要考虑的when条件。最大长度为 256 个字符。请参阅条件处理的表达式语法。
delete_entries 处理器
从日志事件中移除指定字段。
配置
使用以下参数配置 delete_entris 处理器:
processor: - delete_entries: with_keys: ["temp_field", "debug_info"]
参数
with_keys(必需)-
要从每个日志事件中移除的字段名称数组。支持使用点表示法删除嵌套字段。
when(可选)-
用于确定此处理器是否执行的条件表达式。最大长度为 256 个字符。请参阅条件处理的表达式语法。
move_keys 处理器
将字段从一个位置移动到另一个位置。
配置
使用以下参数配置 move_keys 处理器:
processor: - move_keys: entries: - from_key: "old_field" to_key: "new_field" overwrite_if_to_key_exists: true
参数
entries(必需)-
移动操作数组。最多 5 个条目。
entries[].from_key(必需)-
来源字段名称。最多 128 个字符。
entries[].to_key(必需)-
目标字段名称。最多 128 个字符。
entries[].overwrite_if_to_key_exists(可选)-
是否覆盖现有的目标字段。
when(可选)-
处理器级条件表达式。指定后,如果表达式的计算结果为 false,则会跳过整个处理器。最大长度为 256 个字符。请参阅条件处理的表达式语法。
entries[].when(可选)-
条目级条件表达式。指定后,如果表达式的计算结果为 false,则仅跳过此条目。最大长度为 256 个字符。请参阅条件处理的表达式语法。
entries[].when_else(可选)-
仅当同一处理器中的其他
when条件都不匹配时,才会执行的回退条目。表达式值确定要考虑的when条件。最大长度为 256 个字符。请参阅条件处理的表达式语法。
flatten 处理器
展平嵌套对象结构。
配置
使用以下参数配置 flatten 处理器:
processor: - flatten: source: "metadata" target: "flattened" remove_processed_fields: true exclude_keys: ["sensitive_data"]
参数
source(必需)-
包含要展平的嵌套对象的字段。
target(必需)-
展平密钥的目标字段前缀。
remove_processed_fields(可选)-
展平后是否移除原始嵌套字段。
exclude_keys(可选)-
要从展平中排除的键数组。最多 20 个键,每个键最多可包含 128 个字符。
when(可选)-
用于确定此处理器是否执行的条件表达式。最大长度为 256 个字符。请参阅条件处理的表达式语法。
查找处理器
使用 CloudWatch Logs 查找表中的数据充实日志事件。处理器将您的日志事件中的字段与查找表中的字段进行匹配,并将指定的字段附加到您的日志事件中。此处理器用于数据充实场景,例如将用户 ID 映射到用户详细信息,将产品代码映射到产品信息,或者将错误代码映射到错误描述。一个管道最多可以添加 1 个 lookup 处理器。
注意
如果在管道中使用查找表,则必须为执行角色提供表中 logs:GetLookupTable 的权限。有关更多信息,请参阅 CloudWatch 管道 IAM 策略和权限。
配置
使用以下参数配置查找处理器:
processor: - lookup: lookup_table: "arn:aws:logs:us-east-1:123456789012:lookup-table:my_lookup_table" match_keys: - log_key: "src_ip" lookup_key: "ip_address" entries: - source: "hostname" target: "src_hostname" overwrite_if_exists: true
参数
lookup_table(必需)-
要用于充实功能的 CloudWatch Logs 查找表的 ARN。最大长度为 2048 个字符。
match_keys(必需)-
定义如何将日志事件字段与查找表字段匹配的密钥对数组。最少 1 个,最多 5 个匹配密钥。指定多个匹配键时,查找表行必须匹配所有键才能生成结果(AND 逻辑)。
match_keys[].log_key(必需)-
日志事件中要匹配的字段名。最多 128 个字符。
match_keys[].lookup_key(必需)-
查找表中要匹配的列名。最多 128 个字符。
entries(必需)-
要从匹配的查找表行添加到日志事件的字段数组。最少 1 个,最多 10 个条目。
entries[].source(必需)-
查找表中要从中检索值的列名。最多 128 个字符。
entries[].target(可选)-
要添加到日志事件的字段名称。如果未指定,则使用
source列名作为字段名。最多 128 个字符。 entries[].overwrite_if_exists(可选)-
布尔值标志,用于确定当日志事件中已经存在目标字段时的行为。默认值为 false。
when(可选)-
用于确定此处理器是否执行的条件表达式。最大长度为 256 个字符。请参阅条件处理的表达式语法。
示例
考虑一个名为 network_assets 的查找表,其中包含以下行:
| ip_address | hostname | owner | 地点 |
|---|---|---|---|
| 10.0.1.12 | web-server-01 | team-alpha | us-east-1 |
| 10.0.2.45 | db-server-03 | team-beta | us-west-2 |
| 10.0.3.78 | cache-node-07 | team-alpha | eu-west-1 |
给定以下日志事件:
{ "timestamp": "2026-05-04T12:00:00Z", "src_ip": "10.0.2.45", "action": "connection_opened", "bytes": 2048 }
以及下列处理器配置:
processor: - lookup: lookup_table: "arn:aws:logs:us-east-1:123456789012:lookup-table:network_assets" match_keys: - log_key: "src_ip" lookup_key: "ip_address" entries: - source: "hostname" target: "src_hostname" - source: "owner" - source: "location" target: "src_region" overwrite_if_exists: false
处理器生成以下充实日志事件:
{ "timestamp": "2026-05-04T12:00:00Z", "src_ip": "10.0.2.45", "action": "connection_opened", "bytes": 2048, "src_hostname": "db-server-03", "owner": "team-beta", "src_region": "us-west-2" }
IAM 权限
当管道使用查找处理器时,管道的执行角色必须包括所引用表中 logs:GetLookupTable 的权限。以下示例策略语句授予此权限:
{ "Effect": "Allow", "Action": "logs:GetLookupTable", "Resource": "arn:aws:logs:<region>:<account-id>:lookup-table:<table-name>" }
geoip 处理器
geoip 处理器基于 IP 地址通过地理位置数据丰富日志事件。处理器使用 MaxMind 数据库将 IP 地址解析为地理信息,例如城市、国家、大洲、坐标和自治系统编号(ASN)详细信息。针对网络流量分析、用户位置丰富和安全调查场景使用此处理器。
配置
使用以下参数配置 geoip 处理器:
processor: - geoip: entries: - source: "client_ip" target: "client_geo" include_fields: - "city_name" - "country_name" - "country_iso_code" - "continent_name" - "latitude" - "longitude" when: '.client_ip != "127.0.0.1"'
参数
entries(必需)-
定义要使用地理数据丰富哪些 IP 字段的条目对象数组。最少 1 个,最多 10 个条目。
entries[].source(必需)-
日志事件中包含要查找的 IP 地址的字段名称。必须引用有效的 IPv4 或 IPv6 地址。最多 128 个字符。
entries[].target(必需)-
处理器在日志事件中写入地理丰富数据的字段名称。最多 128 个字符。
entries[].include_fields(必需)-
要包括在丰富结果中的地理字段数组。最少 1 个,最多 12 个字段。以下字段可用:
continent_code:两个字母的大洲代码(例如“NA”)。continent_name:大洲的名称(例如“北美”)。country_name:国家或地区的名称(例如“美国”)。country_iso_code:ISO 3166-1 alpha-2 国家或地区(例如“US”)。city_name:城市名称(例如“西雅图”)。postal_code:与 IP 地址位置关联的邮政编码。time_zone:IANA 时区名称(例如“America/Los_Angeles”)。latitude:IP 地址位置的纬度坐标。longitude:IP 地址位置的经度坐标。network:与 IP 地址关联的网络的 CIDR 表示法。asn:与 IP 地址关联的自治系统编号。asn_organization:与自治系统编号关联的组织名称。
entries[].when(可选)-
决定此条目是否执行的条件表达式。最大长度为 256 个字符。请参阅条件处理的表达式语法。
when(可选)-
决定此处理器是否执行的顶级条件表达式。最大长度为 256 个字符。请参阅条件处理的表达式语法。
示例
以下示例展示了一个包含 IP 地址字段的示例日志事件:
{ "timestamp": "2026-05-04T12:00:00Z", "src_ip": "203.0.113.50", "dst_ip": "198.51.100.25", "action": "ALLOW", "bytes": 4096 }
以下处理器配置将源 IP 字段和目标 IP 字段映射到地理丰富目标:
processor: - geoip: entries: - source: "src_ip" target: "src_geo" include_fields: - "city_name" - "country_name" - "country_iso_code" - "latitude" - "longitude" - "asn" - "asn_organization" - source: "dst_ip" target: "dst_geo" include_fields: - "country_name" - "country_iso_code"
处理器生成以下充实日志事件:
{ "timestamp": "2026-05-04T12:00:00Z", "src_ip": "203.0.113.50", "dst_ip": "198.51.100.25", "action": "ALLOW", "bytes": 4096, "src_geo": { "city_name": "Seattle", "country_name": "United States", "country_iso_code": "US", "latitude": 47.6062, "longitude": -122.3321, "asn": 16509, "asn_organization": "Amazon.com, Inc." }, "dst_geo": { "country_name": "Germany", "country_iso_code": "DE" } }