2016-06-30 102 views
0

我有一個http端點名稱 - 他。這個'HE'端點與Lambda函數'L'連接。如何將從AWS Java Lambda函數返回的異常轉換爲API網關?

所以他 - >→

在這種格式的一些情況 'L' 回報異常:

{ 「的errorMessage」: 「發生名稱李四是無效的例外......」 「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.DelegatingMethodAccesso rImpl.invoke(DelegatingMethodAccessorImpl.java:43)」, 「java.lang.reflect.Method.invoke(Method.java:497)」 ] }

而同樣由 'HE' 作爲返回。

如何使用在合併響應(AWS API網關)「他」,所以應該只顯示如下內容:

{ 「的errorMessage」:「姓名李四是無效的例外發生... 「 }

回答

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端點,那麼這種方法是相似的,但某些術語的術語會發生變化。

相關問題