Не удается подключиться к экземпляру БД RDS PostgreSQL через прокси-сервер RDS - PullRequest
3 голосов
/ 06 августа 2020

Я пытаюсь использовать прокси RDS для объединения и совместного использования подключений, установленных с базой данных RDS с движком PostgreSQL. Проблема в том, что я могу открыть соединение с БД как через экземпляр ECS, так и через PgAdmin, однако я не могу подключиться через прокси. Чтобы попытаться установить соединение через прокси в PgAdmin, я использую конечную точку прокси, а не конечную точку БД, но время попытки подключения истекает.

Я успешно создал прокси-сервер и связался с моей БД, оба статус прокси и БД доступен. Я следил за настройкой прокси-сервера , а БД и прокси используют одну и ту же группу безопасности VP C.

Есть идеи?

enter image description here

введите описание изображения здесь

1 Ответ

4 голосов
/ 10 августа 2020

Мне кажется, что вы подключаетесь к прокси из за пределами AWS. Если это так, то его невозможно сделать это напрямую:

Ваш прокси-сервер RDS должен находиться в том же VP C, что и база данных. Прокси-сервер не может быть общедоступным , хотя база данных может быть.

Возможно, вы сможете подключиться к RDS, поскольку он общедоступен. С другой стороны, прокси-сервер RDS может иметь доступ только из одного и того же VP C, например, из экземпляра.

Поэтому решение состоит в том, чтобы настроить экземпляр в том же VP C, что и ваш RDS и прокси. Экземпляр должен быть доступен с использованием S SH.

На экземпляре вы можете запустить pgadmin4, в docker:

docker run --rm -p 8080:80 \
    -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' \
    -e 'PGADMIN_DEFAULT_PASSWORD=Fz77T8clJqJ4XQrQunGA' \
    -d dpage/pgadmin4

Команда после настройки docker, будет сервер pgadmin4 на порту 8080 экземпляра.

Вы можете проверить экземпляр, работает ли он:

curl localhost:8080

, что может дать следующее указание, что он работает:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>Redirecting...</title>
<h1>Redirecting...</h1>
<p>You should be redirected automatically to target URL: <a href="/login?next=%2F">/login?next=%2F</a>.  If not click the link

Однако, поскольку ваш экземпляр доступен только через s sh (порт 22), для доступа к нему с локальной рабочей станции вам необходимо установить sh an s sh туннель :

ssh  -i <private-key>  -L   8080:localhost:8080 -N ubuntu@<public-instance-ip> -v

В приведенном выше примере моим экземпляром был Ubuntu. Для Amazon Linux 2 пользователь будет ec2-user.

Туннель будет перенаправлять порт 8080 из экземпляра (т.е. pgadmin4) на вашу локальную рабочую станцию ​​через порт 8080.

Затем вы просто указываете в своем браузере localhost:8080, и вы должны увидеть экран приветствия pgadmin4.

PS Мои настройки RDS и прокси, используемые для проверки:

enter image description here

enter image description here

введите описание изображения здесь

...