由于Api网关时间限制是10秒执行任何请求我试图处理超时错误,但是没有找到方法来捕获和响应自定义消息。
问题的上下文:我有一个执行时间不到2秒的函数,但是当函数执行冷启动时,创建与Java中的DynamoDB的连接有时需要10秒以上。我已经使用线程优化了我的功能,但我仍然无法保持初始调用的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.*
任何人都知道我应该用来捕获这个“消息”的女巫正则表达式:“超时......?
答案 0 :(得分:3)
您正在使用来自控制台的测试调用功能,其超时限制为10秒。但是,部署的API的超时时间为30秒,如here所述。所以,这应该足以处理Lambda冷启动案例。请部署然后使用api链接进行测试。如果由于您的端点占用时间超过30秒而超时,则响应为:
{"message": "Endpoint request timed out"}
为了澄清,您可以根据集成响应的HTTP状态代码配置方法响应。但是在超时的情况下,没有集成响应。因此,您无法使用该功能在超时期间配置方法响应。
答案 1 :(得分:3)