如何确定我的 Lambda 函数是否超时?

1 分钟阅读
0

我的 AWS Lambda 函数遇到间歇性错误,并且在查看函数的 Amazon CloudWatch 指标后,不清楚原因。Lambda 函数的错误率升高是不是超时问题导致的? 如果是,如何确定我的 Lambda 函数是否超时?

简短描述

查看 Lambda 函数的 CloudWatch 日志组时,请搜索短语 Task timed out(任务超时)。然后,使用关联超时调用的请求 ID,以接收每个调用超时的完整日志。

要排查您确定的任何超时错误,请参阅如何排查 Lambda 函数调用超时错误?

**注意:**当 Lambda 函数调用超时时,失败调用的 CloudWatch 日志中将会显示一条 Task timed out(任务超时)错误消息,而不是 Error(错误)消息。如果您仅在函数的 CloudWatch 日志中搜索 Error(错误)消息,则搜索结果只会返回与代码相关的运行时错误,而不是调用超时错误。有关更多信息,请参阅使用 Amazon CloudWatch 监控 AWS Lambda 错误

解决方法

先决条件

如果您尚未向 Lambda 函数授予 CloudWatch 日志记录权限,则执行此操作。有关更多信息,请参阅适用于 Lambda 功能的 AWS 托管策略

通过搜索函数的 CloudWatch 日志组中是否存在短语“Task timed out”(任务超时)来检索任何超时调用的请求 ID

**注意:**CloudWatch Logs Insights 查询将会根据查询的数据量产生费用。有关更多信息,请参阅 Amazon CloudWatch 定价

1.    打开 Lambda 控制台的函数页面

2.    选择一个函数。

3.    选择 Monitor(监控)。

4.    选择 View logs in CloudWatch(在 CloudWatch 中查看日志)。CloudWatch 控制台中将会打开函数的日志组详细信息

5.    选择 View in Logs Insights(在 Logs Insights 中查看)。

6.    在 Logs Insights 查询文本框中,输入以下查询,然后选择 Run query(运行查询):

fields @timestamp, @requestId, @message, @logStream
| filter @message like "Task timed out"
| sort @timestamp desc
| limit 100

响应将会返回超时调用的请求 ID 列表。

有关更多信息,请参阅使用 CloudWatch Logs Insights 分析日志数据

**注意:**对于大型日志组,请考虑通过在 Insights 查询中添加 datetime 函数来限制搜索范围。有关更多信息,请参阅 CloudWatch Logs Insights 查询语法

使用超时调用的请求 ID 来检索每个调用超时的完整日志

使用适用于您正在使用的编程语言的标准日志记录功能输出日志。有关特定语言的说明,请参阅访问适用于 AWS Lambda 的 Amazon CloudWatch Logs使用 AWS CLI 部分。


AWS 官方
AWS 官方已更新 1 年前