AWSを初めて使用し、RDSインスタンスをセットアップして初期化しようとしています。私は新しく作成したアカウントを持っているので、EC2-Classicをサポートしていません。これは(私の理解から)、RDSインスタンスmustがVPCのプライベートサブネットにデプロイされることを意味します。ただし、RDSインスタンスを作成した後、外部の世界からそれに接続するにはどうすればよいですか? VPCのパブリックサブネットから接続できることを理解しているので、アプリケーションサーバーはDBを問題なく使用できます。しかし、言いたいことは、スキーマを初期化するためにSquirrelや他のGUIクライアントを起動したり、アプリケーションの成長に応じて列やテーブルを追加したりできることです。プライベートサブネットに住む必要がある場合、どうすればいいですか?
1つの解決策(ただし、唯一の解決策ではありません!)は、要塞ホストと呼ばれるものを使用することです。要塞ホストは、パブリックサブネットにある超低電力サーバーであり、インバウンドSSH接続を許可する唯一のサーバーです。
このサーバーは完全に強化する必要があります。パラノイアのレベルによっては、このサーバーがSSH接続をリッスンしているという事実を隠すために使用できるいくつかの手法があります。たとえば、 http://www.portknocking.org/view/details を参照してください。もちろん、RDSインスタンスに接続するためだけに強化する必要はありません。
とにかく、次のようにEC2セキュリティグループルールを設定できます。
ところで、要塞ホストのプライベートIPアドレスを指定するか、要塞ホストが使用するセキュリティグループ名をリストすることにより、「要塞ホストからのみ」を実現できます。
ここから2つのオプションがあります。
オプション#1:SSH接続の一部としてローカルポート転送を設定します
たとえば、OS XまたはLinuxを使用している場合は、要塞ホストにSSH接続し、次のコマンドでローカルポート転送を設定します。
_ssh -l <bastion-Host-username> -L <local-port-you-connect-to>:<rds-private-ip>:<rds:listening-port> <bastion-Host-public-ip>
_
そして、Ubuntuベースの要塞ホストからPostgresに接続しているとしましょう。次のようになります。
_ssh -l ubuntu -L 5432:<rds-private-ip>:5432 <bastion-Host-public-ip>
_
ローカルマシンはポート_5432
_でリッスンしており、それらの接続のいずれかを_<bastion-Host-public-ip>
_に転送し、次に_5432
_上のポート_<rds-private-ip>
_に転送します
オプション#2:データベースクライアントでこの機能を探します
DBVisualizerがこれをサポートしていることを知っています。リスはわかりません。基本的に、SSHを使用してローカルポート転送を手動で設定する代わりに、SQLクライアントがこれを処理します。
これでうまくいきました。 psql client がローカルにインストールされていることを確認してください。
psql --Host=myAwsDbEndpointUrl.ciqykqusf0nv.us-west-1.rds.amazonaws.com --port=5432 --username=myUserName --password --dbname=myDbName
Awsでdbインスタンスを作成するときは、必ず以下を定義してください。
データベースが配置されているVPCのセキュリティグループも作成する必要がありました。作成後、dbインスタンスがセキュリティグループにこれを使用していることを確認してください。セキュリティグループには次のルールがあります。
inbound--> type:PostgreSQL, protocol:TCP port range:5432, source:0.0.0.0/0
outbound--> type:All Traffic, protocol:All, port range:all, destination:0.0.0.0/0