如何将返回的异常从AWS Java Lambda函数转换为API网关?

时间:2016-06-30 14:47:36

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

我有一个http端点名称 - HE。这个' HE'终端连接Lambda函数' L'。

所以HE - > L

在某些情况下' L'以这种格式返回异常:

{   " errorMessage":"名称John Doe无效。发生例外......",   " errorType":" java.lang.Exception",   " stackTrace":[     " example.Hello.handler(Hello.java:9)&#34 ;,     " sun.reflect.NativeMethodAccessorImpl.invoke0(原生方法)",     " sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)&#34 ;,     " sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&#34 ;,     " java.lang.reflect.Method.invoke(Method.java:497)"   ] }

并且' HE'原样。

我如何在' HE'使用集成响应(AWS API网关)。所以它应该只显示以下内容:

{  " errorMessage":"名称John Doe无效。发生例外......" }

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解你的设置。我假设您的API网关正在调用您的Lambda函数,并且您的Lambda函数正在返回您作为错误对象提供的字符串。在那种情况下......

为您的方法添加新的方法响应。将方法响应的HTTP状态设置为您要返回的HTTP状态代码,对于这种情况可能为400。

向您的方法添加新的集成响应。

将积分响应的“Lambda Error Regex”设置为正则表达式,该正则表达式将唯一标识错误。 “。名称。无效。*”应适用于此案例。

将“方法响应状态”设置为方法响应的HTTP状态(在我的示例中为400)。

点击保存。展开集成响应。展开“正文映射模板”。单击“添加映射模板”。将Content-Type设置为“application / json”(或您想要的任何内容类型)。单击复选框。

在映射模板编辑器框中,添加这样的映射模板......

#set($inputRoot = $input.path('$'))
{"errorMessage" : "$input.path('$.errorMessage')"}

如果我误解了您的设置并且您的API网关正在调用HTTP端点,那么方法类似,但某些术语的术语会发生变化。