首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS API网关返回200,即使Lambda返回错误

AWS API网关返回200,即使Lambda返回错误
EN

Stack Overflow用户
提问于 2017-04-11 14:32:24
回答 1查看 6.7K关注 0票数 4

我正在构建一个AWS邮件服务,在发送包含来自该主体的数据的邮件之前,它基本上检查请求的主体。它检查是否存在每个必需的参数,并进行一些基本检查,检查数据是否符合我们的要求。

问题是,即使Lambda函数抛出一个错误(我使用Lambda接口进行了验证),API返回一个200响应代码,错误对象作为body

这意味着我得到了这样的日志:

代码语言:javascript
复制
Tue Apr 11 14:23:43 UTC 2017 : Method response body after transformations: 
{"errorMessage":"\"[BadRequest] Missing email\""}
Tue Apr 11 14:23:43 UTC 2017 : Method response headers: {X-Amzn-Trace-Id=Root=************, Content-Type=application/json}
Tue Apr 11 14:23:43 UTC 2017 : Successfully completed execution
Tue Apr 11 14:23:43 UTC 2017 : Method completed with status: 200

由于最后一部分,我相信API将返回200

我做了几件事来设置错误处理:

  • 我为错误代码添加了第二个方法响应:

  • 我为错误代码添加了第二个集成响应:

在这一点上,我不知道为什么它仍然不能返回正确的响应。我查看了有关这方面的各种帖子(包括:Is there a way to change the http status codes returned by Amazon API Gateway?How to return error collection/object from AWS Lambda function and map to AWS API Gateway response code),并阅读了文档。

我也尝试了“lambda代理方式”,但这并没有产生任何结果(lambda完全没有正确地执行这种方式)。

有人看到我在这里错过了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-12 04:42:14

我看到了一些可能会引起问题的东西。

您的错误消息引用为:"\"[BadRequest] Missing email\"",因此^[BadRequest]正则表达式将与错误字符串不匹配。在我运行的一个简单测试中,我不得不转义[] (即\[\]),因为方括号是为字符类保留的。

在不更改errorMessage格式的情况下,这样的模式应该可以工作:^"\[BadRequest\].*

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43348929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档