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

Alw*_*nny 7 amazon-aurora aws-aurora-serverless

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

来自 AWS 论坛,

您无法为 AuroraServerless数据库集群提供公共 IP 地址。您可以从 基于 Amazon VPC 服务的Virtual Private Cloud (VPC)内访问 AuroraServerless数据库集群。only

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

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

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

是否有任何解决方法可以将 Aurora Serverless 与 Navicat 或 PgAdmin4 等客户端连接?

Alw*_*nny 2

我发现了一个很酷的技巧,经过一些调整,它可以完美地满足我的开发目的,而且我知道我在生产环境中不需要它。

据我们所知,Aurora Serverless 只能在 VPC 内运行。因此,请确保您尝试连接到 VPC 内的 Aurora,并且分配给 Aurora 集群的安全组具有允许访问的适当规则。正如我之前提到的,我已经拥有一个 EC2 实例、Aurora Serverless 以及围绕这两者的 VPC。所以我可以从我的 EC2 访问它,但不能从我的本地 pc/本地 sql 客户端访问它。为了解决这个问题,我做了以下两个步骤。

1. 要从任何客户端访问(在我的例子中是 Navicat),

A。首先需要添加常规数据库配置,例如 aurora 端点主机、用户名、密码等。然后,需要添加SSH配置,如 EC2 机器用户名、hostip 和 .pem 文件路径

在此输入图像描述

在此输入图像描述

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
Run Code Online (Sandbox Code Playgroud)

然后使用数据库配置运行我的项目,如下所示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";
}
Run Code Online (Sandbox Code Playgroud)