我在AWS Lamda上部署了我的节点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秒后超时”
有人在这个问题上帮助我吗?
确保RDS和Lambda位于同一安全组中,并且您的lambda具有所需的权限
如果它在VPC中创建一个新的VPC安全组(用于在lambda函数中使用)。并为您的VPC添加接受所有TRAFFIC的入站规则
如果您的功能需要对不能通过AWS API或Internet访问的关系数据库等资源进行网络访问,请将其配置为连接到您的VPC。