gpt4 book ai didi

amazon-web-services - AWS Lambda : how to set the error type?

转载 作者:行者123 更新时间:2023-12-01 08:02:35 25 4
gpt4 key购买 nike

我想从我的 lambda 函数发送回自定义错误类型。如何控制 errorType 属性中显示的内容,以便将错误返回到我的 api 网关?

 var err = new Error('foo');
context.fail(err);

返回
{
"errorMessage": "foo",
"errorType": "Error",
"stackTrace": [
"exports.handler (/var/task/index.js:11:19)"
]
}

我想对其进行操作,以便响应中的 errorType 可以类似于 "InvalidParam" .

最佳答案

返回的 errorType 表示在错误上设置的 'name' 属性。

所以下面的代码:

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 网关似乎只将 Error Regex 与“errorMessage”属性匹配。至少基于我的尝试和到目前为止我所阅读的内容。因此,如果您尝试映射到状态代码,则设置错误类型将无济于事。 (如评论中所述)

获得两全其美的一种方法是在调用 context.fail 时“toString()”你的错误。这会将您的错误消息格式化为“[name]:[error message]”。

然后,您可以将 API 网关错误正则表达式与特定的错误“名称”属性进行匹配。

所以调用:
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!"
}

关于amazon-web-services - AWS Lambda : how to set the error type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31346460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com