Networking
無法連接到公共 postgresql rds 實例
我在一個 VPC 中創建了一個基本的測試 PostgreSQL RDS 實例,該實例具有一個公共子網並且應該可以通過公共 Internet 進行連接。它使用預設安全組,該安全組對埠 5432 開放。當我嘗試連接時,它失敗了。我一定遺漏了一些非常簡單的東西——但我對此很迷茫。
這是數據庫設置,請注意它被標記為
Publicly Accessible
:這是安全組設置,請注意它是完全開放的(在上面的 RDS 設置中由端點旁邊的綠色“授權”提示確認):
這是我試圖用來連接的命令:
psql --host=myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com \ --port=5432 --username=masteruser --password --dbname=testdb
這是我嘗試從 Yosemite MacBook Pro 連接時得到的結果(注意,它解析為 54.* ip 地址):
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?
我沒有啟用任何類型的防火牆,並且能夠連接到其他提供商(例如 Heroku)上的公共 PostgreSQL 實例。
任何故障排除技巧將不勝感激,因為我在這裡幾乎不知所措。
更新
根據評論,以下是預設 VPC 的入站 ACL 規則:
問題是安全組中的入站規則將安全組指定為源。將其更改為包含我的 IP 地址的 CIDR 可解決此問題。
在AWS中打開數據庫安全組;並選擇“編輯入站規則”;“添加規則”。下拉菜單中有“我的IP”選項;選擇該選項以使用 CIDR 表示法自動填充電腦的公共 IP 地址
面臨類似的問題,這就是我解決它的方法:
點擊 RDS 實例的安全組並檢查入站規則。您可能會看到如下內容:
必須設置 IP 範圍以包含您的 IP,或者只需在 Source 下拉列表中選擇“Anywhere”,以使其可以從 localhost 或任何地方訪問: