AWS Lambda node.js timeout al intentar acceder a DynamoDB

Me enfrento a uno de estos AWS Lambda node.js timeout al intentar acceder a problemas de DynamoDB pero los síntomas parecen diferentes y las soluciones que encontré no solucionan este problema.

El tiempo de espera se establece en 5 minutos, la memoria se establece en 128 MB pero no excede el uso de 30 MB.
Las políticas de IAM para el rol son:

  • AWSLambdaFullAccess
  • AmazonDynamoDBFullAccess
  • AWSLambdaVPCAccessExecutionRole

La VPC predeterminada tiene 7 grupos de seguridad e incluye el grupo de seguridad predeterminado con:

  • Entrante: Todo el tráfico, Todo el protocolo, Todo el rango de puertos,
  • Saliente: Todo el tráfico, Todo el protocolo, Todo el rango de puertos, 0.0.0.0/0

Aquí está el código :

var aws = require('aws-sdk'); exports.handler = function(event, context) { var dynamo = new aws.DynamoDB(); dynamo.listTables(function(err, data) { if (err) { context.fail('Failed miserably:' + err.stack); } else { context.succeed('Function Finished! Data :' + data.TableNames); } }); }; 

Y el resultado:

 START RequestId: 5d2a0294-fb6d-11e6-989a-edaa5cb75cba Version: $LATEST END RequestId: 5d2a0294-fb6d-11e6-989a-edaa5cb75cba REPORT RequestId: 5d2a0294-fb6d-11e6-989a-edaa5cb75cba Duration: 300000.91 ms Billed Duration: 300000 ms Memory Size: 128 MB Max Memory Used: 21 MB 2017-02-25T15:21:21.778Z 5d2a0294-fb6d-11e6-989a-edaa5cb75cba Task timed out after 300.00 seconds 

El problema relacionado con la versión de node.js resuelto aquí no funciona para mí y devuelve un "ReferenceError: https is not defined at exports.handler (/var/task/index.js:6:16)" . También AWS ha desaprobado la versión 0.10.
Aquí está el código con la referencia https:

 var aws = require('aws-sdk'); exports.handler = function(event, context) { var dynamo = new aws.DynamoDB({ httpOptions: { agent: new https.Agent({ rejectUnauthorized: true, secureProtocol: "TLSv1_method", ciphers: "ALL" }) } }); dynamo.listTables(function(err, data) { if (err) { context.fail('Failed miserably:' + err.stack); } else { context.succeed('Function Finished! Data :' + data.TableNames); } }); }; 

Resultado :

 START RequestId: 6dfd3db7-fae0-11e6-ba81-a52f5fc3c3eb Version: $LATEST 2017-02-24T22:27:31.010Z 6dfd3db7-fae0-11e6-ba81-a52f5fc3c3eb ReferenceError: https is not defined at exports.handler (/var/task/index.js:6:16) END RequestId: 6dfd3db7-fae0-11e6-ba81-a52f5fc3c3eb REPORT RequestId: 6dfd3db7-fae0-11e6-ba81-a52f5fc3c3eb Duration: 81.00 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 26 MB RequestId: 6dfd3db7-fae0-11e6-ba81-a52f5fc3c3eb Process exited before completing request 

Con un tiempo de espera establecido en 5 minutos, no puedo creer que AWS no pueda devolver la lista de tablas en el período de tiempo asignado y que los problemas de permisos suelen aparecer en los registros.

Gracias por mirar en esto.

Supongo que tu Lambda está en una subred privada. En este caso, de forma predeterminada, su Lambda no tendrá acceso a Internet saliente. Debe crear una puerta de enlace NAT o una instancia de NAT para permitir que los recursos protegidos de VPC accedan fuera de Internet. DynamoDB API está fuera de Internet desde el punto de vista de VPC.