如何获取Lambda函数的调用事件以测试CloudWatch日志格式?
找回Lambda历史调用事件的可行方案
下面是几种能帮你找到5月那次Lambda调用事件的方法,按优先级尝试:
先扒CloudWatch日志本身
很多Lambda函数会把入参事件直接打印到日志里,你直接用CloudWatch Logs Insights定位那条5月的日志记录,搜event、request这类关键词,大概率能直接挖到原始事件。
给个参考查询语句:fields @timestamp, @message | filter @logStream = "你的目标日志流名称" | filter @message like /event|request/ | sort @timestamp desc查AWS调用追踪记录
- 如果当时开了X-Ray,直接去X-Ray控制台筛选5月对应时间段的Lambda调用轨迹,里面会完整记录请求事件的细节。
- 去CloudTrail控制台找事件名称为
Invoke、资源是你的Lambda函数、时间在5月的记录,部分情况下requestParameters字段里会存调用参数。
回溯上游触发源
如果你的Lambda是由其他AWS服务触发的(比如API Gateway、S3、SQS),直接去对应服务的日志里找:- API Gateway:查对应阶段的访问日志,定位5月那个时间点的请求,提取请求体和参数。
- S3:看S3的访问日志或事件通知记录,找到触发Lambda的对象操作事件。
- SQS:如果队列的消息保留期覆盖了5月,去查队列的消息历史,找到当时触发Lambda的消息内容。
实在找不到就模拟事件
如果以上方法都没结果,就根据现有日志里的错误码和描述反向构造事件。比如日志里报InvalidUserID,就编一个带错误格式UserID的事件,模拟调用Lambda来验证日志格式就行。
内容的提问来源于stack exchange,提问作者Jatin Mehrotra
相关产品推荐
相关产品推荐

