【问题标题】:Connecting to Aurora MySQL Serverless with Node使用 Node 连接到 Aurora MySQL Serverless
【发布时间】:2019-03-20 08:47:23
【问题描述】:

我正在尝试使用 mysql 模块连接到我的 Aurora Serverless MySQL 数据库集群,但我的连接总是超时。

const mysql = require('mysql');

//create connection
const db = mysql.createConnection({

    host     : 'database endpoint',
    user     : 'root',
    password : 'pass',
    database : 'testdb'

});


//connect
db.connect((err) => {
    if(err){
        throw err;
        console.log('connection failed');
    }
    console.log('mysql connected...');
})
db.end();

我的集群没有公共 IP 地址,因此我正在尝试使用端点。我已经使用 Cloud9 成功连接到数据库,但我无法使用节点连接。我一定是错过了什么。

【问题讨论】:

  • 这段代码在哪里运行?在 EC2/Lambda 内部?
  • 不是,应该是吗?我对整个 AWS 非常陌生。我是否需要使用 EC2/Lambda 与数据库进行交互,而不是将其视为普通的 MySQL 数据库?

标签: mysql amazon-web-services aws-serverless amazon-aurora


【解决方案1】:

Aurora Serverless 使用内部 AWS 网络设置,目前仅支持来自 VPC 内部的连接,并且它必须与部署无服务器集群的 VPC 相同。

问:如何连接到 Aurora Serverless 数据库集群?

您可以从在同一 Amazon Virtual Private Cloud (VPC) 中运行的客户端应用程序访问 Aurora Serverless 数据库集群。您不能为 Aurora Serverless 数据库集群提供公共 IP 地址。

https://aws.amazon.com/rds/aurora/faqs/#serverless

同样的限制也适用于 Amazon EFS,因为在架构上类似的原因。您可以work around EFS 中的限制,同样的解决方法可以用于 Aurora Serverless,但您需要完全禁用健康检查,因为这些健康检查连接会使实例一直保持活动状态。最好避免将数据库暴露在 Internet 上。

您也可以使用一些 VPN 解决方案。它们需要基于实例,并且可能需要使用 NAT 来伪装 VPN 实例内部地址后面的客户端地址——这实际上是上面提到的代理解决方法所做的,但在不同的 OSI 层。

【讨论】:

  • 如何从 VPC 内部进行连接?使用 mysql 模块的代码对此有用吗?我真的不明白。目前我有点乱,但最终我的目标是从脚本中获取一个字符串并将其放入数据库中。这是我第一次接触任何类型的数据库,所以我为我的无知道歉。
  • "Inside a VPC"... 简单版本:代码需要在 EC2 实例上运行。 Aurora Serverless 并非设计为可从外部访问。
猜你喜欢
  • 1970-01-01
  • 2019-04-05
  • 2021-02-05
  • 1970-01-01
  • 2019-05-13
  • 1970-01-01
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
相关资源
最近更新 更多