AWS新手求助:Lambda执行日志无法在CloudTrail事件数据商店显示
Lambda执行记录到CloudTrail及可视化排查方案
核心问题
作为AWS新手,需将Lambda函数执行记录到CloudTrail并可视化查看执行时间,但事件数据存储(Event Data Store)无数据,Lake Dashboard未显示内容。
已完成操作回顾
- 创建数据事件Trail,指定Lambda函数,S3已生成
*.json.gz日志文件 - 创建事件数据存储(EDS)并配置Trail事件复制,但EDS无数据
排查与解决步骤
一、确认Trail是否正确捕获Lambda执行事件
S3有日志不代表捕获了Invoke事件(Lambda执行对应的CloudTrail事件是lambda:InvokeFunction):
- 下载并解压S3中的日志文件,检查
eventName字段是否为InvokeFunction - 核对Trail的数据事件配置:
- 资源类型选择
AWS Lambda,资源ARN需精确到目标函数(如arn:aws:lambda:us-east-1:123456789012:function:MyFunction) - 事件类型勾选
写(Invoke属于写操作) - 确认Trail处于启用状态,事件选择器未排除该Lambda
- 资源类型选择
二、修复事件数据存储(EDS)无数据问题
- EDS仅同步配置生效后的新事件:之前生成的历史日志不会自动导入EDS,需重新运行Lambda触发新的
Invoke事件,等待5-15分钟同步延迟后再查看 - 检查Trail到EDS的复制配置:
- 进入CloudTrail Lake → 目标EDS → 查看「复制源」,确认关联的是你创建的Trail
- 确认复制状态为「启用」,无报错信息
- 核对时间范围与保留期:
- 检查EDS的事件保留设置,确保当前时间在保留期内
- 查询时调整时间范围(注意控制台默认UTC时区,需匹配Lambda执行的实际时间)
三、可视化查看执行时间的替代方案
如果EDS Dashboard仍无数据,可使用更直接的方式:
- CloudWatch Logs Insights:Lambda默认将执行日志写入CloudWatch Logs,用以下查询语句提取执行时间:
该语句会筛选出每次执行的持续时间,按时间倒序展示fields @timestamp, @message, @requestId | filter @message like /REPORT/ | parse @message /Duration: (?<duration>\d+\.\d+) ms/ | sort @timestamp desc | limit 20 - CloudWatch Dashboard:基于Lambda的
Duration指标创建可视化图表,实时查看执行时间趋势
内容的提问来源于stack exchange,提问作者Jplus2
相关产品推荐
相关产品推荐

