如何解决 API Gateway 中的“端点通信网络错误”错误?
上次更新日期:2022 年 8 月 17 日
我想解决 Amazon API Gateway 中的“端点通信网络错误”。
简短描述
如果 API 请求的数量明显多于您收到的错误数量,那么您可能遇到了暂时性网络问题。若要解决这些问题,请按照解决低频率网络错误部分中的步骤进行操作。
如果您经常或持续遇到错误,请按照解决高频率网络错误部分中的步骤进行操作
解决方法
解决低频率网络错误
- 对于失败请求,请使用带指数回退的重试。
- 若要激活访问日志记录,请参阅设置 Amazon CloudWatch API 日志记录。然后,在 CloudWatch 控制台中查看 API Gateway 日志事件。对于调试,请分析上下文变量 $context.integration.error、$context.integration.latency 和 $context.integrationStatus。
解决高频率网络错误
设置 Amazon CloudWatch 日志记录。请务必选择 Log full requests/responses data(记录完整请求/响应数据)选项。此选项允许您记录完整的 API 请求和响应,以便排查错误。
考虑以下解决方法:
- 如果您的负载均衡器有多个目标组,请使用跨区域负载均衡来减少延迟。您可以通过在所有已激活的可用区之间均匀分配传入流量,并阻止将请求路由到没有目标的可用区来减少延迟。
- 确认在所有已激活的可用区中都有已注册的运行正常的实例,并且这些实例使用 Network Load Balancer 和 Application Load Balancer。
注意:每个已激活的可用区至少有一个已注册目标时,负载均衡器效果最佳。在您的可用区中,每个目标组必须至少有一个运行正常的实例。运行正常的实例必须在 Network Load Balancer 或 Application Load Balancer 中达到正常运行状态。 - 为避免超过 API Gateway 的集成超时配额,请确认您的目标组实例可在 29 秒内响应 API。
- 仅当您具有 TLS 侦听器时,才能在 Network Load Balancer 和 Application Load Balancer 上激活访问日志记录。
- 如果您使用的是网络负载均衡器,请确认可以访问 Amazon Elastic Compute Cloud (Amazon EC2) 安全组中的实例的 IP 地址。您的 IP 应允许来自所有源或网络负载均衡器私有 IP 地址的流量。
- 如果您使用的是 Application Load Balancer,请确认 Application Load Balancer 的安全组允许来自所有源的流量。
注意:目标实例只能限制对 Application Load Balancer 的访问。为实现更严格的安全性,您可以限制来自为 API 所在 AWS 区域保留的 API Gateway IP 地址的访问。若要在 IP 范围列表发生更改时收到通知,请订阅 AWS IP 地址范围通知。 - 激活 Amazon Virtual Private Cloud (Amazon VPC) 流日志。然后,为 Network Load Balancer 和 Application Load Balancer 捕获进出网络接口的流量信息。
- 如果网络负载均衡器已附加到 Amazon VPC 链接,请检查 TCP_Target_Reset_Count 指标。此指标的峰值表示目标实例可能不会关闭与网络负载均衡器的连接。