无服务器,连接到 AWS RDS

时间:2021-04-16 15:07:08

标签: mysql amazon-web-services serverless-framework

我正在尝试连接到 AWS RDS 数据库,但我似乎无法让我的函数尝试连接。

这是我的功能:

export const connectTest = async (event, context) => {
  let mysql = require('mysql');

  let connection = mysql.createConnection({
    host     : process.env.RDS_HOSTNAME,
    user     : process.env.RDS_USERNAME,
    password : process.env.RDS_PASSWORD,
    port     : process.env.RDS_PORT
  });

  let result = await connect(connection);

  connection.end();

  return {
    statusCode: 200,
    body: JSON.stringify({
      message: result
    })
  };
};


const connect = () => new Promise((resolve, reject) => connection => {
  connection.connect(function(err) {
    if (err) {
      reject(`Error ${err.message}`);
    }
    resolve('Connected');
  });
});

这是我运行以下命令后得到的响应:

Command: serverless invoke local --function connectTest

λ serverless invoke local --function connectTest
Serverless: DOTENV: Loading environment variables from .env:
Serverless:      - RDS_HOSTNAME
Serverless:      - RDS_USERNAME
Serverless:      - RDS_PASSWORD
Serverless:      - RDS_PORT
Serverless: Bundling with Webpack...


正如你所看到的脚本刚刚结束,我没有收到任何一条消息。

1 个答案:

答案 0 :(得分:0)

如果您想从 Lambda 函数连接到 RDS 实例(我假设这就是无服务器的意思),请在此处查看详细信息:https://docs.aws.amazon.com/lambda/latest/dg/services-rds-tutorial.html

要从代码或在您的开发机器上运行的工具(代码是 Java、JavaScript、Python 等)连接到 RDS,您需要执行以下任务:

  1. 确保 RDS 实例配置为允许公共访问。
  2. 设置入站规则,让您的开发机器的 IP 地址连接。

有关设置安全组入站规则的信息,请参阅 Controlling Access with Security Groups