AWS Gateway始终返回默认状态代码

时间:2017-07-19 20:22:51

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

当我通过AWS Gateway测试我的Lambda时,我可以看到这些行被记录:

Wed Jul 19 20:06:11 UTC 2017 : Method response body after transformations: {"errorCode":0,"headers":{},"statusCode":567,"base64Encoded":false}

如您所见,我将567作为状态代码返回。但我总是看到200:

enter image description here

然后,这是我在Integration Response中的配置:

enter image description here

我正在使用reg exp 。*“statusCode”:567。* ,但它与 {“errorCode”:0,“headers”:{}不匹配, “的StatusCode”:567, “base64Encoded”:假}

这些是我在“方法响应”部分中的http状态代码:

enter image description here

除了200以外我无法返回。我尝试将默认设置更改为567而不是200.这样它返回567.所以看起来我的设置使我的API返回始终默认值响应。

有没有人知道我做错了什么?

2 个答案:

答案 0 :(得分:1)

尝试使用lambda-proxy而不是lambda-integration。

这样,您可以在lambda函数中构建响应,而不是在API网关模板中构建响应。

在我看来,在代码中操作响应比使用API​​网关模板更容易。

答案 1 :(得分:1)

在这种情况下,我认为是您的正则表达式有问题:.*"statusCode":567.*

它与内部JSON消息匹配,因此需要将其更改为.*\"statusCode\":567.*才能匹配-无论如何在我的情况下

我用this answer做我的事,比您要寻找的要简单一些。