在API网关中映射Lambda输出会导致服务器错误

rou*_*urn 9 regex rest amazon-web-services aws-lambda aws-api-gateway

我有一个AWS API网关设置,由Python Lambda函数提供服务.对于成功的响应,Lambda返回以下形式的响应:

"200:{\"somekey\": \"somevalue\"}"
Run Code Online (Sandbox Code Playgroud)

默认情况下,合并响应网关控制台设置有一个配置了一个规则LAMBDA错误的正则表达式.*映射为200的响应状态也能正常工作.

问题是当我尝试将其更改为200.*时(为了启用更具体的代码).现在我得到了

{"message": "Internal server error"}
Run Code Online (Sandbox Code Playgroud)

每次我用任何请求打网关(导致200或不是).

没有错误日志写入CloudWatch.

在此输入图像描述

我想知道如何在AWS API Gateway中成功将Lambda输出映射到HTTP状态代码.

Mic*_*oin 13

如果在API网关中执行测试运行,则测试运行日志应显示类似于以下内容的错误:

11月21日星期六07:41:25 UTC 2015:由于配置错误导致执行失败:输出映射不匹配且未配置默认输出映射

问题是不再有默认映射来捕获成功的响应.错误正则表达式的目的是捕获错误并将它们映射到状态代码.错误正则表达式搜索失败的json响应的errorMessage属性.如果要将状态代码400设置为默认值(空白),您会发现成功的响应始终映射到状态代码400.

你最好将200作为默认(空白)正则表达式.然后设置特定的正则表达式值以检查您的不同错误消息.例如,您可以拥有多个特定的错误正则表达式状态代码和一个通用的catch-all,从而产生500个.

在此输入图像描述