ローカル環境からプライベートサブネットにあるRDSに接続する方法です。
RDSのエンドポイントで接続することが推奨されているので、その手順を作成しようと思ったのですが、設定不要でした。
でも、気になっていたことを書いていきます。
以下、Amazon RDSの環境です
・プライベートサブネット
・パブリックアクセスなし
・マルチAZ
・SQL Server 2019 Standard Edition
※MYSQLや他のDBでも同じですが、今回はSQL Serverで確認
ローカル環境はAWS Direct ConnectでAWSのVPCと接続されています。
以下、接続のイメージです。
[参考(AWS公式サイト)]
VPC の DB インスタンスにアクセスするシナリオ - Amazon Relational Database Service
RDSがプライベートサブネットにあって、パブリックアクセスなしでRDSのエンドポイントが指定できるのか?という疑問がありました。
結果、特に何も設定せずにできました。
一部隠していますが、赤枠がRDSのエンドポイントです。
「s-rds-test.c9XXXXXXXXXX.ap-northeast-1.rds.amazonaws.com」
以下がRDSのプライベートIPです
「193.168.20.133」
nslookupでIPを逆引きするとできました!!(特に設定はしていない)
# nslookup RDSのエンドポイント
※AWS Direct Connectが接続してない環境でも逆引きできます
長くなりましたが、
RDSのエンドポイントで接続することが推奨されているので、その手順となります。
設定は。。特に何も必要ないです。
なので、確認のみになります。
3、ローカルから接続確認
① SSMSから接続確認
サーバー名に「s-rds-test.c9XXXXXXXXXX.ap-northeast-1.rds.amazonaws.com」を入力し、「接続」ボタンをクリック
② ODBCから接続する方法
Serverに「s-rds-test.c9XXXXXXXXXX.ap-northeast-1.rds.amazonaws.com」を入力し、「完了」ボタンをクリック
以上になります。
個人的に思ったこと
「ローカル環境からプライベートサブネットにあるRDSに接続する方法」をネットで検索してみたのですが、あまりヒットしませんでした。
今となれば「RDSのエンドポイントで接続する」のが当たり前で設定も不要なので、誰も詳しい記事にしていなかったのだと思いました。
私も特に何も考えずパブリックサブネットにあるRDSはエンドポイントで接続していたので。。
RDSのパブリックアクセス有無の設定は「ネットワークインターフェース」にパブリックIPを付与するしないだけで。
サブネットはどっち(パブリック、プライベート)にあるかだけで。
どんな設定にしてもRDSのエンドポイントはDNSで逆引きできるので、RDSに接続できる環境ならばRDSのエンドポイントで接続できるってことなんですかね。
プライベートにあるインスタンスはなんとなくDNSで逆引きできないのかな?と思っていましたが、気のせいでした。。