2017-02-23 3 views
1

Ich habe 2 Lambda-Funktionen in AWS.AWS synchrone Lambda zu Lambda-Aufruf mit Nodejs

Die Funktion A (FA) versucht, die Funktion B (FB) synchron aufzurufen. Wenn FA versucht, FB aufzurufen, wird FA Timeout. FA erreicht niemals die Callback-Methode innerhalb von FA, und der FB hat keine Cloudwatch-Protokolle, um zu sagen, dass er aufgerufen wurde.

Ich habe beide Funktionen eingerichtet, um innerhalb der gleichen Region, die gleiche Rolle, und keine VPC (wie ich die VPC lesen kann Probleme verursachen, aber habe versucht, unter den gleichen VPC und Subnetz-Einstellungen als auch ohne Glück

)

Die Benutzerrolle hat die folgenden Berechtigungen zugeordnet

  • AWSLambdaExecute
  • AWSLambdaBasicExecutionRole
  • AWSLambdaRole

Funciton A

exports.handler = (event, context, callback) => { 
    var aws = require('aws-sdk'); 
    var lambda = new aws.Lambda({ 
     region: 'ap-southeast-2' 
    }); 


    lambda.invoke({ 
     FunctionName: 'async-receiver-test' 
    }, function(error, data) { 
     console.log('inside return function'); 
     if (error) { 
     context.done('error', error); 
     } 
     if(data.Payload){ 
     context.succeed(data.Payload); 
     } 
    }); 
}; 

Funktion B - (name => Asynchron-Empfänger-Test)

exports.handler = (event, context, callback) => { 
    var eventItem = {id : 53148, name : "Let's get testing"}; 
    callback(null, eventItem); 
}; 

Lauf eine Funktion innerhalb der Konsole

REPORT RequestId zurück: 2db82333-f9c3- 11e6-8160-93bd7ddf5b19 Dauer: 3000,43 ms Abgelaufene Dauer: 3000 ms Speichergröße: 128 MB Maximal belegter Speicher: 25 MB
2017-02-23T12: 25: 39.363Z 2db82333-f9c3-11e6-8160-93bd7d df5b19 Task-Zeitüberschreitung nach 3,00 Sekunden

Lauffunktion B in der Konsole (Dauer: 14,36 ms)

{ "id": 53148, "name": "Lassen Sie uns testen" }

Es ist also kein Problem mit FB von dem, was ich sagen kann, aber aus irgendeinem Grund gibt es keine Antwort, wenn von FA aufgerufen.

Antwort

0

Es stellt sich also heraus, dass durch das Erhöhen des Timeouts auf FA auf 10 Sekunden der Aufruf funktioniert. Ich hätte nie gedacht, dass FA etwas länger brauchen würde als das Standard-Timeout, um den FB aufzurufen, der 2 ms zum Ausführen benötigt hat. Es erforderte jedoch nur eine längere Zeitüberschreitung für den ersten Anruf, da es die 3 Sekunden dauerte, um zu laufen, alle nachfolgenden Anrufe liefen im Bereich von 100 ms.

haben aber ein Problem, wenn ich die VPC-Einstellungen zurück in hinzufügen, aber jetzt weiß ich, dass invoke funktioniert kann ich dieses Problem lösen, die ich glaube hier wurde gelöst

https://stackoverflow.com/a/39206646/564957