我正在尝试从外部 node.js 应用程序(即不在 AWS 上)调用 lambda 函数。 我使用了 AWS 文档中的代码示例,它非常适合标称案例。 但是,在出现错误的情况下,我的调用函数永远不会正确处理它。
我的调用代码如下:
// AWS.config before
var pullParams = {
FunctionName : 'myFunctionName',
InvocationType : 'RequestResponse',
LogType : 'None',
Payload : JSON.stringify({
"myParam" : params
})
};
var lambda = new AWS.Lambda();
lambda.invoke(pullParams, function(error, data) {
console.log("error value: " + error);
if (error) {
console.log("Error invoking AWS " + error);
// process error
} else {
// process payload
}
});
在我的 lambda 函数中,如果没有提供参数,我会引发错误并提供错误消息
exports.handler = (event, context, callback) => {
var params = event.myParam;
if (!params) {
var error = new Error("Appropriate error message");
callback(error);
// In Node ≥8, could also be expressed making handler `async` and `throw`ing here
}
else {
// do normal processing and create payload
callback(null, "Payload");
}
}
但是,在invoke
回调中,error
始终为 null(即使 lambda 通过错误代码路径),并且在通过错误代码路径时,然后 data
包含 errorMessage、errorType、stackTrace
键。
我在这里错过了什么? aws-sdk
的 invoke
绑定(bind)不应该填充 error
而不是让我检查 data.errorMessage
吗? !
最佳答案
我可以使用变通方法,例如测试收到的有效载荷:
//如果(调用错误){
if (data.FunctionError){ <== 如果没有错误则为 null,如果返回错误则为 "Handled"
这在技术上是可行的,但它不同于我发现的每个代码片段。
关于javascript - 为什么从未填充 AWS.Lambda.invoke `error` 回调参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42672023/