与mysql的连接在本地可以正常运行,但不能作为AWS Lambda函数使用

时间:2019-07-19 17:54:23

标签: mysql amazon-web-services rdb

我创建了一个简单的mySQL数据库,试图通过AWS Lambda函数访问数据。

这是在本地正常运行的代码版本:

ffff00

这是转换为可与AWS Lambda一起使用的代码:

var mysql = require('mysql');
var config = require('./config.json');
var pool  = mysql.createPool({
    host     : config.dbhost,
    user     : config.dbuser,
    password : config.dbpassword,
    database : config.dbname
});


pool.getConnection(function(err, connection) {
    // Use the connection
    connection.query("SELECT username FROM ClimbingDB.users WHERE email = 'testemail1'", function (error, results, fields) {
    // And done with the connection.
    connection.release();
    // Handle error after the release.
    if (error) throw error;
    console.log(results);

    process.exit();
  });
});

由于以下错误消息而超时: {   “ errorMessage”:“ 2019-07-19T17:49:04.110Z 2f3e208c-62a6-4e90-b8ec-29398780a2a6任务在3.00秒后超时” }

我不确定为什么它似乎无法连接。我尝试将功能添加到可以访问RDB的vpc和安全组中,而这两个都不起作用。我不确定我在做什么错。

1 个答案:

答案 0 :(得分:0)

您将需要:

  • 与Rau Lambda函数位于同一VPC 中的Amazon RDS实例
  • 关于Lambda函数的安全组firstline secondline thirdline
  • RDS实例上的安全组Lambda-SG)允许来自DB-SG的端口3306上的入站连接

也就是说,Lambda-SG应该特别引用DB-SG(它将变成格式为Lambda-SG的安全组ID)。

您可能还希望增加Lambda函数的超时时间,以使其有更多的运行时间。