约 30 秒后 AWS API 网关超时

Posted

技术标签:

【中文标题】约 30 秒后 AWS API 网关超时【英文标题】:AWS API Gateway Timeout after ~30 seconds 【发布时间】:2021-04-18 17:51:30 【问题描述】:

AWS API Gateway 大约 30 秒后超时。我将 API 网关连接到一个运行时间远远超过 30 秒的 lambda 函数。

因此,API 响应在大约 30 秒后超时,并返回类似超时响应的内容。

我如何解决这个问题并从 Lambda 获得回复?

谢谢。

【问题讨论】:

AWS SDK 调用 'invoke()' 会在这里工作吗? 【参考方案1】:

API 网关的最大集成超时时间为 30 秒 (API Gateway Limits),因此您无法增加它。

您可以做的是接受请求,创建和 ID 并将其放入队列中。 然后,您将带有请求 ID 的 HTTP 202 消息发送回客户端。 现在可以从执行工作的队列异步触发 Lambda 函数。 它稍后将查询的结果保存在请求 id 下的某处(可能仅持续一段时间)。 然后,客户端可以使用请求 ID 并轮询第二个 API 网关以获取状态,一旦响应出现,该网关就能够返回。

【讨论】:

谢谢莫里斯。您认为调用“invoke()”的 AWS SDK 可以在这里工作吗?谢谢。 这取决于您要执行的操作 - 您可以通过调用 API 启动同步和异步调用。如果您要问的是,同步调用不会帮助您解决超时问题。【参考方案2】:

你不能对 api 网关超时做任何事情,它有 30 秒的硬限制。

解决方案是使用alb with aws lambda,alb 没有任何超时限制。

另一个选项是根据@Maurice 先前回答中的建议进行轮询。

【讨论】:

感谢 Pankaj。您认为调用“invoke()”的 AWS SDK 可以在这里工作吗?谢谢。 Pankaj,您能否详细说明使用 AWS SKD 'invoke' 会如何工作?谢谢。 lambda 有 15 分钟的限制,我们从 stepfunction 执行 lambda.invoke,它也等待 lambda 的响应。

以上是关于约 30 秒后 AWS API 网关超时的主要内容,如果未能解决你的问题,请参考以下文章

指向 DigitalOcean 域的 AWS API 网关

AWS 上的 504(网关超时)

Lyft API 为少数用户提供 504 网关超时

AWS Elastic Beanstalk 504 网关超时

AWS - 错误 504 - 网关超时 - Flask 应用程序

AWS WebSocket API 网关必须对 $connect、$disconnect 和 $default 具有相同的集成?