概要
- 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 ec2-user@xx.xxx.xxx.xxx
- 上記コマンドのオプションについては下記の通り(参考)。
 
| オプション | 説明 | 
|---|---|
| -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 ec2-user@xx.xxx.xxx.xxx
 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)と読むらしい