2017-01-24 3 views
1

Ich versuche, eine Rails-App, die auf Heroku gehostet wird und derzeit Heroku-Postges verwendet, stattdessen eine Instanz von AWS/RDS als Datenspeicher zu verwenden. Das Problem ist, dass die Rails App nicht in der Lage ist eine Verbindung zu bekommen und sie hängt einfach jedes Mal wenn sie mit der DB kommuniziert.Rails App auf Heroku Kann keine Verbindung zu RDS herstellen

Ich lese durch das Lesen ein paar Artikel darüber, dass der Weg Heroku zu seiner DB mit einem DATABASE_URL param in der Form postgres://[dbuser]:[dbpass]@[subhost].amazonaws.com:5432/[dbname] zeigen.

Funktioniert das? Ich bin verwirrt darüber, wie es die database.yml Werte überschreibt.

Ich habe auch versucht, folgende Anweisungen zu tun mit dem Herunterladen eines Zertifikats und Speichern im Ordner config/ca und dann anhängen ?sslca=config/ca/rds-ssl-ca-cert.pem&sslmode=require&encrypt=true.

Ich kann direkt mit der RDS-Instanz mit PGAdmin verbinden, also weiß ich, dass es läuft, und zugänglich ist.

Gibt es noch einen anderen Weg, um zu sehen, was hier vor sich geht?

+0

Stellen Sie sicher, dass Sie Ihre RDS-Whitelist überprüfen, wenn Sie IP-Whitelisting verwenden. Außerdem: Führen Sie den Befehl 'heroku logs' in Ihrem Terminal aus, um zu sehen, welche Protokolle Heroku ausgibt, und fügen Sie diese in Ihre Frage oben ein. Das gibt uns mehr Einblick, wir müssen helfen! – rdegges

Antwort

2

Sie müssen nicht mit Ihren database.yml Werten auf Heroku herumspielen.

Aber ich nehme an, Sie haben dieses Tutorial bereits auf Heroku gesehen: Authorizing to RDS; Sie müssen die Sicherheitsgruppen für den RDS einrichten, um eingehenden Datenverkehr von allen IPs zu akzeptieren.

Nachdem Sie es für alle IPs geöffnet haben, sollten Sie auch den RDS so beschränken, dass nur SSL akzeptiert wird, wie im Artikel vorgeschlagen.

Weitere Informationen für jeden RDS-Typ (Mysql, Postgres z. B.) finden Sie unter AWS docs.

+0

Also denkst du vielleicht, dass es die Heroku IP standardmäßig blockiert, aber meine ISPs reinlässt? – pseudopeach

+0

Wie verbinden Sie sich mit RDS (von Ihrem Computer)? Über eine Bastion? –

+0

Sie hatten Recht, es war die AWS, die irgendwie die IP filtert. Ich verstehe immer noch nicht, warum es in Ordnung ist, wenn ich von meiner zufälligen Heim-IP aus eine Verbindung herstelle. Es ist auch ziemlich unklug für mich, wie Sie in den EC2-Bereich von AWS gehen müssen, um eventuell die Einstellungen für Ihre RDS-Instanz anzupassen. Außerdem ist dieser Teil im Heroku-Artikel ein wenig beschönigt. Aber sobald ich das geändert hatte, funktionierte es wie ein Zauber. – pseudopeach

Verwandte Themen