Saya membuat tes dasar contoh PostgreSQL RDS dalam VPC yang memiliki satu subnet publik dan yang harus tersedia untuk terhubung melalui internet publik. Ini menggunakan grup keamanan default, yang terbuka untuk port 5432. Ketika saya mencoba untuk terhubung, gagal. Saya pasti melewatkan sesuatu yang sangat mudah - tetapi saya sangat bingung dengan hal ini.
Di sini sedang pengaturan database, perhatikan bahwa itu ditandai sebagai Publicly Accessible
:
Di sini adalah pengaturan grup keamanan, catat itu terbuka lebar (ditegaskan dalam pengaturan RDS di atas oleh petunjuk "resmi" di sebelah titik akhir):
Inilah perintah yang saya coba gunakan untuk menghubungkan:
psql --host=myinstance.xxxxxxxxxx.us-east-1.rds.amazonaws.com \
--port=5432
--username=masteruser
--password
--dbname=testdb
Dan ini adalah hasil yang saya dapatkan ketika mencoba terhubung dari Yosemite MacBook Pro (catatan, itu diselesaikan ke 54. * alamat 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?
Saya tidak memiliki jenis firewall apa pun yang diaktifkan, dan saya dapat terhubung ke instance PostgreSQL publik pada penyedia lain (mis. Heroku).
Setiap tips pemecahan masalah akan sangat dihargai, karena saya cukup bingung di sini.
Memperbarui
Per komentar, berikut adalah aturan ACL masuk untuk VPC Default:
sumber
Jawaban:
Masalahnya adalah bahwa aturan masuk di Grup Keamanan menentukan grup keamanan sebagai sumber. Mengubahnya menjadi CIDR yang menyertakan alamat IP saya memperbaiki masalah tersebut.
sumber
Menghadapi masalah serupa, dan inilah cara saya mengatasinya:
Klik pada grup keamanan untuk contoh RDS dan periksa aturan masuk. Anda mungkin melihat sesuatu seperti ini:
Harus mengatur rentang IP untuk mengandung IP Anda atau cukup pilih "Di mana saja" di dropdown Sumber, agar dapat diakses dari localhost atau di mana saja:
sumber
Saya memiliki masalah serupa saat menghubungkan ke postgres. Walaupun saya memiliki akses publik yang benar, saya tidak dapat terhubung.
Saya menambahkan satu aturan aturan masuk dalam grup keamanan dan sekarang berfungsi dengan baik.
sumber
Hanya ingin menambahkan temuan saya untuk menghemat waktu seseorang. Solusi ini dijelaskan di atas bekerja pada contoh dev ec2 tetapi setelah saya pindah ke server baru berhenti bekerja. Ternyata kedua instance RDS saya dan instance EC2 berada di VPC yang sama sehingga instance RDS tidak dapat melihat IP publik yang telah saya tambahkan ke grup keamanannya. Agar ini berfungsi, Anda perlu menambahkan ke grup keamanan instance RDS, ip pribadi instance EC2 yang dapat Anda temukan secara detail.
sumber
Setelah saya membuat instance Postgres saya, grup keamanan default saya (rds-launch-wizard) hanya mencantumkan alamat IP saya, jadi saya harus menambahkan Jenis Semua Lalu Lintas dan Sumber dari Mana Saja sebelum saya dapat terhubung. Saya bukan pakar jaringan, tapi anehnya saya tidak bisa terhubung dengan alamat IP saya sendiri sebagai aturan masuk.
sumber