Lambda超时返回Http 200到API网关

时间:2019-06-10 13:07:03

标签: amazon-web-services aws-lambda aws-api-gateway

我有一个lambda函数,其超时设置为10秒。此lambda是从API网关触发的。现在,就我而言,我可以在cloudwatch日志中看到我遇到了超时错误Task timed out after 10.00 seconds,这很好。但是我在API网关日志中得到的响应代码是Http-200

关于此问题,我读了很少的关于该问题的AWS文档和答案,如果这是预料之中的或者我的代码存在问题,但是由于许多问题都太老了,它们似乎都没有给出明确的答案跟随。

我在AWS文档中也没有发现任何重要内容。

2 个答案:

答案 0 :(得分:3)

根据AWS,

  

对于Lambda自定义集成,您必须映射Lambda返回的错误   在对您的标准HTTP错误响应的集成响应中   客户。否则,Lambda错误将作为以下命令的200 OK响应返回:   默认情况下,结果对于您的API用户而言并不直观。

Error Handling here

您必须明确处理此类错误。

答案 1 :(得分:0)

我最近也偶然发现了这一点。 在我的场景中,我通常想知道当lambda执行超时,内存不足等并在aws论坛中找到答案时,API网关返回什么:

AWS Forum

  

仅当执行结果失败(例如在Lambda函数中引发异常或将其标记为失败)时,才应用Lambda错误正则表达式。如果异常由于Lambda服务而失败,例如访问被拒绝,限制等,则将不应用正则表达式。

一种可能的解决方案是将API网关用作lambda代理。然后,它实际上将所有 service 错误映射到HTTP-502响应。

我链接的论坛中的主题还提到使用调用类型 event 。也许有帮助。