Я создал базовый тестовый экземпляр PostgreSQL RDS в VPC, который имеет одну общедоступную подсеть и должен быть доступен для подключения через общедоступный Интернет. Он использует группу безопасности по умолчанию, которая открыта для порта 5432. Когда я пытаюсь подключиться, происходит сбой. Я, должно быть, упускаю что-то очень простое - но я довольно потерян в этом.
Вот настройки базы данных, обратите внимание, что она помечена как Publicly Accessible
:
Вот настройки группы безопасности, обратите внимание, что они широко открыты (подтверждено в настройках RDS выше зеленой подсказкой «санкционировано» рядом с конечной точкой):
Вот команда, которую я пытаюсь использовать для подключения:
psql --host=myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com \
--port=5432
--username=masteruser
--password
--dbname=testdb
И вот результат, который я получаю, когда пытаюсь подключиться с Yosemite MacBook Pro (обратите внимание, что он разрешается до 54. * IP-адрес):
psql: could not connect to server: Operation timed out
Is the server running on host "myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com" (54.xxx.xxx.xxx) and accepting
TCP/IP connections on port 5432?
У меня нет какого-либо брандмауэра, и я могу подключиться к общедоступным экземплярам PostgreSQL от других провайдеров (например, Heroku).
Буду очень признателен за любые советы по устранению неполадок, так как я в значительной степени растерялся здесь.
Обновить
В комментарии приведены правила входящего ACL для VPC по умолчанию:
источник
Ответы:
Проблема заключалась в том, что входящее правило в группе безопасности указало группу безопасности в качестве источника. Изменение его на CIDR, который включал мой IP-адрес, устранило проблему.
источник
Столкнулся с подобной проблемой, и вот как я решил ее:
Нажмите на группу безопасности для экземпляра RDS и проверьте входящие правила. Вы можете увидеть что-то вроде этого:
Необходимо указать диапазон IP-адресов, который будет содержать ваш IP-адрес, или просто выбрать «Anywhere» в раскрывающемся списке «Источник», чтобы сделать его доступным с локального хоста или из любого места:
источник
У меня была похожая проблема при подключении к postgres. Несмотря на то, что у меня был публичный доступ к истине, я не смог подключиться.
Я добавил одно правило для входящих правил в группу безопасности, и теперь оно работает отлично.
источник
Просто хотел добавить мои выводы, чтобы сэкономить время. Это решение, описанное выше, работало на экземпляре dev ec2, но после перехода на новый сервер оно перестало работать. Оказалось, что и мой экземпляр RDS, и экземпляр EC2 находились в одном и том же VPC, поэтому экземпляр RDS не мог видеть общедоступный IP-адрес, который я добавил в его группу безопасности. Чтобы это работало, вам нужно добавить в группу безопасности экземпляров RDS частный ip экземпляра EC2, который вы можете найти в деталях.
источник
После того, как я создал свой экземпляр Postgres, моя группа безопасности по умолчанию (rds-launch-wizard) указала только мой IP-адрес, поэтому мне пришлось добавить Тип всего трафика и Источник в любом месте, прежде чем я смог подключиться. Я не специалист по сетевым технологиям, но странно, что я не смог подключиться со своим собственным IP-адресом в качестве входящего правила.
источник