La función de invocación de AWS Lambda no siempre regresa

Estoy ejecutando una función AWS Lambda para el procesamiento de imágenes / video con Node 4.3 como tiempo de ejecución . Estoy invocando mi función desde el código de mi aplicación web con el nodo aws-sdk .

El problema es que cuando la función tarda mucho tiempo en ejecutarse (por ejemplo, 250 segundos), la callback de invocación nunca se recibe, aunque puedo ver claramente en los registros de cloudwatch de aws que la función se ejecutó correctamente. Además de eso, la función se vuelve a ejecutar al menos dos veces (esto probablemente está relacionado con el parámetro maxRetries de la invocación: ya que no recibe una respuesta, se reintenta).

Lo que me confunde es que funciona para funciones más rápidas y mi función lambda nunca se agota. ¿Alguien que tenga tal problema? ¿Se puede relacionar con el nuevo 4.3 tiempo de ejecución? Tenga en cuenta que omito el context.succeed() o context.fail() ya que no se requiere más, pero lo intenté y no cambia nada.

Codigo lambda

 ... var handler = function (event, context, callback) { // video/image processing code // // callback function ..., function(err, result) { if (err) { console.log("Error", err, err.stack); callback(err); } else { console.log("Done"); callback(null, result); } } }; 

Invocación Lambda

 var lambda = new AWS.Lambda; var myEventObject = {...}; var payload = JSON.stringify('myEventObject'); var params = { FunctionName: 'myLambdaFunction' InvocationType: 'RequestResponse', LogType: 'None', Payload: payload }; lambda.invoke(params, function(err, data) { if (err) console.log(err, err.stack); // an error occurred else console.log(data); // successful response }); 

Lambda CloudWatch Log

 REPORT RequestId: xxx Duration: 206757.82 ms Billed Duration: 206800 ms Memory Size: 1536 MB Max Memory Used: 354 MB 

como se indica en los comentarios, el aws sdk tiene su propia configuración de configuración de tiempo de espera, que se establece de forma predeterminada en 120 segundos (esta es una configuración de tiempo de espera diferente a la lambda).

en el caso actual, a medida que la lambda se ejecuta durante más tiempo este tiempo de espera, el sdk está asumiendo un fallo y disparando los rebashs.

Establecer esta configuración en 300 segundos debería resolver el problema. Como lo demostró Daniel T en el comentario, el cambio temporal se puede lograr de esta manera: var lambda = new AWS.Lambda ({httpOptions {timeout: 300000}});