如何排查与 Lambda 集成的 API 网关端点的状态码为 500 的 "internal server" 错误?

上次更新日期:2022 年 10 月 19 日

我向与 AWS Lambda 集成的 Amazon API Gateway API 端点发送了一个 HTTP 请求(例如 /lambda-resource GET)。我收到了状态码 500 的响应,错误如下:{"message": "Internal server error"}

如何对此错误进行故障排除?

简短描述

此错误可能是由于:

  • Lambda 函数权限
  • 节流问题
  • HTTP 状态代码映射不正确或缺失
  • 未处理的错误

解决方法

开始之前,请按照以下步骤启用 Amazon CloudWatch Logs 以排查 API 网关错误

注意:对于 Log level(日志级别),选择 INFO(信息)以针对所有请求生成执行日志。

Lambda 函数权限

如果 API 网关没有调用 Lambda 函数的权限,则会出现 "Invalid permissions on Lambda function" 错误。要解决这个问题,请参阅如何解决 API 网关 REST API 中“Invalid permissions on Lambda function(Lambda 函数的权限无效)”错误?

注意:如果您使用其他服务(例如 AWS CloudFormation)来部署您的 API 网关资源,请确保您拥有 AWS::Lambda::Permission

节流问题

如果后端服务因请求数量高而受限,则 API 网关 API 可能会返回 "internal server error"(内部服务器错误)。您可以激活指数回退和重试机制,然后重试请求。如果问题仍然存在,请检查 API 网关配额限制。如果您超出服务配额限制,则可以请求提高配额

由于 Lambda 函数节流问题,您可能还会收到 "Rate exceeded" 和 429 "TooManyRequestsException" 错误。有关更多信息,请参阅如何排查出现 "Rate exceeded" 和 429 "TooManyRequestsException" 错误时的 Lambda 函数节流问题?

您还可以请求提高 Lambda 函数的并发限制,这样该函数就不会受到限制。有关说明,请参阅如何请求提高我的 Lambda 函数的并发限制?

HTTP 状态代码映射不正确或缺失

HTTP 状态代码映射不正确或缺失也会导致类似于以下内容的 500 错误:

"Execution failed due to configuration error: Output mapping refers to an invalid method response: 2xx/4xx/5xx".

要解决此错误,请确保存在针对从后端返回的状态码的 API 方法响应,并且已正确映射

未处理的错误

Lambda 中未处理的错误表明,由于函数代码中的错误,函数超时。为防止出现此错误,请确保 Lambda 函数代码是幂等的。

您还可以使用调试工具 AWS X-Ray 来获取有关函数代码不同部分需要多长时间才能完成的更多详细信息。

有关更多信息,请参阅 Amazon API Gateway 和 AWS Lambda 中的错误处理模式


这篇文章对您有帮助吗?


您是否需要账单或技术支持?