字符串变异处理器 - Amazon CloudWatch 日志

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

字符串变异处理器

本节包含有关可与日志事件转换器配合使用的字符串变异处理器的信息。

lowerCaseString

lowerCaseString 处理器会将字符串转换为其小写版本。

字段 描述 必填? 默认 限制

withKeys

要转换为小写的键列表

最多条目数:10

示例

以以下日志事件为例:

{ "outer_key": { "inner_key": "INNER_VALUE" } }

转换器配置如下,将 lowerCaseStringparseJSON 结合使用:

[ { "parseJSON": {} }, { "lowerCaseString": { "withKeys":["outer_key.inner_key"] } } ]

转换后的日志事件将如下所示。

{ "outer_key": { "inner_key": "inner_value" } }

upperCaseString

upperCaseString 处理器会将字符串转换为其大写版本。

字段 描述 必填? 默认 限制

withKeys

要转换为大写的键列表

最多条目数:10

示例

以以下日志事件为例:

{ "outer_key": { "inner_key": "inner_value" } }

转换器配置如下,将 upperCaseStringparseJSON 结合使用:

[ { "parseJSON": {} }, { "upperCaseString": { "withKeys":["outer_key.inner_key"] } } ]

转换后的日志事件将如下所示。

{ "outer_key": { "inner_key": "INNER_VALUE" } }

splitString

splitString 处理器是一种字符串变异处理器,它使用分隔字符将字段拆分为数组。

字段 描述 必填? 默认 限制

entries

条目数组。数组中的每个项目都必须包含 sourcedelimiter 字段。

最多条目数:10

要拆分的字段值的键

最大长度:128

分隔符

用于拆分字段值的分隔符字符串

最大长度:128

示例 1

以以下日志事件为例:

[ { "parseJSON": {} }, { "splitString": { "entries": [ { "source": "outer_key.inner_key", "delimiter": "_" } ] } } ]

转换器配置如下,将 splitStringparseJSON 结合使用:

[ { "parseJSON": {} }, { "splitString": { "entries": [ { "source": "outer_key.inner_key", "delimiter": "_" } ] } } ]

转换后的日志事件将如下所示。

{ "outer_key": { "inner_key": [ "inner", "value" ] } }

示例 2

用于拆分字符串的分隔符可以包含多个字符。

以以下日志事件为例:

{ "outer_key": { "inner_key": "item1, item2, item3" } }

转换器配置如下:

[ { "parseJSON": {} }, { "splitString": { "entries": [ { "source": "outer_key.inner_key", "delimiter": ", " } ] } } ]

转换后的日志事件将如下所示。

{ "outer_key": { "inner_key": [ "item1", "item2", "item3" ] } }

substituteString

substituteString 处理器是一种字符串变异处理器,它将键的值与正则表达式进行匹配,并将所有匹配项替换为替换字符串。

字段 描述 必填? 默认 限制

entries

条目数组。数组中的每个项目都必须包含 sourcefromto 字段。

最多条目数:10

要修改的字段的键

最大长度:128

最大嵌套键深度:3

from

要替换的正则表达式字符串。特殊正则表达式字符(例如 [ 和 ])在使用双引号时必须使用 \\ 进行转义,在使用单引号时或通过 AWS 管理控制台配置时必须使用 \ 进行转义。有关更多信息,请参阅 Oracle 网站上的 Class Pattern

您可以将模式封装在 (...) 中以创建带编号的捕获组,并创建可在 to 字段中引用的 (?P<group_name>...) 命名捕获组。

最大长度:128

修改为

对于捕获组的 from 反向引用的每个匹配项,可以使用要替换的字符串。对编号组使用 $n 形式(如 $1),对命名组使用 ${group_name}(如 ${my_group})。

最大长度:128

反向引用最大数量:10

重复反向引用最大数量:2

示例 1

以以下日志事件为例:

{ "outer_key": { "inner_key1": "[]", "inner_key2": "123-345-567", "inner_key3": "A cat takes a catnap." } }

转换器配置如下,将 substituteStringparseJSON 结合使用:

[ { "parseJSON": {} }, { "substituteString": { "entries": [ { "source": "outer_key.inner_key1", "from": "\\[\\]", "to": "value1" }, { "source": "outer_key.inner_key2", "from": "[0-9]{3}-[0-9]{3}-[0-9]{3}", "to": "xxx-xxx-xxx" }, { "source": "outer_key.inner_key3", "from": "cat", "to": "dog" } ] } } ]

转换后的日志事件将如下所示。

{ "outer_key": { "inner_key1": "value1", "inner_key2": "xxx-xxx-xxx", "inner_key3": "A dog takes a dognap." } }

示例 2

以以下日志事件为例:

{ "outer_key": { "inner_key1": "Tom, Dick, and Harry", "inner_key2": "arn:aws:sts::123456789012:assumed-role/MyImportantRole/MySession" } }

转换器配置如下,将 substituteStringparseJSON 结合使用:

[ { "parseJSON": {} }, { "substituteString": { "entries": [ { "source": "outer_key.inner_key1", "from": "(\w+), (\w+), and (\w+)", "to": "$1 and $3" }, { "source": "outer_key.inner_key2", "from": "^arn:aws:sts::(?P<account_id>\\d{12}):assumed-role/(?P<role_name>[\\w+=,.@-]+)/(?P<role_session_name>[\\w+=,.@-]+)$", "to": "${account_id}:${role_name}:${role_session_name}" } ] } } ]

转换后的日志事件将如下所示。

{ "outer_key": { "inner_key1": "Tom and Harry", "inner_key2": "123456789012:MyImportantRole:MySession" } }

trimString

trimString 处理器会移除键开头和结尾的空格。

字段 描述 必填? 默认 限制

withKeys

要剪裁的键列表

最多条目数:10

示例

以以下日志事件为例:

{ "outer_key": { "inner_key": " inner_value " } }

转换器配置如下,将 trimStringparseJSON 结合使用:

[ { "parseJSON": {} }, { "trimString": { "withKeys":["outer_key.inner_key"] } } ]

转换后的日志事件将如下所示。

{ "outer_key": { "inner_key": "inner_value" } }