2017-01-24 3 views
1

J'essaie d'obtenir une application Rails hébergée sur Heroku et utilisant actuellement Heroku-Postges pour utiliser à la place une instance d'AWS/RDS comme datastore. Le problème est que l'application rails ne semble pas pouvoir obtenir une connexion et elle se bloque à chaque fois qu'elle parle à la base de données.L'application Rails sur Heroku ne peut pas se connecter à RDS

Je conclus à la lecture de quelques articles à ce sujet que la façon de pointer Heroku à sa base de données est avec un DATABASE_URL param sous la forme postgres://[dbuser]:[dbpass]@[subhost].amazonaws.com:5432/[dbname].

Est-ce ainsi que ça fonctionne? Je suis confus au sujet de la façon dont il remplace les valeurs database.yml.

J'ai également essayé les instructions suivantes concernant le téléchargement d'un certificat et son stockage dans le dossier config/ca, puis l'ajout de ?sslca=config/ca/rds-ssl-ca-cert.pem&sslmode=require&encrypt=true.

Je suis capable de me connecter directement à l'instance RDS à l'aide de PGAdmin, donc je sais que c'est opérationnel, fonctionnel et accessible.

Y a-t-il un autre moyen de savoir ce qui se passe ici?

+0

Assurez-vous de consulter votre liste blanche RDS si vous utilisez la liste blanche IP. Aussi: exécutez la commande 'heroku logs' dans votre terminal pour voir quels sont les journaux que Heroku envoie, et collez-les dans votre question ci-dessus. Cela nous donnera un peu plus d'informations dont nous avons besoin pour aider! – rdegges

Répondre

2

Vous n'avez pas besoin de jouer avec vos valeurs database.yml sur Heroku.

Mais je suppose que vous avez déjà vu ce tutoriel sur Heroku: Authorizing to RDS; Vous devez configurer les groupes de sécurité pour que le RDS accepte le trafic entrant provenant de toutes les adresses IP. Après l'avoir ouvert à toutes les adresses IP, vous devez également limiter le RDS pour accepter uniquement SSL comme le suggère l'article.

Plus d'informations pour chaque type de RDS (Mysql, Postgres, par exemple) peuvent être trouvées au AWS docs.

+0

Donc vous pensez peut-être que c'est bloquer l'adresse IP heroku par défaut, mais en laissant mes FAI? – pseudopeach

+0

Comment vous connectez-vous à RDS (à partir de votre machine)? Via un bastion? –

+0

Vous aviez raison, c'était l'AWS filtrant l'IP en quelque sorte. Je ne comprends toujours pas pourquoi ça me convient de me connecter à partir de mon IP maison aléatoire. Il est également assez imprévisible pour moi comment vous devez aller dans la section EC2 d'AWS pour éventuellement ajuster les paramètres de votre instance RDS. De plus, cette partie est un peu passée sous silence dans l'article d'heroku. Mais une fois que j'ai changé ça, ça a marché comme un charme. – pseudopeach