如何查询AWS Lambda SQS触发器被禁用的操作记录及原因
查询Lambda SQS触发器禁用操作的日志方案
核心日志来源:AWS CloudTrail
所有对Lambda触发器的修改操作(包括启用、禁用)都会被CloudTrail全量记录,你可以直接通过CloudTrail控制台或者API查询对应操作记录。
- 第一步:打开CloudTrail控制台,进入「事件历史」页面
- 第二步:筛选属性选择「事件名称」,输入
UpdateEventSourceMapping,这是修改Lambda事件源映射(包括SQS触发器状态)对应的API操作名 - 第三步:调整时间范围到你发现触发器被禁用的前7天内(CloudTrail默认存储90天事件记录,如果你开了长期归档可以扩展到更长时间)
- 第四步:在返回的事件列表中,找到
state字段被修改为DISABLED的对应记录
你可以从该条记录中直接获取以下信息: - 执行操作的主体ARN(包括IAM用户、角色、服务角色的具体身份ID)
- 操作发生的精确时间戳
- 操作发起的源IP地址
- 触发禁用的具体原因(如果是操作时附带了原因参数会被记录,若是AWS服务自动禁用的话会在
errorMessage或者responseElements字段标注具体触发条件,比如SQS队列被删除、Lambda函数连续报错达到阈值导致服务自动禁用触发器等)
特殊情况说明
如果在CloudTrail中没有找到对应UpdateEventSourceMapping的人工操作记录,大概率是AWS服务端自动触发的禁用,触发的常见场景包括:
- 关联的SQS队列被修改了策略,导致Lambda没有权限消费队列消息
- Lambda函数连续返回错误超过阈值,且死信队列配置异常无法承接失败消息,AWS自动禁用触发器避免消息无限堆积
- 你的AWS账号出现过欠费、权限回收等账号级别的状态变动,导致关联资源被自动冻结
你可以同步查询对应时间段内Lambda函数的执行日志和SQS队列的CloudWatch指标,交叉验证是否存在上述异常情况。
内容的提问来源于stack exchange,提问作者Aniruddha Bera
相关产品推荐
相关产品推荐

