如何为您在AWS LAMBDA故障,在节点抛出一个异常
我做对AWS LAMBDA一套基本TDD,并注意到,如果我创建了一个简单的测试功能:
exports.handler = async (event) => {
// Will always fail
throw "Failed to execute - this is a failure function that will always fail";
};
当我调用它通过与com.amazonaws.services.lambda.model.InvokeRequest这个函数的响应代码的SDK,总是回来为200,和错误日志是空的!
我想知道如果我做错事了调用和询问这里错误的条款;因为它似乎疯了的JavaScript函数抛出一个异常,而当我测试报告为执行在AWS控制台LAMBDA失败会返回一个200?
我注意到,我使用的异步变种这里;所以我也试图与同步变体和context.fail()调用:
exports.handler = (event, context, callback) => {
// Will always fail
try {
throw "Failed to execute - this is a failure function that will always fail";
}
catch(e) {
context.fail(e);
}
};
我肯定希望它可以返回一个500什么的,但同样,我得到一个200!
回答如下:LAMBDA有two invocation types。
- requestResponse则(同步)
- 事件(异步)
正如你所看到的,这个问题可能不一定是你的lambda函数中存在。我的建议是要检查你的代码调用这个lambda来看看你使用的是什么样的调用类型。
如何为您在AWS LAMBDA故障,在节点抛出一个异常
我做对AWS LAMBDA一套基本TDD,并注意到,如果我创建了一个简单的测试功能:
exports.handler = async (event) => {
// Will always fail
throw "Failed to execute - this is a failure function that will always fail";
};
当我调用它通过与com.amazonaws.services.lambda.model.InvokeRequest这个函数的响应代码的SDK,总是回来为200,和错误日志是空的!
我想知道如果我做错事了调用和询问这里错误的条款;因为它似乎疯了的JavaScript函数抛出一个异常,而当我测试报告为执行在AWS控制台LAMBDA失败会返回一个200?
我注意到,我使用的异步变种这里;所以我也试图与同步变体和context.fail()调用:
exports.handler = (event, context, callback) => {
// Will always fail
try {
throw "Failed to execute - this is a failure function that will always fail";
}
catch(e) {
context.fail(e);
}
};
我肯定希望它可以返回一个500什么的,但同样,我得到一个200!
回答如下:LAMBDA有two invocation types。
- requestResponse则(同步)
- 事件(异步)
正如你所看到的,这个问题可能不一定是你的lambda函数中存在。我的建议是要检查你的代码调用这个lambda来看看你使用的是什么样的调用类型。