AWS Cloudwatch Log Insights - 替换字符串函数

AWS Cloudwatch Log Insights - replace string function

如何使用 AWS Cloudwatch Log Insights 的 replace 函数?

docs不给出工作实例

给定的日志包含 /api/lumberjack/123/axe/456/fashion

等路径

我正在尝试:

fields message
| parse message "path=* " as path
| fields replace(path, /[0123456789]+/, 'ID') as uniqpath
| stats count(*) by uniqpath

我希望得到如下结果:

uniqpath | count
/api/lumberjack/ID/axe/ID/fashion | 12
/api/lumberjack/ID/beardedness | 44

但它却抱怨“无效参数,收到:(路径)但预期:(str:string,searchValue:string,replaceValue:string)”

该错误消息是不言自明的。 replace 函数需要第一个参数的字符串类型的输入。您提供的字段名称 path 不可接受。

编辑: 令我惊讶的是,replace 函数接受路径作为第一个参数,这在文档中没有提到。请参阅上面奥马尔的回答。

replace 函数接受字段作为第一个参数的输入。

不支持的是第二个参数。您传递的正则表达式未被识别为字符串。

我还没有找到将正则表达式转换为字符串的方法。但至少你可以为第一个参数传递字段名 path 。我已经测试过它改变普通字符串的正则表达式。

查询:

fields @message
| parse @message "path=*" as path
| fields replace(path, 'lumberjack', 'ID') as uniqpath
| stats count(*) by uniqpath

结果: