オンプレ環境にあるYellowfinから、SSH接続のみが許可されたAWS環境にあるRDSへ接続したい場合があるというお話をお聞きしたので、簡単に検証してみました。
RDSの準備
今回は既存のRDS(PostgreSQL)を使用しました。
本記事中でエンドポイントはxxx.ap-northeast-1.rds.amazonaws.com、ポートは5432として記述します。
踏み台サーバの準備
踏み台サーバがすでに存在する場合は不要ですが、今回は新たに踏み台サーバ用のEC2インスタンスを起動しました。
セキュリティグループは既存のものを使用して、インバウンド接続はsshのみを許可しました。
SSHポートフォワーディングの接続
ターミナルで以下のsshコマンドを実行して接続します。
$ ssh -L 15432(ローカル側のポート):xxx.ap-northeast-1.rds.amazonaws.com(RDSのエンドポイント):5432(RDSのポート) ec2-user@xxx.xxx.xxx.xxx(踏み台サーバのグローバルIPアドレス) -i xxxxxx.pem(EC2のキーペア)
なお、Windowsの場合はTera TermなどのSSHポートフォワーディングが可能なクライアントを使用してください。
Yellowfinのデータソース設定
ローカルのYellowfinを起動し、データソースの設定を行います。
データベースホストはlocalhost、データベースポートはSSHポートフォワーディングで設定したローカル側のポート(上記の例では15432)を設定します。
SSH接続している状態で「テスト接続」をクリックすると、以下のようにローカルのYellowfinからRDSへ接続することができます。
参考にした情報
以下の記事を参考にさせていただきました。
https://dev.classmethod.jp/articles/rds-portforward/