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

标签 javascript node.js amazon-web-services lambda

我正在尝试从外部 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-sdkinvoke 绑定(bind)不应该填充 error 而不是让我检查 data.errorMessage 吗? !

最佳答案

我可以使用变通方法,例如测试收到的有效载荷:

//如果(调用错误){

if (data.FunctionError){ <== 如果没有错误则为 null,如果返回错误则为 "Handled"

这在技术上是可行的,但它不同于我发现的每个代码片段。

关于javascript - 为什么从未填充 AWS.Lambda.invoke `error` 回调参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42672023/

相关文章:

javascript - 当 css 来自云或 cdn 时,如何为 CSS 设置回退 URL

javascript - 设计顺序 : Firefox, IE,还是两者兼而有之?

javascript - Expressjs 静态压缩不是压缩 css 或 Javascript

ruby - 带有 Amazon RDS 的 VPC 中的 AWS Elastic Beanstalk

javascript - ADF Faces 对话框 -dialogListener 未触发

javascript - 如何使用 Knockout JS 或其他方式将选择框的选定文本绑定(bind)到对象的属性?

javascript - 如何在 Node 上正确重试 try 语句?

javascript - Appium代码生成 "SyntaxError: await is only valid in async function"

amazon-web-services - 使用 AWS Polly 合成超过 1500 个字符?

amazon-web-services - 将数据从一个 aws 队列 (SQS) 复制到另一个 SQS 的最佳方法