返回的 errorType 表示在错误上设置的“名称”属性。
所以下面的代码:
var error = new Error('Its an error!');
error.name = 'TheName';
context.fail(error);
导致从 Lambda 到 API Gateway 的以下响应:
{
"errorMessage": "Its an error!",
"errorType": "TheName",
"stackTrace": [
"exports.handler (/var/task/index.js:10:21)"
]
}
不幸的是,API 网关似乎只将错误正则表达式与“errorMessage”属性匹配。至少基于我的尝试和我到目前为止所读到的内容。因此,如果您尝试映射到状态代码,设置错误类型将无济于事。(如评论中所述)
获得一点点两全其美的一种方法是在调用 context.fail 时“toString()”你的错误。这会将您的错误消息格式化为“[name]:[error message]”。
然后,您可以将您的 API Gateway 错误正则表达式与特定的错误“名称”属性相匹配。
所以调用:
var error = new Error('Its an error!');
error.name = 'TheName';
context.fail(error.toString());
当 API Gateway Regex 映射到状态 500 时:
TheName.*
导致以下状态 500 API 网关响应:
{
"errorMessage": "TheName: Its an error!"
}