7

Ich muss aws Lambda von einem anderen Lambda asynchron aufrufen. Ich habe einen Arbeitscode für synchrone Anrufe.invoke aws Lambda von einem anderen Lambda asynchron

exports.handler = (event, context, callback) => { 
    var aws = require('aws-sdk'); 
    var lambda = new aws.Lambda({ 
     region: 'myregion' //change to your region 
    }); 
    console.log("lambda invoke started"); 
    lambda.invoke({ 
     FunctionName: 'testLambda', 
     Payload: JSON.stringify(event, null, 2) // pass params 
    }, function (error, data) { 
     if (error) { 
      console.log("error"); 
      callback(null, 'hello world'); 
     } 
     else { 
      console.log("lambda invoke end"); 
      callback(null, 'hello world'); 
     } 
    }); 
} 

Aber in meinem Fall ist "testLambda" eine Zeit genommene Funktion. Weil ich gleich nach dem Aufruf der 'testLambda'-Funktion beenden muss. Dann wird der Code wie folgt aktualisiert

exports.handler = (event, context, callback) => { 
    var aws = require('aws-sdk'); 
    var lambda = new aws.Lambda({ 
     region: 'myregion' //change to your region 
    }); 
    console.log("lambda invoke started"); 
    lambda.invoke({ 
     FunctionName: 'testLambda', 
     Payload: JSON.stringify(event, null, 2) // pass params 
    }); 
    console.log("lambda invoke end"); 
    callback(null, 'hello world'); 
} 

es gibt die Nachricht korrekt zurück. Aber meine "testLambda" -Funktion wird nicht aufgerufen (es werden keine Cloud-Watch-Protokolle für das Test-Lambda generiert). Welches Problem hängt mit diesem Code zusammen?

Antwort

5

Wenn Sie sich die Zeit nehmen, the documentation zu lesen, werden Sie sehen, dass die Lambda-Funktion standardmäßig mit dem Aufruf-Typ RequestResponse aufgerufen wird. Um die Funktion asynchron aufzurufen, müssen Sie den Aufruftyp Event wie folgt eingeben:

+0

Danksagung. es funktioniert. –