我的 AWS Lambda 函数遇到了间歇性错误,我想使用 Amazon CloudWatch Logs 确定我的函数是否超时。
解决方法
当 Lambda 函数调用超时,在失败调用的 CloudWatch 日志中会显示 Task timed out错误消息,而不是 Error 消息。当您查看 Lambda 函数的 CloudWatch 日志组时,搜索 "Task timed out"。如果您仅在日志中搜索 Error 消息,则搜索仅返回与代码相关的运行时错误,不返回调用超时错误。有关详细信息,请参阅使用 Amazon CloudWatch 监控 AWS Lambda 错误。
使用关联的超时调用的请求 ID 检索每个调用超时的完整日志。
在开始之前,请确保您的 Lambda 函数具有将日志上传到 CloudWatch Logs 所需的 AWS Identity and Access Management (IAM) 权限。
获取超时调用的请求 ID
完成以下步骤:
- 打开 Lambda 控制台。
- 在导航窗格中,选择 Functions(函数)。
- 选择您的 Lambda 函数,然后选择 Monitor(监控)选项卡。
- 选择 View CloudWatch logs(查看 CloudWatch 日志),在 CloudWatch 控制台上打开该函数的 Log group details(日志组详细信息)页面。
- 选择 View in Logs Insights(在 Logs Insights 中查看)。
- 在 Logs Insights 查询文本框中,输入以下查询,然后选择 Run query(运行查询):
fields @timestamp, @requestId, @message, @logStream| filter @message like "Task timed out"
| sort @timestamp desc
| limit 100
响应会在超时调用的 Task timed out(任务超时)输出中返回请求 ID 列表。
有关详细信息,请参阅使用 CloudWatch Logs Insights 分析日志数据。
**注意:**对于大型日志组,请在 Logs Insights 查询中添加 datetime 函数以限制搜索范围。有关详细信息,请参阅 CloudWatch Logs Insights 语言查询语法。
运行 CloudWatch Logs Insights 查询以获取请求 ID
**注意:**CloudWatch Logs Insights 查询会根据您查询的数据量产生费用。有关详细信息,请参阅 Amazon CloudWatch 定价。
然后,使用超时调用的请求 ID 检索每个调用超时的完整日志。您可以创建查询,在所有日志中搜索特定请求 ID。有关详细信息,请参阅解析日志和结构化日志记录。
要对您发现的任何超时错误进行故障排除,请参阅如何对 Lambda 函数调用超时错误进行故障排除?