如何在AWS CloudWatch中用正则解析请求URI并统计端点调用次数?
问题排查与解决方案
原查询失败原因
- 正则语法格式错误:CloudWatch Insights的
parse命令使用正则表达式时,必须将正则包裹在斜杠/之间,原查询用双引号包裹正则,导致引擎无法识别正则规则,返回null。 - 匹配规则局限性:原正则仅匹配小写字母组成的路径段,若实际路径包含大写字母、数字等字符,也会匹配失败。
正确查询语句
方案1:通用去除查询参数(适用于所有路径格式)
该方案匹配request_uri中第一个?之前的所有内容,无论路径结构如何,都能准确提取无查询参数的端点:
fields request_uri | parse request_uri /^([^?]+)/ as uri | stats count(*) as count by uri
方案2:限定/v1开头的路径(匹配示例中的路径格式)
如果只需要处理以/v1开头的接口,可使用更精准的正则:
fields request_uri | parse request_uri /^(\/v1\/[^\/]+\/[^?]+)/ as uri | stats count(*) as count by uri
说明
[^?]+:匹配任意非?的字符,确保截取到查询参数前的完整路径。[^\/]+:匹配任意非/的字符,用于精准匹配路径中的分类和产品段。- 若日志中存在无查询参数的请求(即
request_uri不含?),上述正则仍能正确匹配完整路径,不会出现异常。
内容的提问来源于stack exchange,提问作者muazfaiz
相关产品推荐
相关产品推荐

