由于Api网关执行任何请求的时间限制为10秒,因此我尝试处理超时错误,但尚未找到捕获和响应自定义消息的方法。
问题的上下文:我有一个函数,其执行时间不到2秒,但是当该函数执行冷启动时,有时需要10秒钟以上才能在Java中创建与DynamoDB的连接。我已经使用线程优化了我的函数,但是仍然不能保持初始调用的10秒限制。
我需要找到一种传递响应模型的方法,如下所示:
{
"error": "timeout"
}
为了找到解决方案,我在Lambda中创建了一个函数,该函数在执行10秒后有意响应。与Api Gateway进行集成时,我得到以下响应:
Request: /example/lazy
Status:
Latency: ms
反应体
{
"logref": "********-****-****-****-1d49e75b73de",
"message": "Timeout waiting for endpoint response"
}
在文档中,我发现您可以使用Integration Response中的HTTP状态正则表达式来捕获此错误。但是我还没有找到一种解决方法,似乎互联网上也没有人遇到我同样的问题,因为我在任何论坛中都没有找到这个特定的消息。
我已经尝试过这些正则表达式:
.*"message".*
Timeout.*
.*"status":400.*
.*"status":404.*
.*"status":504.*
.*"status":500.*
有人知道我应该使用女巫正则表达式来捕获此“消息”:“超时...?
您正在从控制台使用“测试调用”功能,该功能的超时限制为10秒。但是,部署API的超时时间为30秒提到这里。因此,这足以应付Lambda冷启动案例。请部署,然后使用api链接进行测试。如果由于您的端点花费了30秒以上而超时,则响应将是:
{"message": "Endpoint request timed out"}
为了明确起见,您可以基于集成响应的HTTP状态代码配置方法响应。但是在超时的情况下,没有集成响应。因此,您不能使用该功能来配置超时期间的方法响应。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句