【发布时间】:2020-01-07 20:40:40
【问题描述】:
我正在尝试从外部 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 绑定不应该填充error 而不是让我检查data.errorMessage 吗?!
【问题讨论】:
标签: javascript node.js amazon-web-services lambda