我有一个lambda函数,其超时设置为10秒。此lambda是从API网关触发的。现在,就我而言,我可以在cloudwatch日志中看到我遇到了超时错误Task timed out after 10.00 seconds
,这很好。但是我在API网关日志中得到的响应代码是Http-200
。
关于此问题,我读了很少的关于该问题的AWS文档和答案,如果这是预料之中的或者我的代码存在问题,但是由于许多问题都太老了,它们似乎都没有给出明确的答案跟随。
我在AWS文档中也没有发现任何重要内容。
答案 0 :(得分:3)
根据AWS,
对于Lambda自定义集成,您必须映射Lambda返回的错误 在对您的标准HTTP错误响应的集成响应中 客户。否则,Lambda错误将作为以下命令的200 OK响应返回: 默认情况下,结果对于您的API用户而言并不直观。
您必须明确处理此类错误。
答案 1 :(得分:0)
我最近也偶然发现了这一点。 在我的场景中,我通常想知道当lambda执行超时,内存不足等并在aws论坛中找到答案时,API网关返回什么:
仅当执行结果失败(例如在Lambda函数中引发异常或将其标记为失败)时,才应用Lambda错误正则表达式。如果异常由于Lambda服务而失败,例如访问被拒绝,限制等,则将不应用正则表达式。
一种可能的解决方案是将API网关用作lambda代理。然后,它实际上将所有 service 错误映射到HTTP-502响应。
我链接的论坛中的主题还提到使用调用类型 event 。也许有帮助。