Aws lambda 如何将AWS API网关超时设置为大于30秒?

Aws lambda 如何将AWS API网关超时设置为大于30秒?,aws-lambda,Aws Lambda,我在这里读到,我可以将Lambda函数超时设置为15分钟() 但是,当我尝试在集成请求设置中设置API网关时,它不允许我将其设置为高于29秒: 我怎么能拥有一个持续15分钟的函数,而网关却在30秒后超时呢?不幸的是,没有办法将API网关超时时间增加到29秒以上。这是网关的一个限制。可以将lambda函数设置得更长的原因是,可以将其插入其他AWS资源中,以允许更高的超时处理阈值 以下是一些您可以探索的选项,以绕过此限制和/或克服此限制: 将您的函数拆分为更小的函数,并将它们链接在一起,以查看您是

我在这里读到,我可以将Lambda函数超时设置为15分钟()

但是,当我尝试在集成请求设置中设置API网关时,它不允许我将其设置为高于29秒:


我怎么能拥有一个持续15分钟的函数,而网关却在30秒后超时呢?

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

以下是一些您可以探索的选项,以绕过此限制和/或克服此限制:

  • 将您的函数拆分为更小的函数,并将它们链接在一起,以查看您是否获得了性能提升。在执行此操作之前,您可以使用AWS X-Ray调试函数,并查看哪个部分花费的时间最多,以确定需要拆分的部分

  • 增加功能使用的内存。内存分配越高,执行速度越快。我以前使用过这个选项,并且能够绕过超时限制

  • 不使用API网关,您只需使用AWS SDK调用“invoke()”即可调用lambda函数。这将绕过超时阈值


  • 希望其中一种或多种方法能有所帮助:)

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

  • 创建一个websocket
  • 通过此套接字调用lambda函数,并将connectionid传递给它。然后,lambda将把一条消息放入传递connectionid的SQS队列中
  • sqs为处理异步事件中的队列而调用的最后一个lambda将执行其职责(最多15分钟的处理),然后使用connectionid将处理结果传达给客户端(浏览器)(就像普通lambda通过api网关所做的那样)

  • 您可以通过事件检查连接是否仍处于活动状态来中断处理(或向客户端发送进度消息)。

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

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

    请澄清:ALB是什么意思?你能分享更多关于这个解决方案的细节吗?例如,使用这种方法实现的最大超时是多少。谢谢你的帮助!ALB代表应用程序负载平衡器。可以在此页面上找到最大超时。