约 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 网关超时的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk 504 网关超时
AWS - 错误 504 - 网关超时 - Flask 应用程序
AWS WebSocket API 网关必须对 $connect、$disconnect 和 $default 具有相同的集成?