返回的errorType表示在錯誤上設置的'name'屬性。
所以下面的代碼:
var error = new Error('Its an error!');
error.name = 'TheName';
context.fail(error);
結果從LAMBDA到API網關以下回應:
{
"errorMessage": "Its an error!",
"errorType": "TheName",
"stackTrace": [
"exports.handler (/var/task/index.js:10:21)"
]
}
不幸的是,這似乎API網關只有錯誤的正則表達式匹配到「的errorMessage '財產。至少基於我的嘗試以及我迄今爲止所讀到的內容。因此,如果您嘗試映射到狀態碼,設置錯誤類型將無濟於事。 (如評論中提到的)
獲得一點兩個世界的一種方法是在調用context.fail時「toString()」錯誤。這會將你的錯誤信息格式化爲「[name]:[error message]」。
然後,您可以將您的API網關錯誤正則表達式與特定錯誤「名稱」屬性相匹配。
所以調用:
var error = new Error('Its an error!');
error.name = 'TheName';
context.fail(error.toString());
當API網關正則表達式映射到狀態500:
TheName.*
結果在以下狀態500 API網關響應:上
{
"errorMessage": "TheName: Its an error!"
}
你知道了嗎?我不確定你可以從lambda返回一個錯誤對象到API網關,也可以將HTTP狀態碼映射到它。 – ac360
基於環視它看起來像你不能設置自定義錯誤類型 - 你必須設置錯誤字符串,並根據字符串只是映射錯誤類型,例如, http://stackoverflow.com/questions/31329495/is-there-a-way-to-change-the-http-status-codes-amazon-api-gateway-returns/31371862#31371862 – MonkeyBonkey
我寫了一個[博客文章](http://www.jayway.com/2015/11/07/error-handling-in-api-gateway-and-aws-lambda/),我希望能與亞馬遜討論這在不久的將來。 – polythene