как подключить приложение DJANGO к AWS RDS, подключенному к бастиону через SSH

#python #django #amazon-web-services #amazon-ec2 #amazon-rds

Вопрос:

Есть ли способ подключить Django к частному RDS, подключенному к бастиону через SSH?

В моей текущей инфраструктуре AWS есть бастион EC2 в общедоступной подсети и две частные подсети, в которых находится база данных postgres RDS.

 DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql_psycopg2",
        "NAME": "aaaa",
        "USER": "bbbb",
        "PASSWORD": "cccc",
        "HOST": "xxx.zzz.us-east-z.rds.amazonaws.com", # RDS Endpoint
        "PORT": 5432,
    }
}
 

используя терминал, я могу подключиться по ssh к бастиону и проверить соединение с RDS, хорошо.

Теперь я хочу подключить настройки Django выше к RDS, так что:

  • я подключил свой RDS к https://dbeaver.com/ программное обеспечение (результат говорит: подключено!)
  • На стороне Джанго сейчас, когда я редактировал settings.py выше с учетными данными AWS RDS и запущенным django python manage.py runserver я получаю следующую ошибку:

django.db.utils.OperationalError: could not translate host name "xxx.zzz.us-east-z.rds.amazonaws.com" to address: nodename nor servname provided, or not known .

Я ожидал, что, поскольку программное обеспечение DBeaver подключено к моему личному RDS, я смогу подключить Django к экземпляру удаленного рабочего стола. (Я использовал этот подход с общедоступным RDS)

Есть ли что-то, чего мне не хватает при подходе?

Комментарии:

1. У меня та же проблема … вы решили эту проблему

Ответ №1:

Вам необходимо создать SSH-туннель с помощью putty или SSH-клиентов

https://www.skyverge.com/blog/how-to-set-up-an-ssh-tunnel-with-putty/

затем подключитесь к Django, используя ссылку ниже

https://gist.github.com/mhulse/1954422

Комментарии:

1. хм, я попробую замазку, но, используя DBeaver выше, если я не ошибаюсь, достигну той же цели, нет?

Ответ №2:

Это проблема с DNS. Если вы используете IP-адреса для подключения, вы, вероятно, решите эту проблему.

Но если вам нужно разрешение имен для базы данных, я бы посоветовал вам также запустить django в AWS, чтобы использовать разрешение частного dns.

Комментарии:

1. Конечная точка RDS выше-это IP-адрес базы данных, я обычно использовал его в общедоступном экземпляре раньше