如何排查 API Gateway REST API 中的 HTTP 504 错误?

上次更新日期:2021 年 2 月 23 日

使用 Amazon API Gateway 调用 REST API 时,我收到了 HTTP 504 状态码。如何排查此错误?

简短描述

如果集成请求花费的时间超过 API Gateway REST API 最大集成超时参数,API Gateway 将返回 HTTP 504 状态码。

要排查来自 API Gateway 的 504 错误,首先在 Amazon CloudWatch 执行日志中确定并验证错误的来源。然后,使用以下一种或多种方法来减少集成请求的运行时,直到它们不超时为止。

解决方法

确定并验证 Amazon CloudWatch logs 中 504 错误的来源

1.    为返回 504 错误的 API 配置 API Gateway 日志记录

2.    手动重现 504 错误。

3.    在 CloudWatch 控制台中,针对接收错误的集成查看 API Gateway 执行日志

4.    跟踪 CloudWatch Logs 中的请求 ID。如果集成有超时,您将看到“转换后的终端节点请求正文:”行之后出现由于超时,执行失败的错误消息。有关更多信息,请参阅如何在我的 CloudWatch Logs 中找到 API Gateway REST API 错误?

5.    通过执行以下操作确定错误的来源:
验证是否已调用关联的集成终端节点。
确认集成逻辑需要多长时间才能完成并响应 API Gateway。

6.    如果集成未调用,请重试请求。(该错误可能是由于 API Gateway 服务中的临时网络故障造成的。)
注意:确保您的应用程序是幂等的。这可以避免重试 API 请求时的数据冲突。

–或者–

如果调用了集成但返回了 504 错误消息,请尝试增加集成请求的最大超时参数或减少集成的运行时。
注意:API Gateway 的默认最大集成超时为 30 秒。

减少集成的运行时

  • 确保您的后端集成仅包含 API Gateway 向客户端发送 HTTP 响应所需的逻辑。考虑将任何非依赖或后处理逻辑移动到其他服务,例如 AWS Lambda
  • 如果网络延迟导致 504 错误,请在客户端应用程序上实施重试逻辑
  • 通过遵循适用于您的平台的优化最佳实践来改善后端集成。

如果这些操作都没有达到所需的响应速度,请考虑实施异步 API Gateway 集成调用


这篇文章对您有帮助吗?


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