Amazon EC2 インスタンスを踏み台ホストとして使用して、ローカルマシンからプライベート Amazon RDS DB インスタンスに接続するにはどうすればよいですか?

最終更新日:2022 年 8 月 8 日

Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを踏み台 (ジャンプ) ホストとして使用して、ローカルマシンからプライベート Amazon Relational Database Service (Amazon RDS) DB インスタンスに接続するにはどうすればよいですか?

簡単な説明

EC2 インスタンスをジャンプサーバーとして使用して、ローカルマシンからプライベート RDS DB インスタンスに接続するには、以下の手順を実行します。

  1. EC2 インスタンスを起動して設定し、インスタンスのネットワーク設定を行います。
  2. RDS DB インスタンスのセキュリティグループを設定します。
  3. ローカルマシンから RDS DB インスタンスに接続します。

重要: プライベート Amazon RDS または Amazon Aurora DB インスタンスに接続するには、VPN または AWS Direct Connectを使用することがベストプラクティスです。VPN または Direct Connect を使用できない場合は、要塞ホストを使用してください。次の設定例では、セキュリティグループを使用してアクセスを制限しています。ただし、サブネットのネットワークアクセスコントロールリスト (ネットワーク ACL) を制限して、接続のセキュリティを強化することもできます。また、0.0.0.0/0 ではなく、より小さい範囲を使用するようにインターネットゲートウェイのルートスコープを制限することも可能です。たとえば、インターネットゲートウェイを追加するときに、送信先のルーティングテーブルに必要な CIDR 範囲のみを追加できます。詳細については、ルーティングオプションの例を参照してください。

解決方法

以下の設定例は、Amazon Virtual Private Cloud (Amazon VPC) にある Amazon RDS for MySQL インスタンスの設定例です。インスタンスには EC2 インスタンス用のセキュリティグループが設定されています。

EC2 インスタンスを起動して設定する

  1. Amazon EC2 コンソールを開いて、[インスタンスの作成] を選択します。
  2. Amazon マシンイメージ (AMI) を選択します。
  3. インスタンスタイプを選択してから、[次のステップ: インスタンスの詳細の設定] を選択します。
  4. [ネットワーク] には、RDS DB インスタンスが使用する VPC を選択します。
  5. [サブネット] には、ルーティングテーブルにインターネットゲートウェイがあるサブネットを選択します。インターネットゲートウェイがまだない場合は、EC2 インスタンスの作成後にサブネットに追加できます。
  6. [パブリック IP の自動割り当て] で、 [有効] が選択されていることを確認します。
  7. [次のステップ: ストレージの追加] を選択し、必要に応じてストレージを変更します。
  8. [次のステップ: タグの追加] を選択し、必要に応じてタグを追加します。
  9. [次のステップ: セキュリティグループの設定] を選択し、[ルールの追加] を選択して以下を入力します。
    タイプ: カスタム TCP ルール
    プロトコル: TCP
    ポート範囲: 22
    送信元: ローカルマシンの IP アドレスを入力します。送信元 IP アドレスはデフォルトですべてに開放されていますが、ローカルパブリック IP アドレスのみにアクセスを制限できます。
  10. [Review and Launch] をクリックします。
  11. [作成] を選択します。

RDS DB インスタンスのセキュリティグループを設定する

  1. Amazon RDS コンソールを開き、ナビゲーションペインから [データベース] を選択します。
  2. RDS DB インスタンスの名前を選択します。インスタンスが作成されていない場合は、RDS DB インスタンスを作成します。
  3. [Connectivity & security] (接続とセキュリティ) タブを選択します。
  4. [Security] (セキュリティ) セクションで、[VPC security groups] (VPC セキュリティグループ) の下にあるリンクを選択します。
  5. セキュリティグループを選択し、[アクション] を選択してから [インバウンドのルールの編集] を選択します。
  6. ルールを追加 を選択してから、次の値を入力します。
    タイプ: カスタム TCP ルール
    プロトコル: TCP
    ポート範囲: RDS DB インスタンスのポートを入力します
    送信元: EC2 インスタンスのプライベート IP アドレスを入力します
  7. [保存] を選択します。

このセキュリティグループ設定により、EC2 インスタンスのプライベート IP アドレスからのトラフィックが許可されます。EC2 インスタンスと RDS DB インスタンスが同じ VPC を使用する場合、RDS DB インスタンスのルートテーブルを変更する必要はありません。VPC が異なる場合は、VPC ピアリング接続を作成してこれらの VPC 間における接続を許可します。

ローカルマシンから RDS DB インスタンスに接続する

RDS DB インスタンスに接続するステップは、使用するクライアントに応じて異なります。詳細については、Amazon RDS DB インスタンスへの接続を参照してください。MySQL を使用する場合は、クライアントアプリケーションと Amazon RDS 間の接続の暗号化に SSL を使用することがベストプラクティスです。

次の例では、MySQL Workbench クライアントを使用して踏み台ホストに接続します。

  1. 新しい接続を開始し、[Connection Method] に [Standard TCP/IP over SSH] を選択します。
  2. SSH 設定について EC2 インスタンスに関する以下の詳細情報を入力します。
    SSH Hostname: EC2 インスタンスのパブリック DNS 名を入力します。
    SSH Username: EC2 インスタンスのユーザー名を入力します。たとえば、「ec2-user」は EC2 Linux マシンのユーザー名です。
    SSH Key File: EC2 インスタンスの作成時に使用されたプライベートキーを選択します。
  3. MySQL インスタンスの設定について以下の詳細情報を入力します。
    [MySQL Hostname]: RDS DB インスタンスのエンドポイントを入力します。
    [MySQL Server port] (MySQL Server ポート): 3306 (または使用するカスタムポート) を入力します。
    Username: RDS DB インスタンスのマスターユーザー名を入力します。
    Password: RDS DB インスタンスのマスターパスワードを入力します。
  4. [Test Connection] を選択します。
  5. 正常に接続できたら、接続名を入力し、接続を保存します。

SSH トンネルを使用してローカル MySQL クライアントからプライベート RDS インスタンスに接続するには、次のコマンドを参照してください。

Linux または macOS:

以下のコマンドを実行します。

ssh -N -L 3336:127.0.0.1:3306 [user]@[server_ip]

mysql -u MYSQL_USER -p -h 127.0.0.1

注: userserver_ip、および mysql_user を、ご自身の情報に置き換えてください。

Windows PowerShell の場合:

ssh -i "<filename>.pem" <user_name>@<EC2_Endpoint> -L <Port_number>:<RDS_Endpoint>:<Port_number> -N

注: filenameusername を、ご自身の情報に置き換えてください。EC2_Endpoint、port_number、RDS_Ednpoint、および Port_number を、ご利用の RDS インスタンスの情報に置き換えます。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術的なサポートが必要ですか?