事前準備
- Private Subnet内にRDSを作成
構成図
手順
踏み台用EC2を作成
- EC2 > インスタンス > インスタンスを起動
- Amazon マシンイメージ (AMI)
- Amazon Linux 2023 AMI/Armを選択(SSM AgentがプリインストールされているAMIであればどれでもOK:
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/ami-preinstalled-agent.html)
- Amazon Linux 2023 AMI/Armを選択(SSM AgentがプリインストールされているAMIであればどれでもOK:
- インスタンスタイプ
- t4g.nano(適当なタイプでOK)
- キーペア
- 新しいキーペアを作成(既にあれば流用でOK)
- キーペアのタイプ
- ED25519
- プライベートキーファイル形式
- .pem
- キーペアのタイプ
- ローカルに秘密鍵がダウンロードされるため、
~/.ssh
配下に保存する - Permissionを変更
chmod 400 ~/.ssh/[作成したキーペア秘密鍵]
- 新しいキーペアを作成(既にあれば流用でOK)
- ネットワーク設定 > 編集
- VPC
- RDSが属するVPCを選択
- サブネット
- RDSが属するプライベートサブネットを選択
- ファイアフォール(セキュリティグループ)
- セキュリティーグループを作成
- インバウンドのセキュリティーグループを削除(Session Managerからの接続にセキュリティグループの穴あけは不要なため削除する)
- セキュリティーグループを作成
- VPC
- 高度な詳細
- IAMインスタンスプロフィール > 新しいインスタンスプロファイルの作成 > ロールを作成
- 信頼されたエンティティタイプ
- AWSのサービス
- サービスまたはユースケース
- EC2
- ユースケース
- EC2 role for EC2 Role for AWS Systems Manager
- (その他はデフォルトでOK)
- 信頼されたエンティティタイプ
- IAMインスタンスプロフィール > 新しいインスタンスプロファイルの作成 > ロールを作成
- Amazon マシンイメージ (AMI)
- インスタンスを起動
VPCエンドポイントを作成
- VPC > 仮想プライベートクラウド > エンドポイント > エンドポイントを作成
-
サービスカテゴリ
- AWSのサービス
- サービス
- com.amazonaws.ap-northeast-1.ssm
- com.amazonaws.ap-northeast-1.ssmmessages
※ 同時には作れないため1つずつ作成
※ SSM Agentのバージョンが3.3.40.0よりも古い場合はcom.amazonaws.ap-northeast-1.ec2messagesも必要
- VPC
- RDS(EC2)が属するVPCを選択
- DNS名を有効化にチェック
- サブネット
- RDS(EC2)が属するサブネットを選択
- セキュリティグループ
- 踏み台EC2からのInbound HTTPS(443)を許可したセキュリティーグループを作成し選択
-
サービスカテゴリ
- エンドポイントを作成
AWSマネジメントコンソールからEC2への接続確認
- EC2 > インスタンス > 作成した踏み台EC2にチェック > 接続
- 「セッションマネージャー」タブを選択し接続
※ 接続できない場合はアクセスできない場合の確認ポイントを参照
ローカルPCからEC2に接続
- 下記サイトを参考にSession Manager Pluginインストール
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html - ローカルPCの~/.ssh/configに以下追加
Host bastion HostName [踏み台EC2のインスタンスID] User ec2-user Port 22 IdentityFile ~/.ssh/[作成したキーペアの秘密鍵] ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
- ローカルPCで
ssh bation
を実行し、EC2に接続できることを確認
SSHポートフォワーディングでRDSに接続
- 作成した踏み台EC2経由でRDS向けにSSHポートフォワーディングを張る
ssh -N -L localhost:60000:[RDSのエンドポイント]:[RDSのポート] -C bastion
- localhost:60000に適当なDBクライアントソフトでアクセスする
アクセスできない場合の確認ポイント
- EC2
- セキュリティグループのアウトバウンドルールで、VPCエンドポイント向けのHTTPS通信が許可されているか確認
- インスタンスプロファイルに「AmazonSSMManagedInstanceCore」が付与されたロールが設定されているか確認
- 再起動(SSM Agentは、5 分ごとにクラウド内のSystems Managerサービスを呼び出して、ヘルスチェック情報を提供するため、再起動で強制的にサービスを呼び出す)
- VPCエンドポイント
- ssm/ssmmessagesがRDS(EC2)の属するサブネットに関連付けられているか確認
- セキュリティグループのインバウンドルールで、EC2からのHTTPS通信が許可されているか確認
- プライベートDNSが有効化されているか確認