为什么从未填充 AWS.Lambda.invoke `error` 回调参数?

Fra*_*usy 6 javascript lambda amazon-web-services node.js

我正在尝试从外部 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
        }
     });
Run Code Online (Sandbox Code Playgroud)

在我的 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");
    }
 }
Run Code Online (Sandbox Code Playgroud)

但是,在invoke回调中,error始终为 null(即使 lambda 通过错误代码路径),并且在通过错误代码路径时,则data包含errorMessage, errorType, stackTrace键。

我在这里缺少什么?不应该invoke绑定aws-sdkpopulateerror而不是让我检查data.errorMessage?!

小智 -1

使用 context.fail() 而不是 callback(err) 来让处理程序失败