J'ai créé une instance de test de base PostgreSQL RDS dans un VPC qui a un seul sous-réseau public et qui devrait être disponible pour se connecter via Internet public. Il utilise le groupe de sécurité par défaut, qui est ouvert pour le port 5432. Lorsque j'essaie de me connecter, il échoue. Je dois manquer quelque chose de très simple - mais je suis assez perdu à ce sujet.
Voici les paramètres de la base de données, notez qu'il est marqué comme Publicly Accessible
:
Voici les paramètres du groupe de sécurité, notez qu'il est grand ouvert (confirmé dans les paramètres RDS ci-dessus par le conseil vert "autorisé" à côté du point de terminaison):
Voici la commande que j'essaie d'utiliser pour me connecter:
psql --host=myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com \
--port=5432
--username=masteruser
--password
--dbname=testdb
Et voici le résultat que j'obtiens en essayant de me connecter à partir d'un MacBook Pro de Yosemite (notez qu'il se résout en une adresse IP 54. *):
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?
Je n'ai aucun type de pare-feu activé et je peux me connecter aux instances publiques de PostgreSQL sur d'autres fournisseurs (par exemple Heroku).
Tout conseil de dépannage serait très apprécié, car je suis à peu près perdu ici.
Mise à jour
Par commentaire, voici les règles ACL entrantes pour le VPC par défaut:
la source
Réponses:
Le problème était que la règle entrante dans le groupe de sécurité spécifiait un groupe de sécurité comme source. Le changer en un CIDR qui comprenait mon adresse IP a résolu le problème.
la source
J'étais confronté à un problème similaire, et voici comment je l'ai résolu:
Cliquez sur le groupe de sécurité pour l'instance RDS et vérifiez les règles entrantes. Vous pourriez voir quelque chose comme ceci:
Vous devez définir la plage IP pour contenir votre adresse IP ou simplement sélectionner "N'importe où" dans la liste déroulante Source, pour la rendre accessible depuis localhost ou n'importe où:
la source
J'ai eu un problème similaire lors de la connexion à PostgreSQL. Bien que j'aie eu un accès public vrai, je n'ai pas pu me connecter.
J'ai ajouté une règle entrante de règle dans le groupe de sécurité et maintenant cela fonctionne parfaitement bien.
la source
Je voulais juste ajouter mes découvertes pour faire gagner du temps à quelqu'un. Cette solution décrite ci-dessus a fonctionné sur une instance de dev ec2 mais après avoir migré vers un nouveau serveur, elle a cessé de fonctionner. Il s'est avéré que mon instance RDS et mon instance EC2 étaient dans le même VPC, de sorte que l'instance RDS ne pouvait pas voir l'adresse IP publique que j'avais ajoutée à son groupe de sécurité. Pour que cela fonctionne, vous devez ajouter au groupe de sécurité des instances RDS, l'IP privée de l'instance EC2 que vous pouvez trouver en détail.
la source
Après avoir créé mon instance Postgres, mon groupe de sécurité par défaut (rds-launch-wizard) n'a répertorié que mon adresse IP, j'ai donc dû ajouter un type de tout le trafic et une source de n'importe où avant de pouvoir me connecter. Je ne suis pas un expert en réseau, mais il est étrange que je ne puisse pas me connecter avec ma propre adresse IP en tant que règle entrante.
la source