Возвращенный тип ошибки представляет собой свойство 'name', установленное в ошибке.
Так следующий код:
var error = new Error('Its an error!');
error.name = 'TheName';
context.fail(error);
Результаты в следующей реакции от лямбда-API шлюза:
{
"errorMessage": "Its an error!",
"errorType": "TheName",
"stackTrace": [
"exports.handler (/var/task/index.js:10:21)"
]
}
К сожалению, кажется, что API шлюза только соответствует ошибке Regex к «ErrorMessage ' имущество. По крайней мере, исходя из моих попыток и того, что я читал так далеко. Поэтому установка типа ошибки не поможет, если вы пытаетесь сопоставить коды состояния. (как указано в комментариях)
Один из способов получить немного двух миров - это «toString()» ваша ошибка при вызове context.fail. Это отформатирует ваше сообщение об ошибке как «[имя]: [сообщение об ошибке]».
Затем вы можете сопоставить свое правило API Gateway Error Regex с конкретным свойством «имя».
Так телефону:
var error = new Error('Its an error!');
error.name = 'TheName';
context.fail(error.toString());
Когда API шлюза Regex отображается на статус 500:
TheName.*
Результаты в следующем состоянии 500 API шлюза ответ:
{
"errorMessage": "TheName: Its an error!"
}
Вы поняли это? Я не уверен, что вы можете вернуть объект ошибки из лямбда в шлюз 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/), и я надеюсь поговорить с Amazon относительно это в ближайшем будущем. – polythene