SQS、AWS Lambda与SES集成后无法发消息,CloudWatch无日志排查求助
CloudWatch日志未生成的可能原因及排查方向
Lambda执行角色缺少日志权限
这是最常见的原因。Lambda需要具备logs:CreateLogGroup、logs:CreateLogStream、logs:PutLogEvents这三个CloudWatch Logs相关权限,才能生成和写入日志。如果角色没有这些权限,哪怕Lambda执行了,也无法输出日志到CloudWatch。检查Lambda的执行角色策略,确认是否包含上述权限。Lambda未被触发执行
如果Lambda根本没运行,自然不会产生日志。排查方向包括:- 确认SQS与Lambda的触发器(事件源映射)是否已启用,状态是否为
Enabled; - 检查触发器配置的SQS队列URL是否正确,是否指向目标队列;
- 查看SQS队列是否有未被处理的消息,是否满足触发器的批量触发条件(比如批量大小设置为10,但队列里只有5条消息,可能不会触发);
- 确认触发器是否设置了消息过滤规则,导致符合条件的消息未触发Lambda。
- 确认SQS与Lambda的触发器(事件源映射)是否已启用,状态是否为
Lambda执行被节流或配额限制
如果Lambda的并发配额已用尽,或者受到账户级别的节流限制,请求会被拒绝,无法执行也就不会生成日志。查看Lambda控制台的监控指标(如Throttles),确认是否存在节流情况。CloudWatch日志区域与Lambda区域不匹配
Lambda的日志会生成在与Lambda相同的AWS区域,如果你在错误的区域查看CloudWatch日志,自然找不到。确认Lambda部署的区域,然后在对应区域的CloudWatch Logs中查找日志组。Lambda初始化阶段崩溃且无日志权限
如果Lambda在初始化(比如加载依赖、初始化资源)阶段就发生错误,且执行角色没有日志权限,错误信息无法写入CloudWatch,导致看不到任何日志。这种情况下优先检查角色的日志权限。
内容的提问来源于stack exchange,提问作者Mark P
相关产品推荐
相关产品推荐

