返回的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