对任何问题执行问题排查的第一步是在 Lambda Insights 扩展程序中启用调试日志记录。为此,请对 Lambda 函数设置以下环境变量:LAMBDA_INSIGHTS_LOG_LEVEL=info
。有关更多信息,请参阅使用 AWS Lambda 环境变量。
Lambda Insights 扩展程序会将日志发送到与函数相同的日志组中 (/aws/lambda/
。查看这些日志,看看错误是否可能与设置问题有关。function-name
)
我没有看到 Lambda Insights 中的任何指标
如果您未看到预计可以看到的 Lambda Insights 指标,请检查以下可能性:
指标可能只是存在延迟:如果函数尚未被调用或数据尚未刷新,则您将看不到 CloudWatch 中的指标。有关更多信息,请参阅本部分后文的已知问题。
确认 Lambda 函数具有正确的权限:确保已将 CloudWatchLambdaInsightsExecutionRolePolicy IAM 策略分配给了函数的执行角色。
检查 Lambda 运行时:Lambda Insights 仅支持某些 Lambda 运行时。有关支持的运行时的列表,请参阅 Lambda Insights。
例如,要在 Java 8 上使用 Lambda Insights,您必须使用
java8.al2
运行时,而不能使用java8
运行时。检查网络访问:Lambda 函数可能使用的是不具有 Internet 访问权限的 VPC 私有子网,并且您没有为 CloudWatch Logs 配置 VPC 终端节点。为了帮助调试此问题,您可以设置环境变量
LAMBDA_INSIGHTS_LOG_LEVEL=info
。
已知问题
数据延迟可能高达 20 分钟。当函数处理程序完成时,Lambda 会冻结沙盒,此操作也会冻结 Lambda Insights 扩展程序。当函数运行时,我们使用基于函数 TPS 的自适应批处理策略来输出数据。但是,如果长时间停止调用函数,并且缓冲区中仍有事件数据,则这些数据可能会被延迟到直到 Lambda 关闭空闲沙盒。当 Lambda 关闭沙盒时,我们会刷新缓冲的数据。