1

I'm trying to connect to my Aurora Serverless MySQL DB cluster using the mysql module, but my connection always times out.

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();

My cluster doesn't have a public IP address so I'm trying to use the endpoint. I've successfully connected to the db using Cloud9, but I can't connect using node. I must be missing something.

4

1 回答 1

0

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。您可以解决EFS 中的限制,并且可以对 Aurora Serverless 使用相同的解决方法,但是您需要完全禁用运行状况检查,因为这些运行状况检查连接会使实例始终保持活动状态。将数据库暴露在 Internet 上是最好避免的做法。

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

于 2018-10-16T19:08:05.930 回答