如何找到失败的 Lambda 调用的请求 ID?

How do I find the request ID for a failed Lambda invocation?

在我的 AWS Lambda 控制面板上,我看到失败的调用激增。我想通过查看这些调用的日志来调查这些错误。目前,我唯一能做的就是过滤这些调用,就是获取失败调用的时间线,然后查看日志。

有没有一种方法可以搜索失败的调用,即没有 return 200 的调用,并获得一个请求 ID,然后我可以在 CloudWatch Logs 中查找该 ID?

您可以通过在 AWS Lambda 仪表板中启用来使用 AWS X-Ray

在 X-Ray 仪表板中;

  • 您可以查看痕迹
  • 按状态码筛选
  • 查看调用的所有详细信息,包括请求 ID、总执行时间等,例如
{
    "Document": {
        "id": "ept5e8c459d8d017fab",
        "name": "zucker",
        "start_time": 1595364779.526,
        "trace_id": "1-some-trace-id-fa543548b17a44aeb2e62171",
        "end_time": 1595364780.079,
        "http": {
            "response": {
                "status": 200
            }
        },
        "aws": {
            "request_id": "abcdefg-69b5-hijkl-95cc-170e91c66110"
        },
        "origin": "AWS::Lambda",
        "resource_arn": "arn:aws:lambda:eu-west-1:12345678:function:major-tom"
    },
    "Id": "52dc189d8d017fab"
}

我从你的问题中了解到,你更感兴趣的是找出你的 lambda 调用失败的原因,而不是查找失败的 lambda 调用的请求 ID。

您可以按照以下步骤进行操作:

  1. 转到 AWS 控制台中的 lambda 函数。
  2. 将有三个选项卡,分别命名为配置、权限和监控
  3. 单击“监视”选项卡。在这里您可以看到调用次数、错误计数和成功率,以及其他指标。单击 错误指标 。您将看到调用错误发生的时间。您可以在 Lambda function metrics
  4. 阅读更多内容
  5. 如果您已经知道函数失败的时间,请忽略第 3 步。
  6. 现在向下滚动。您会发现称为 CloudWatch Logs Insights 的部分。在这里您将看到指定时间范围内发生的所有调用的日志。
  7. 在此部分下调整您的时间范围。您可以选择预定义的时间范围,如 1 小时、3 小时、1 天等,或您的自定义时间范围。
  8. 现在在应用上述过滤器后单击日志流 link。它将带您到 cloudwatch 控制台,您可以在此处查看日志。