Не удается подключить Amazon Aurora Serverless из клиента SQL

Сегодня я создал кластер Amazon Aurora Serverless для PostGreSql в us-west-2, обеспечив VPC и группы безопасности таким образом, чтобы он был общедоступным. Но я не могу подключить этот кластер с помощью конечной точки aurora из моего настольного клиента Navicat/PgAdmin4. Затем я попытался из экземпляра EC2, которые находятся в той же группе безопасности / vpc, что и Aurora Serverless, тогда это сработало.

От AWS Froum,

Вы не можете дать Аврору Serverless БД кластера публичный IP-адрес. Вы можете получить доступ к Авроре Serverless Кластер БД only из виртуального частного облака (VPC) на основе сервиса Amazon VPC.

Источник: https://forums.aws.amazon.com/thread.jspa?messageID=862860&tstart=0

Кажется, он использует внутреннюю сетевую настройку AWS, которая в настоящее время поддерживает только соединения внутри VPC, и это должен быть тот же VPC, где развернут безсерверный кластер.

Итак, теперь мой вопрос в том,

Есть ли способ обойти Aurora Serverless с любым клиентом, таким как Navicat или PgAdmin4?

1 ответ

Я нашел классный хак, который отлично работает для моей разработки с некоторыми настройками, и я знаю, что мне это не нужно в моей производственной среде.

Итак, как мы знаем, Aurora Serverless работает только внутри VPC. Поэтому убедитесь, что вы пытаетесь подключиться к Aurora в VPC, а группа безопасности, назначенная кластеру Aurora, имеет соответствующие правила, разрешающие доступ. Как я уже упоминал ранее, у меня уже есть экземпляр EC2, Aurora Serverless и VPC вокруг обоих. Таким образом, я могу получить к нему доступ с моего EC2, но не с моего локального ПК / локального клиента sql. Чтобы исправить это, я сделал два следующих шага.

1. Для доступа с любого клиента (в моем случае - Navicat),

а. Сначала необходимо добавить ОБЩИЕ конфигурации базы данных, такие как хост конечной точки aurora, имя пользователя, пароль и т. Д. B. Затем необходимо добавить конфигурацию 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

Затем запустите мой проект с конфигурацией db, например, 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";
}

Этот вопрос возникает снова и снова для нескольких сервисов AWS (большинство новых - VPC только по умолчанию). Короткий ответ - вы можете что-то взломать и выставить БД вне VPC, но это не рекомендуется для производственной установки. Предполагая, что это для настройки dev, непременно попробуйте рекомендации из [1]. Это для Нептуна, но вы можете сделать то же самое для Авроры.

[1] Подключитесь к Neptune на AWS с локального компьютера.

Другие вопросы по тегам