web-dev-qa-db-fra.com

impossible de se connecter à l'instance publique postgresql rds

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 AccessibleRDS Settings

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): 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 c'est le résultat que j'obtiens en essayant de me connecter à partir d'un Yosemite MacBook Pro (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: Network ACL configuration

27
Edward Q. Bridges

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.

Ouvrez le groupe de sécurité de base de données dans AWS; et choisissez "Modifier les règles entrantes"; "Ajouter une règle". Il y a une option "Mon IP" dans le menu déroulant; sélectionnez cette option pour remplir automatiquement l'adresse IP publique de votre ordinateur en notation CIDR edit security group, edit its inbound rules, add a rule, choose "My IP" option in the "Source" column

34
Edward Q. Bridges

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:

enter image description here

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ù:

enter image description here

16
Miguel Mota

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.

enter image description here

2
Abhash Kumar

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.

1
Muhammed Bilal Iqbal