我試圖從外部node.js應用程序(即不在AWS上)調用lambda函數。 我使用AWS文檔中的代碼示例,它適用於名義情況。 但是,在發生錯誤的情況下,它不會被我的調用函數正確處理。aws lambda錯誤處理
我的調用代碼如下:
//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表達式,我提出一個錯誤,如果沒有提供PARAMS和提供錯誤消息
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")
}
}
但是,測試「invocationError」始終爲空,即使我沒有提供輸入參數。它總是處理有效負載(當我登錄時,我可以看到我的錯誤消息)。
我在這裏錯過了什麼?而不是回調
我的問題是......當它調用失敗時,'err'是否被設置,而不是當你返回錯誤響應?這似乎是你所看到的行爲。我還沒有使用javascript sdk來調用lambda函數,所以我不確定它的用途。 [文檔](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html#invoke-property)有些不清楚 –
看看[這裏]的文檔(http:// docs。 aws.amazon.com/lambda/latest/dg/API_Invoke.html)似乎支持從函數返回一個錯誤的想法不會導致錯誤被設置和一個錯誤狀態碼,並且錯誤是你提供將在有效載荷中。 –
的確如此;這並不一定是一種不好的做事方式;但代碼示例如[link](http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/browser-invoke-lambda-function-full.html)將不正確,因此我懷疑這種方法是錯誤的 –