1

每次我遇到語法錯誤或者我只想在AWS Lambda函數中發送自定義錯誤時,我都會得到相同的502錯誤網關響應(內部服務器錯誤)。使用API​​網關處理AWS Lambda函數中的錯誤

我想,簡單的代碼:

module.exports.saveImage = (event, context, callback) => { 
    callback("the sky is falling!"); // also tried sending new Error("the sky is falling!") 
} 

而仍然得到同樣的「內部服務器錯誤」的迴應,而不是定義一個。

這是我在serverless.yml文件功能:

saveImage: 
    handler: handler.saveImage 
    environment: 
    BUCKET: ${self:custom.bucket} 
    events: 
    - http: 
     path: saveImage 
     method: post 
     cors: true, 
     integration: lambda-proxy 

我可以從這篇文章誤解的東西嗎?它似乎收到「錯誤消息」:「天空正在下降!」在API網關響應中(這正是我所期望的)。

https://aws.amazon.com/es/blogs/compute/error-handling-patterns-in-amazon-api-gateway-and-aws-lambda/

+1

您是否配置了API網關的集成響應部分來處理Lambda的響應? –

+0

我用serverless.yml配置更新了我的問題。順便說一句,如果我把錯誤的第二個參數,這樣我可以接收響應: 回調(空,{ 體:JSON.stringify( { 消息:「我的錯誤」 })} ); 這是我們應該如何處理錯誤?我認爲我們可以使用第一個參數來發送錯誤。 – Emi

回答

2

如果使用integration: lambda-proxy,你需要從你的LAMBDA返回正確的錯誤響應,而不是從API網關。

在這種情況下,你可以使用哪些已經嘗試過:

callback(null, { body: JSON.stringify({ errorMessage: "my error" }) 

我以爲我們可以使用的第一個參數錯誤發送

你可以,如果你在使用integration: lambdaserverless.yml但在你的情況下,你不是。

+0

謝謝,我會看看他們之間的差異,如果它值得改變。 – Emi

+1

這是一個偏好問題,每個人都有自己的優點和缺點。請參閱https://stackoverflow.com/q/42474264/1252647。 – dashmug

相關問題