Когда я пытаюсь подключиться к экземпляру базы данных PostgreSQL, которую я создал в соответствии с руководством AWS «Создание и подключение к базе данных PostgreSQL с помощью Amazon RDS», расположенным здесь (https://aws.amazon.com/getting- start/tutorials/create-connect-postgresql-db/), я получаю сообщение об ошибке:
[08001] Попытка подключения не удалась. java.net.SocketTimeoutException: время ожидания подключения истекло.
База данных настроена на разрешение входящего и исходящего трафика на всех портах и со всех IP-адресов. Я совершенно не понимаю, как заставить это работать, и обратился в службу поддержки AWS за их вкладом, но пока все, что я сделал, это следовал указаниям, предписанным руководством AWS, но безрезультатно.
Кто-нибудь знает, в чем может быть проблема?
Обновлено: я должен упомянуть, что все мои URL-адрес хоста, номер порта, имя базы данных и т. д. были правильно введены в DataGrip, поэтому ни одно из вышеперечисленных не является проблемой.
Спасибо, Марк. Я пытаюсь подключиться к базе данных с моей личной машины. Я проверил группу безопасности, и оказалось, что ограничений на входящий и исходящий трафик нет.
Сервер RDS настроен как общедоступный?
Это точно, да.
Есть ли в подсети, в которой находится экземпляр RDS, маршрут в/из Интернета?
Я не могу сказать, если честно. Я предполагаю, что это будет выглядеть примерно как «0.0.0.0/16».
Ладно, я разобрался.
Во-первых, @Mark B был прав - проблема заключалась в том, что я еще не сделал саму базу данных общедоступной через группу безопасности VPC, членом которой она была. Для этого на экране сведений о базе данных в AWS я:
Наконец, я думаю, что забыл явно указать имя базы данных, и поэтому мои попытки ввести то, что для меня было якобы именем базы данных (то есть «база данных-1»), привели к ошибке соединения, указывающей, что «база данных-1» не существует. Итак, для простоты и простой проверки подключения к базе данных я ввел «postgres» в качестве имени базы данных в моем клиенте базы данных (в настоящее время я использую DataGrip), потому что «postgres» — это фактическое имя базы данных postgreSQL.
И это должно работать. Я уверен, что все это не представляет никакой сложности для тех, кто более опытен в AWS, но это новое для меня и, предположительно, для многих других.
Еще раз спасибо, @Mark B, за то, что направил меня по правильному пути.
Тайм-аут подключения почти всегда является проблемой сетевого подключения. Вы пытаетесь подключиться из VPC, в котором находится экземпляр RDS, или извне? Правильно ли вы открыли группу безопасности?