我在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秒后超时”
有人在这个问题上帮助我吗?
答案 0 :(得分:0)
确保RDS和Lambda在同一个安全组中,并且您的Lambda具有必需的权限
如果它在VPC中,请创建一个新的VPC安全组(用于lambda函数)。并为VPC添加接受所有流量的入站规则
如果您的职能需要通过网络访问诸如关系型之类的资源 无法通过AWS API或互联网访问的数据库, 配置它以连接到您的VPC。