Elastic Beanstalkで作ったRDSにSequel Proで接続する


概要

  • Elastic Beanstalk経由で作ったRDSにSequel Proで接続する
  • EC2を踏み台にSSHポートフォワーディングを利用してアクセスする

前提

  • Elastic Beanstalkでアプリケーション作成時にEC2リモートログイン用のSSH鍵を設定している
  • Elastic Beanstalkの設定画面からRDSインスタンスを起動している

手順

必要情報を洗い出す

必要な項目 今回の場合
SSH鍵の場所 ~/.ssh/beanstalk_key
EC2のパブリックIPアドレス xx.xxx.xxx.xxx
RDSのエンドポイント xxxxxxxxxxxxxxx.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com:3306

SSHコマンドを組み立てる

  • ssh -f -N -L 3307: <RDSエンドポイント> -i <SSH鍵の場所> ec2-user@ <EC2のパブリックIPアドレス>
  • 今回の場合は下記コマンドになる
$ ssh -f -N -L 3307:xxxxxxxxxxxxxxx.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com:3306 -i ~/.ssh/beanstalk_key [email protected]
  • 上記コマンドのオプションについては下記の通り(参考)。
オプション 説明
-f SSHをバックグラウンドで実行する
-N リモートコマンドを実行しない
-L バインドするホスト、ポートとリモートホストとポートを指定する
  • なお上記コマンドを実行すると、バックグラウンドで実行されるため結果が何も表示されず不安になるが、プロセスを確認すると確かに起動していることが確認できる。
$ ps ax | grep ssh
 1001   ??  S      0:00.05 /usr/bin/ssh-agent -l
 1117   ??  Ss     0:00.03 ssh -f -N -L 3307:xxxxxxxxxxxxxxx.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com:3306 -i ~/.ssh/beanstalk_key [email protected]
 1238 s001  S+     0:00.00 grep ssh
  • 停止したい場合はプロセスをkillする
$ kill -9 1117 # 上記コマンドで確認したプロセス番号

Sequel Proでリモートログインする

  • バックグラウンドでSSHポートフォワーディングが実行されている状態で、Sequel Proで下記情報を入力する
ホスト: 127.0.0.1
ユーザ名: xxxx (自身で設定したユーザー名。Elastic Beanstalkの設定画面で確認できる。)
パスワード: xxxx (自身で設定したパスワード)
データベース名: ebdb (Elastic Beanstalk経由で作成した場合のデフォルト値)
ポート: 3307

  • 「接続」ボタンをクリックすると、無事に接続できるはず。
  • ちなみにコマンドラインからMySQLにリモートログインしたい場合は下記コマンドを使う。
$ mysql -u xxxx -h 127.0.0.1 -P 3307 -p
Enter password: xxxxx

補足

  • SSH鍵は暗号鍵ではなくpemファイルでも良いらしい
  • EC2のパブリックIPアドレスはパブリックDNSでも良いらしい
  • どうでもいいけど beanstalk はビーンスターク(bean-stalk)と読むらしい

参考