53 votes

Impossible de se connecter à l'instance publique postgresql rds

J'ai créé une instance RDS PostgreSQL de test de base dans un VPC qui a un seul sous-réseau public et qui devrait être disponible pour se connecter sur l'internet public. Elle utilise le groupe de sécurité par défaut, qui est ouvert pour le port 5432. Lorsque j'essaie de me connecter, l'opération échoue. Je dois manquer quelque chose de très simple, mais je suis assez perdu.

Voici les paramètres de la base de données, notez qu'elle est marquée en tant que Publicly Accessible : RDS Settings

Voici les paramètres du groupe de sécurité, notez qu'il est largement ouvert (ce qui est confirmé dans les paramètres RDS ci-dessus par l'indication verte "autorisé" à côté du point de terminaison) : Security Group settings

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 lorsque j'essaie de me connecter à partir d'un MacBook Pro Yosemite (notez qu'il se résout à 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 à des instances PostgreSQL publiques sur d'autres fournisseurs (par exemple Heroku).

Tout conseil de dépannage serait très apprécié, car je ne sais plus où j'en suis.

Mise à jour

Par commentaire, voici les règles ACL entrantes pour le VPC par défaut : Network ACL configuration

65voto

Alex Volkov Points 306

Le problème était que la règle de réception dans le groupe de sécurité spécifiait un groupe de sécurité comme source. En la remplaçant par un CIDR incluant mon adresse IP, le problème a été résolu.

Ouvrez le groupe de sécurité de la base de données dans AWS et choisissez "Edit inbound rules" ; "Add rule". Le menu déroulant comporte une option "My IP" ; sélectionnez cette option pour que l'adresse IP publique de votre ordinateur en notation CIDR s'inscrive automatiquement dans la liste. edit security group, edit its inbound rules, add a rule, choose "My IP" option in the "Source" column

18voto

Miguel Mota Points 331

J'ai été confronté à un problème similaire, et voici comment je l'ai résolu :

Cliquez sur le groupe de sécurité de l'instance RDS et vérifiez les règles d'entrée. Vous verrez peut-être quelque chose comme ceci :

enter image description here

Vous devez définir la plage d'IP pour qu'elle contienne votre IP ou simplement sélectionner "N'importe où" dans le menu déroulant Source, pour qu'elle soit accessible à partir de localhost ou de n'importe où :

enter image description here

8voto

Abhash Kumar Points 151

J'ai eu le même problème en me connectant à postgres. Même si j'avais un accès public vrai, je n'ai pas pu me connecter.

J'ai ajouté une règle d'entrée dans le groupe de sécurité et cela fonctionne parfaitement.

enter image description here

1voto

Je voulais juste ajouter mes conclusions pour faire gagner du temps à quelqu'un. La solution décrite ci-dessus a fonctionné sur une instance dev ec2 mais après avoir migré sur un nouveau serveur, elle a cessé de fonctionner. Il s'est avéré que mon instance RDS et mon instance EC2 se trouvaient dans le même VPC, de sorte que l'instance RDS ne pouvait pas voir l'IP publique que j'avais ajoutée à son groupe de sécurité. Pour que cela fonctionne, il faut ajouter au groupe de sécurité de l'instance RDS, l'IP privée de l'instance EC2 que vous pouvez trouver dans les détails.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X