何それ?
雑に言うと、手元のPCからAuroraにセキュアかつ便利に接続できる仕組みです。
何がいいの?
下記のメリットがあります。
- 受信ポートを開く必要がない
- SSHキーの管理が不要
- 踏み台ホストをプライベートサブネットに配置可能
- IAMで認証認可できる
- MySQL WorkbenchなどローカルPCにインストールしているツールが使える
難しい単語が多いな…
1つずつ説明します。
まず、SSM Session Managerとは、EC2インスタンスなどにセキュアにアクセスできる仕組みです。下記のようなメリットがあります。
- 受信ポートを開く必要がない
- SSHキーの管理が不要
- 踏み台ホストをプライベートサブネットに配置可能
- IAMで認証認可できる
リモートホストとは、ネットワークを介して接続した先の機器のことです。今回の場合ですと、Auoraのことです。
ポートフォワーディングとは、あるポートに届いた通信を別のポートに転送することです。今回の場合ですと、踏み台サーバーが手元のPCとの通信で使用しているポートに届いた通信をAurora(MySQL)との通信のポートに転送することということです。
つまり、SSM Session Managerを利用したリモートホストへのポートフォワーディングとは、SSM Session Managerを用いて踏み台サーバーであるEC2インスタンスにアクセスしつつ、踏み台サーバーでは手元のPCからの通信をリモートホスト(Aurora)のポートに転送することで、手元のPCからAuroraにセキュアかつ便利に接続できる仕組みということになります。手元のPCとAuroraをつなぐため、通常のSSM Session Managerのメリットに加えて、MySQL WorkbenchなどローカルPCにインストールしているツールが使えるというメリットがあります。
どうやって使うの?
-
踏み台サーバーとなるEC2インスタンスにバージョン 3.1.1374.0 以降の SSM エージェントをインストールします。
-
以下のコマンドでSSM Session Managerを利用したリモートホストへのポートフォワーディングを行います。なお、EC2インスタンスID、RDSのクラスターエンドポイント、ポート番号は環境に応じて値を書き換えて下さい。
aws ssm start-session --target {EC2インスタンスID} \ --document-name AWS-StartPortForwardingSessionToRemoteHost \ --parameters '{"host":["{Auroraのクラスターエンドポイント}"],"portNumber":["{ポート番号}"], "localPortNumber":["{ポート番号}"]}'
接続に成功した場合、下記のような表示になります。
Starting session with SessionId: 1663719728-session-042fd961289fd0cfe Port 3308 opened for sessionId 1663719728-session-042fd961289fd0cfe. Waiting for connections...
-
Aurora(MySQL)に接続するには別のターミナルで下記を実行します。
mysql -u admin -p -h 127.0.0.1 -P 3308
また、MySQL Workbenchに接続するには下記のように実行します。
参考