0 votes
1 view
in Devops and Agile by (29k points)

I have written a simple lambda function in nodejs which queries data from amazon rds. (note: my lambda and rds are in default vpc with all ports open and also tried increasing the time out in lambda)

My issue is when I test my lambda function I get log output with the queried data but I am also getting

Execution result: failed with "errorMessage": "2017-07-05T15:05:27.425Z 596fdf39-6193-11e7-9176-f58796899f9b Task timed out after 3.00 seconds" }

var mysql = require('mysql');

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

var con = mysql.createConnection({

  host: "testdb.cxyzu.ap-south-1.rds.amazonaws.com",

  user: "root",

  password: "mypassword",

  database: "test",

  port: "3306",

 // debug: true

});

con.connect(function(err) {

  if (err) throw err;

  console.log("Connected!");

 // var sql = "INSERT INTO users (id, name) VALUES (4, 'dfdd')";

var sql = "select * from test.users";

  con.query(sql, function (err, result) {

    if (err) throw err;

//    console.log("1 record inserted");

      console.log(result);

  });

});

//callback("sucess");

}

START RequestId: 596fdf39-6193-11e7-9176-f58796899f9b Version: $LATEST

2017-07-05T15:05:24.680Z 596fdf39-6193-11e7-9176-f58796899f9b Connected!

2017-07-05T15:05:24.684Z 596fdf39-6193-11e7-9176-f58796899f9b [ RowDataPacket { id: 1, name: 'sai' },

  RowDataPacket { id: 2, name: 'chandra' },

  RowDataPacket { id: 3, name: 'AA' },

  RowDataPacket { id: 4, name: 'dfdd' } ]

END RequestId: 596fdf39-6193-11e7-9176-f58796899f9b

REPORT RequestId: 596fdf39-6193-11e7-9176-f58796899f9b Duration: 3003.80 ms Billed Duration: 3000 ms Memory Size: 1536 MB Max Memory Used: 21 MB

2017-07-05T15:05:27.425Z 596fdf39-6193-11e7-9176-f58796899f9b Task timed out after 3.00 seconds

1 Answer

0 votes
by (49.5k points)

As the error message of your code is to exit from the lambda through success or an error callback

For that the easiest way to exit that, follow the below code

var mysql = require('mysql');

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

var con = mysql.createConnection({

  host: "testdb.cxyzu.ap-south-1.rds.amazonaws.com",

  user: "root",

  password: "mypassword",

  database: "test",

  port: "3306",

 // debug: true

});

con.connect(function(err) {

  if (err) throw err;

  console.log("Connected!");

 // var sql = "INSERT INTO users (id, name) VALUES (4, 'dfdd')";

var sql = "select * from test.users";

  con.query(sql, function (err, result) {

    if (err) throw err;

//    console.log("1 record inserted");

      console.log(result);

      context.succeed("done");

  });

});

//callback("success");

}

This snippet helps engine to exit. Here you can find some basic introduction to this topic 

https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html

Want to learn more about AWS Relational Database Service? Visit Amazon RDS in AWS.

Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...