aws lambdaerror handling

我试图从外部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(invocationError, data) { console.log("error value: " + invocationError) if (invocationError) { console.log("Error invoking AWS " + invocationError); //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) } else{ //do normal processing and create payload callback(null, "Payload") } } 

但是,即使我没有提供input参数,testing“invocationError”也总是为空。 它总是进入有效负载的处理(当我login时,我可以看到我的错误消息)。

我在这里错过了什么?

我可以使用一种解决方法,比如对收到的有效负载进行testing:

// if(invocationError){

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

这在技术上的作品,但它不同于我发现的每个代码snipplet。

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