View a markdown version of this page

转换处理器 - Amazon CloudWatch

转换处理器

转换处理器通过添加、复制、移动或移除字段来修改日志事件的结构。

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 的查找表,其中包含以下行:

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>" }