如何将AWS API Gateway超时设置为高于30秒?

时间:2019-01-22 01:20:09

标签: aws-lambda

我在这里读到可以将Lambda函数超时设置为15分钟(https://aws.amazon.com/about-aws/whats-new/2018/10/aws-lambda-supports-functions-that-can-run-up-to-15-minutes/

但是,当我尝试在Integration Request设置中设置API Gateway时,不允许将其设置为高于29秒:

Timeout max is 29 seconds

我如何才能使用持续15分钟的功能,但网关却在30秒后超时?

4 个答案:

答案 0 :(得分:5)

不幸的是,没有一种方法可以将API网关超时增加到超过29秒。这是网关的限制。您可以将lambda函数设置为更长的原因是因为可以将其插入到其他AWS资源中,这些资源允许更高的超时处理阈值。

您可以探索以下几种方法来解决此问题和/或使用限制:

  1. 将您的函数拆分为较小的函数,并将它们链接在一起,以查看性能是否得到提高。在执行此操作之前,您可以使用AWS X-Ray调试该功能,并查看花费最多时间的部分来确定需要拆分的内容。

  2. 增加该功能使用的内存。更高的内存分配可能导致更快的执行。我以前使用过此选项,并且能够解决超时限制。

  3. 您可以仅使用AWS开发工具包调用“ invoke()”来调用lambda函数,而不使用API​​ Gateway。这将绕过超时阈值。

希望其中的一种或几种会有所帮助:)

答案 1 :(得分:1)

API网关现在支持WebSocket API。只是:

  1. 创建一个网络套接字,
  2. 通过此套接字调用lambda函数,并将连接ID​​传递给它。然后,该lambda会将消息传递到通过连接ID的SQS队列中
  3. 由sqs调用以在异步事件中处理队列的最终lambda将执行其职责(最多处理15分钟),然后将使用connectionid将处理结果传达给客户端(浏览器)(仅就像普通的lambda会通过api网关一样。)

您可以事件检查连接是否仍然有效以中断处理(或将进度消息发送回客户端)。

答案 2 :(得分:0)

另一种选择是使用快速API调用创建EventBridge计时器,并从计时器执行Lambda。

答案 3 :(得分:0)

当前无法增加API超时秒数。 另一种选择是创建ALB并将请求转发到Lambda。