我在與Python Lambda函數集成的API網關上有一個方法。如果在我的Python Lambda函數中發生異常,其中errorMessage字段與該方法的集成響應中的正則表達式之一不匹配,我希望我的API網關返回500響應。關於未處理的異常的API網關500響應
我只想返回一個200,如果沒有引發異常,lambda返回沒有失敗。
隨着在上面的圖片中的設置 - 引發的任何異常,其不爲400響應會給出一個200響應匹配(.|\n)*'type':\s*'.*Error'(.|\n)*
。
如果發現任何異常與已配置的響應不匹配,我該如何返回500 - 當Python函數成功返回時仍返回200?我只需要在代碼中包裝所有東西(除了try除外),這可能會引發異常並生成可預測的errorMessage字符串?
編輯:
我目前由具有500的(.|\n)*
拉姆達錯誤的正則表達式的整合。響應「實現這一目標」。這是一個合理的方式來捕捉未處理的異常爲500錯誤?
編輯:
事實證明,這種配置是給500的錯誤時,Python函數返回無一例外。
我希望拉姆達錯誤的正則表達式的只嘗試匹配,如果實際的例外是由Python函數拋出(因爲他們只根據文檔檢查的errorMessage場)。使其回落到默認方法201(在更新的場景中)。奇怪的是,當使用API GW控制檯「Test」進行測試時,它會返回400,但在其他任何地方嘗試時會給出500(在500 Integration Response中定義的主體映射)。
我認爲能夠將所有未處理的異常返回爲500的唯一方法是從我的Python函數raise Exception('Success')
而不是return
- 然後將201 Lambda Error Regex匹配爲「成功」......我真的不想這麼做。
這是一個好消息。非常感謝。 – unclemeat
我可能說得太快了。這似乎是我配置的方式,即使函數返回時沒有異常,也會給出500個響應。我已更新原始帖子,提供更多信息。 – unclemeat
Lambda在200個案例中爲錯誤消息返回一個空字符串。將您的500 Lambda錯誤正則表達式更改爲(。| \ n)+,以便它至少需要一個字符並且不匹配空字符串。 –