首页 文章

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

提问于
浏览
0

我有一个http endpoints 名称 - HE . 该'HE' endpoints 与Lambda函数'L'连接 .

所以他 - > L

在某种情况下,'L'以这种格式返回Exception:

{“errorMessage”:“名称John Doe无效 . 发生异常......”,“errorType”:“java.lang.Exception”,“stackTrace”:[“example.Hello.handler(Hello.java:9)” ,“sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)”,“sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)”,“sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)”,“ java.lang.reflect.Method.invoke(Method.java:497)“]}

同样由'HE'返回 .

我如何在'HE'处使用集成响应(AWS API Gateway),因此它应该只显示以下内容:

{“errorMessage”:“名称John Doe无效 . 发生异常......”}

1 回答

  • 1

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

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

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

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

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

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

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

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

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

相关问题