无法从SQL客户端连接Amazon Aurora Serverless

时间:2019-08-26 15:30:02

标签: amazon-rds-aurora aurora aws-aurora-serverless

今天,我在us-west-2中为PostGreSql创建了Amazon Aurora Serverless集群,确保了VPC和安全组位于 这样,它应该可以公开访问。但是我无法使用Navicat / PgAdmin4桌面客户端中的aurora端点连接该群集。然后,我从与Aurora Serverless相同的安全组/ vpc中的EC2实例进行尝试,然后它起作用了。

从AWS论坛

  

您不能为Aurora Serverless数据库集群提供公共IP地址。   您可以从内部访问Aurora Serverless数据库集群only。   基于Amazon VPC服务的虚拟私有云(VPC)

来源: https://forums.aws.amazon.com/thread.jspa?messageID=862860&tstart=0

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

所以现在基本上我的问题是,

是否有解决方法将Aurora Serverless与Navicat或PgAdmin4之类的任何客户端连接?

2 个答案:

答案 0 :(得分:1)

我发现了一个很酷的hack,它可以进行一些调整,非常适合我的开发目的,而且我知道在我的生产环境中不需要此功能。

因此,我们知道Aurora Serverless仅在VPC内部工作。因此,请确保您尝试连接到VPC内的Aurora,并且分配给Aurora群集的安全组具有允许访问的适当规则。如前所述,我已经拥有一个EC2实例,Aurora Serverless和两个VPC。因此,我可以从EC2访问它,但不能从本地PC /本地sql客户端访问它。要解决此问题,请执行以下两个步骤。

1。要从任何客户端(在我的情况下为Navicat)进行访问,

a。首先需要添加 GENERAL 数据库配置,例如aurora终结点主机,用户名,密码等。 b。然后,需要添加 SSH 配置,例如EC2计算机用户名,hostip和.pem文件路径

enter image description here

enter image description here

2。要从项目访问,

首先,我像这样在终端上创建一个 ssh隧道

ssh ubuntu@my_ec2_ip_goes_here -i rnd-vrs.pem -L 5555:database-1.my_aurora_cluster_url_goes_here.us-west-2.rds.amazonaws.com:5432

然后像这样 test.php

$conn = pg_connect("host=127.0.0.1 port=5555 dbname=postgres user=postgres password=password_goes_here");

// other code goes here to get data from your database
if (!$conn) {
    echo "An error occurred.\n";
    exit;
}

$result = pg_query($conn, "SELECT * FROM brands");
if (!$result) {
    echo "An error occurred.\n";
    exit;
}

while ($row = pg_fetch_row($result)) {
    echo "Brand Id: $row[0]  Brand Name: $row[1]";
    echo "<br />\n";
}

答案 1 :(得分:0)

针对多个AWS服务反复出现此问题(默认情况下,大多数新服务仅是VPC)。简短的答案是-您可以破解某些东西并将数据库暴露在VPC之外,但是不建议在生产设置中使用它。假设这是针对开发人员设置的,请务必尝试[1]中的建议。它是用于海王星的,但是您可以为Aurora做完全相同的事情。

[1] Connect to Neptune on AWS from local machine