AWS CloudWatch Logs触发Lambda的OR逻辑日志筛选规则配置问题
CloudWatch Logs 过滤模式实操方案
错误原因定位
- 原规则
?ERROR ?Task timed out after失效的核心问题:- 多词短语未锁定:未给
Task timed out after加双引号,导致CloudWatch将其拆分为Task/timed/out/after四个独立条件 - 强制条件误判:不带
?前缀的词为强制必选条件,拆分后规则要求日志必须同时包含timed/out/after(AND逻辑),完全偏离需求
- 多词短语未锁定:未给
正确过滤规则(两种适配方案)
方案1:结构化JSON日志适配(匹配带message字段的日志格式)
使用精准字段过滤语法,规则为:{ ($.message ~ "Task timed out after") || ($.message ~ "ERROR") }
- 语法拆解:
{ ... }:标记为结构化JSON日志过滤块$.message:指向日志事件内的message字段~:表示「包含指定字符串」的模糊匹配||:逻辑OR,满足任意一个条件即触发- 括号:分组OR条件,规避优先级歧义
方案2:纯文本日志适配(兼容无结构化日志)
使用短语锁定+可选匹配规则,规则为:?"Task timed out after" ?"ERROR"
- 语法拆解:
- 双引号
"Task timed out after":强制锁定连续多词短语,禁止拆分 ?前缀:标记为可选匹配条件(出现即符合,无需强制共存)- 空格分隔的双可选条件:自动按OR逻辑匹配(任意一个出现即触发)
- 双引号
匹配效果验证
- 超时类日志:包含连续短语
Task timed out after,触发规则 - 报错类日志:包含关键词
ERROR,触发规则 - 普通日志:无上述任意内容,不触发
内容的提问来源于stack exchange,提问作者firestreak
相关产品推荐
相关产品推荐

