【问题标题】:Intermittent Internal Server Error - StatusCode 500 on API Gateway calling Lambda间歇性内部服务器错误 - API 网关调用 Lambda 上的 StatusCode 500
【发布时间】:2022-04-07 22:28:15
【问题描述】:

我在 AWS API Gateway 中有一个 REST API,它调用 Python Lambda 函数并返回一些结果。 大多数情况下,此工作流运行良好,这意味着执行 Lambda 函数并将结果传递回 API,然后返回 200 OK 响应。

但是,有几次我从 API 收到 500 错误代码,而 Lambda 似乎甚至没有被执行。 response.reason 说:“内部服务器错误”并且没有给出额外的信息。

对于API的失败请求和成功请求在方法或参数格式方面没有区别。

还有一条评论是 API 启用了缓存设置。 我看过类似的帖子,其中一些答案提到了 Lambda 函数返回的 JSON 对象的格式,另一些则指向 IAM 权限问题,但这些似乎都不是原因。事实上,正如这篇文章的标题所说,这是一种间歇性行为:大多数情况下它工作正常,但偶尔会出现此错误。

任何提示将不胜感激。

【问题讨论】:

  • 您可以在 api Gateway 上启用日志记录并检查日志,它应该可以让您对问题有所了解。
  • @PankajYadav 实际上我这样做了,我同时启用了 CloudWatch Logs 和 Access Logging,但它们都没有提供额外的信息。令人惊讶的是,与导致错误的 API 请求对应的日志条目甚至看起来都不像错误。
  • 您在 lambda 函数中使用异常处理,对吧?
  • 没错,这就是我对错误代码的认识。事实上,自从我第一次发帖以来,我收到了一些额外的错误,例如:('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))<Response [502]><Response [503]> 等等。

标签: amazon-web-services aws-lambda aws-api-gateway


【解决方案1】:

我遇到了同样的问题,在我的情况下,我必须在 API Gateway 阶段启用 记录完整请求/响应数据以及 INFO 日志,才能看到以下日志:

(xxx) Endpoint response body before transformations: 
{
    "Type": "Service",
    "message": "INFO: Lambda is initializing your function. It will be ready to invoke shortly."
}

在我的情况下,问题与 lambda 处于非活动状态这一事实有关,这种情况发生在 If a function remains idle for several weeks

【讨论】:

    【解决方案2】:

    我有同样的问题,我怀疑超时可能是由于 lambda 达到其内存限制。

    我已将内存限制设置为下一个等级 (128 -> 512),并将超时时间增加到 10 秒(默认为 3),现在我可以看到超时时间了。 我目前仍有问题,但现在我可以进行调查了。

    希望对你有所帮助。

    【讨论】:

      【解决方案3】:

      我通过 HTTP API 集成看到了这一点。它是间歇性的,在向 Lambda 添加预置并发时似乎有所改善。例如,在具有 4 到 10 个并发实例但通常徘徊在 4 到 8 个范围内的 Lambda 上,购买 5 到 6 个预置并发实例有助于减少甚至可能消除这 500 个错误。

      我仍在监视它们是否永远消失了。配置实例后,这些错误的频率已大大降低。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多