✨
Systems Managerを使ってRDSにアクセスする
構成
- RDSと踏み台EC2をプライベートサブネットに配置
- Systems Managerを使って、NAT Gateway経由でポートフォワーディング接続
下の図のような構成です。
VPCエンドポイント経由でも接続可能ですが、両方設定すると、NAT GatewayよりVPCエンドポイントが優先され、若干ややこしいため今回はNAT Gatewayでやってみます。
手順
前提
以下は設定済みなものとします。
- VPC
- サブネット
- セキュリティグループ
- NAT Gateway
- EC2
- RDS
ローカル環境で公開鍵の作成
ローカル環境で、公開鍵を作成します。
$ ssh-keygen -t ed25519
$ cat ~/.ssh/id_ed25519.pub | pbcopy
EC2にIAMロールを設定
踏み台EC2用のIAMロールなので、「IAM-Role-For-EC2-Bastion」という名前でIAMロールを作成します。
IAMポリシーは、AWS管理タイプの AmazonSSMManagedInstanceCore
を選択します。
この設定がないと、SSM経由で接続ができません。
IAMロールの設定が完了したら、EC2インスタンスを選択して[接続]をクリックします。
そうすると、以下のようにセッションマネージャーのタブで接続できるようになっています。
EC2上でユーザー作成 & SSH接続設定
EC2インスタンスに接続して、ユーザーを作成していきます。
上記のページから、[接続]をクリックすると、コンソールが立ち上げります。
sh-4.2$ sudo adduser ${name}
sh-4.2$ sudo su ${name}
[${name}@ip-${private_ip_address} bin]$ mkdir ~/.ssh && cd .ssh/
[${name}@ip-${private_ip_address} .ssh]$ chmod 700 .
# authorized_keysファイルを作り、公開鍵の中身を貼ります。
[${name}@ip-${private_ip_address} .ssh]$ vi authorized_keys
ローカルでaws-cli周りの設定
$ brew install awscli
$ brew install session-manager-plugin
ローカルSSH接続設定
~/.ssh/config
を開き、以下の内容をそのまま貼り付けます。
# SSH over Session Manager
host i-* mi-*
ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
sshコマンドを実行します。
$ ssh -i ~/.ssh/id_ed25519 ${name}@i-${instance_id} -L 9090:${endpoint}.ap-northeast-1.rds.amazonaws.com:3306 -v
Discussion