2017-01-24 59 views
1

我試圖讓Heroku上託管的Rails應用程序使用Heroku-Postges,而不是使用AWS/RDS實例作爲其數據存儲區。問題在於rails應用程序似乎無法獲得連接,並且每次與數據庫進行通信時都會掛起。Heroku上的Rails應用程序無法連接到RDS

我從閱讀關於此的幾篇文章中可以得知,將Heroku指向它的DB的方式是使用DATABASE_URL參數,格式爲postgres://[dbuser]:[dbpass]@[subhost].amazonaws.com:5432/[dbname]

它是如何工作的?我很困惑它如何覆蓋database.yml值。

我也試過下面的說明,下載證書並將其存儲在config/ca文件夾中,然後追加?sslca=config/ca/rds-ssl-ca-cert.pem&sslmode=require&encrypt=true

我可以使用PGAdmin直接連接到RDS實例,所以我知道它已經啓動,正在運行並且可以訪問。

是否有任何其他方式可以看到這裏發生了什麼?

+0

如果您使用IP白名單,請確保您簽出您的RDS白名單。另外:在你的終端上運行'heroku logs'命令來查看Heroku輸出的日誌,並粘貼到你的問題上面。這會給我們更多的見解,我們需要幫助! – rdegges

回答

2

你不需要在Heroku上找到你的database.yml值。

但我想你已經在Heroku上看到了這個教程:Authorizing to RDS;您需要爲RDS設置安全組以接受來自-all-IP的傳入流量。

在打開所有IP之後,您還應該將RDS限制爲僅接受SSL,正如文章所述。

有關每種RDS類型(例如Mysql,Postgres)的更多信息,請參見AWS docs

+0

所以你認爲它可能是默認阻止heroku IP,但讓我的ISP? – pseudopeach

+0

你如何連接到RDS(從你的機器)?通過堡壘? –

+0

你說得對,它是以某種方式過濾IP的AWS。我仍然不明白爲什麼我從我的隨機家庭IP連接時沒問題。對於我來說,如何進入AWS的EC2部分以最終調整RDS實例的設置也是非常不直觀的。再加上那部分在heroku文章中有點掩蓋了。但是一旦我改變了這一點,它就像一個魅力。 – pseudopeach

相關問題