无法将AWS Lamda上部署的Node js Express API连接到AWS RDS(My SQL)

时间:2019-04-04 12:29:58

标签: node.js aws-lambda amazon-rds

我在AWS Lamda上部署了我的node js express应用程序,并且能够使用我的API路由器方法(例如get,post等)。但是当我尝试从Amazon RDS获取数据时,它在浏览器控制台中返回502错误,并且没有DB调用该API会很好地返回硬编码的响应。 我尝试在初始阶段连接我的API,并使用以下代码

var mysql = require('mysql');
    var pool = mysql.createPool({
    host: 'rds end point',
    user: 'xxxx',
    password: 'xxxx',
    database: 'TestDb'
});

exports.handler = (event, context,callback) => { 
    context.callbackWaitForEmptyEventLoop=false;
    pool.getConnection(function(err,connection) {
        connection.query("select count(*) as count from Classes", function(error,result,fields) {
            connection.release();
            if(error) callback(error);
            else callback(null,result[0].count)
        })
    })
}

在LAMDA控制台日志中,我的错误率低于计数而不是计数

  

“ errorMessage”:“ 2019-04-04T12:06:39.020Z 7ffa5ee4-4000-4254-82fc-27617eb9975a任务在5.01秒后超时”

有人在这个问题上帮助我吗?

1 个答案:

答案 0 :(得分:0)

确保RDS和Lambda在同一个安全组中,并且您的Lambda具有必需的权限

  • AmazonRDSFullAccess
  • AWSLambdaFullAccess
  • AmazonVPCFullAccess
  • AWSLambdaExecute
  • AWSLambdaVPCAccessExecutionRole。
  • AWSLambdaVPCAccessExecutionRole

如果它在VPC中,请创建一个新的VPC安全组(用于lambda函数)。并为VPC添加接受所有流量的入站规则

  

如果您的职能需要通过网络访问诸如关系型之类的资源   无法通过AWS API或互联网访问的数据库,   配置它以连接到您的VPC。