node.jsamazon-web-servicesaws-lambdards

AWS Lambda RDS connection timeout


I'm trying to write a Lambda function using Node.js which connects to my RDS database. The database is working and accessible from my Elastic Beanstalk environment. When I run the function, it returns a timeout error.

Tried to increase the timeout up to 5 minutes with the exact same result.

The conclusion I came to after some research is that it's probably a security issue but couldn't find the solution in Amazon's documentation or in this answer (which is the only one I could find on the topic).

Here are the security details:

My code is:

'use strict';
console.log("Loading getContacts function");

var AWS = require('aws-sdk');
var mysql = require('mysql');

exports.handler = (event, context, callback) => {

   var connection = mysql.createConnection({
        host     : '...',
        user     : '...',
        password : '...',
        port     : 3306,
        database: 'ebdb',
        debug    :  false
    });

    connection.connect(function(err) {
      if (err) callback(null, 'error ' +err);
      else callback(null, 'Success');
    });

};

The result I'm getting is:

"errorMessage": "2017-03-05T05:57:46.851Z 9ae64c49-0168-11e7-b49a-a1e77ae6f56c Task timed out after 10.00 seconds"

Solution

  • I want to thank everyone who helped, the problem turned out to be different than I thought. The callback in the code doesn't work for some reason even though it's in AMAZON'S OWN DEFAULT SAMPLE.

    The working code looks like this:

    'use strict';
    console.log("Loading getContacts function");
    
    var AWS = require('aws-sdk');
    var mysql = require('mysql');
    
    exports.handler = (event, context) => {
    
       var connection = mysql.createConnection({
            host     : '...',
            user     : '...',
            password : '...',
            port     : 3306,
            database: 'ebdb',
            debug    :  false
        });
    
        connection.connect(function(err) {
          if (err) context.fail();
          else context.succeed('Success');
        });
    
    };