无法将部署在AWS Lambda上的节点js express API连接到AWS RDS(My SQL)

问题描述 投票:0回答:1

我在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秒后超时”

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

node.js aws-lambda amazon-rds
1个回答
0
投票

确保RDS和Lambda位于同一安全组中,并且您的lambda具有所需的权限

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

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

如果您的功能需要对不能通过AWS API或Internet访问的关系数据库等资源进行网络访问,请将其配置为连接到您的VPC。

© www.soinside.com 2019 - 2024. All rights reserved.