Amazon EC2 インスタンスを踏み台ホストとして使用して、ローカルマシンからプライベート Amazon RDS DB インスタンスに接続する方法を教えてください。
Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを踏み台 (ジャンプ) ホストとして使用して、ローカルマシンからプライベート Amazon Relational Database Service (Amazon RDS) DB インスタンスに接続したいです。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
プライベート Amazon RDS インスタンスまたは Amazon Aurora DB インスタンスに接続するには、VPN または AWS Direct Connect を使用することがベストプラクティスです。上記のいずれも使用できない場合は、踏み台ホストを使用します。
次の設定例は、Amazon Virtual Private Cloud (Amazon VPC) に置かれた Amazon RDS for MySQL インスタンスを対象としています。この例では、セキュリティグループを使用してアクセスを制限しています。ただし、サブネットのネットワークアクセスコントロールリスト (ネットワーク ACL) を制限すると、接続の安全性をさらに高めることができます。
EC2 インスタンスを起動して設定する
次の手順を実行します。
- Amazon EC2 コンソールを開き、[インスタンスを起動] を選択します。
- Amazon マシンイメージ (AMI) を選択します。
- インスタンスタイプを選択し、[次へ: インスタンスの詳細の設定] を選択します。
- [ネットワーク] で Amazon RDS DB インスタンスが使用する VPC を選択します。
- [サブネット] で VPC のプライベートサブネットを選択します。
- [次へ: ストレージを追加] を選択し、必要に応じてストレージを変更します。
- [次へ: タグの追加] を選択し、必要に応じてタグを追加します。
- [次へ: セキュリティグループの設定] を選択します。
- [ルールを追加] を選択し、次の値を入力します。
[タイプ] に Custom TCP Rule と入力します
[プロトコル] に TCP と入力します
[ポート範囲] に 22 と入力します
[ソース] には、Amazon EC2 接続エンドポイントが使用するセキュリティグループを入力します。 - [確認と起動] を選択し、[起動] を選択します。
Amazon RDS DB インスタンスのセキュリティグループを設定する
注: 1 つ以上の EC2 インスタンスを Amazon RDS データベースに自動的に接続する方法については、「RDS コンソールを使用してインスタンスを RDS データベースに自動的に接続する」を参照してください。
次の手順を実行します。
- Amazon RDS コンソールを開きます。
- ナビゲーションペインで [データベース] を選択します。
- Amazon RDS DB インスタンスの名前を選択します。RDS DB インスタンスをまだ作成していない場合は、作成します。
- [接続とセキュリティ] を選択します。
- [セキュリティ] セクションで [VPC セキュリティグループ] にあるリンクを選択します。
- セキュリティグループを選択し、[アクション]、[インバウンドルールの編集] を選択します。
- [ルールを追加] を選択し、次の値を入力します。
[タイプ] に Custom TCP Rule と入力します
[プロトコル] に TCP と入力します
[ポート範囲] に Amazon RDS DB インスタンスのポートを入力します。
[ソース] に EC2 インスタンスのプライベート IP アドレスを入力します。 - [保存] を選択します。
このセキュリティグループの設定では、EC2 インスタンスのプライベート IP アドレスからのトラフィックが許可されます。EC2 インスタンスと Amazon RDS DB インスタンスが同じ VPC を使用している場合は、Amazon RDS DB インスタンスのルートテーブルを変更する必要はありません。VPC が別々の場合は、VPC ピア接続を作成して VPC 間の接続を許可します。
注: よりスケーラブルなソリューションを使用する場合は、設定を見直してください。たとえば、セキュリティグループルールでセキュリティグループ ID を使用する場合は、アクセスが 1 つのインスタンスのみに制限されないようにします。代わりに、特定のセキュリティグループ ID を使用するリソースのみにアクセスを制限するようにルールを設定します。
EC2 インスタンス接続エンドポイントを作成する
- Amazon VPC コンソールを開きます。
- ナビゲーションペインで [エンドポイント] を選択します。
- [エンドポイントの作成] を選択し、エンドポイントの設定を指定します。
(オプション) [名前タグ] にエンドポイントの名前を入力します。
[サービスカテゴリ] で [EC2 インスタンス接続エンドポイント] を選択します。
[VPC] でターゲットインスタンスが置かれた VPC を選択します。
(オプション) クライアントの IP アドレスを保持するには、[その他の設定] を展開してチェックを入れます。チェックを入れない場合は、デフォルトではエンドポイントのネットワークインターフェイスをクライアント IP アドレスとして使用します。
[セキュリティグループ] でエンドポイントに関連付けるセキュリティグループを選択します。選択しない場合場合、デフォルトでは VPC のデフォルトのセキュリティグループを使用します。
[サブネット] でエンドポイントを作成するサブネットを選択します。
(オプション) タグを追加するには、[新しいタグを追加] を選択し、タグキーとタグ値を入力します。 - 設定を確認した後、[エンドポイントの作成] を選択します。
- エンドポイントの初期ステータスは Pending です。インスタンスに接続するには、エンドポイントのステータスが Available になるまで待つ必要があります。これには数分かかることがあります。
ローカルマシンから RDS DB インスタンスに接続する
注: AWS CLI にアクセスできる必要があります。
ローカルの MySQL クライアントから SSH トンネル経由でプライベート RDS インスタンスに接続するには、次の手順を実行します。
Linux または macOS
-
次のコマンドを実行し、ローカルマシンから EC2 インスタンスへのトンネルを開きます。
aws ec2-instance-connect open-tunnel --instance-id ec2-instance-ID --local-port 8888
注: ec2-instance-ID は、実際の EC2 インスタンス ID に置き換えます。
-
2 番目の接続を開き、次のコマンドを実行すると、EC2 インスタンスを経由する、ローカルホストから RDS DB への SSH トンネルが作成されます。
ssh -i YOUR_EC2_KEY EC2_USER@EC2_HOST -p EC2_TUNNEL_PORT -L LOCAL_PORT:RDS_ENDPOINT:REMOTE_PORT -N -f
注: 次の値を置き換えます。
YOUR_EC2_KEY: EC2 プライベートキーファイルへのパス
EC2_USER: お使いの EC2 インスタンスユーザー名
EC2_HOST: お使いの EC2 インスタンスのホスト名
EC2_TUNNEL_PORT: 設定したポート
**LOCAL_PORT **: ローカルマシン上の未使用のポート
**RDS_ENDPOINT **: RDS インスタンスのエンドポイント
REMOTE_PORT Amazon RDS DB が RDS インスタンスで使用するポート -
3 番目の接続を使用して次のコマンドを実行すると、ローカルマシンから Amazon RDS インスタンスに接続します。
mysql -h 127.0.0.1 -P LOCAL_PORT -u RDS_USER -p
注: 次の値を置き換えます。
LOCAL_PORT: ローカルポートの番号
DB_USER: RDS DB のユーザー名
DB password: Amazon RDS DB のパスワード
関連情報
Amazon RDS DB インスタンスに接続する際の問題を解決する方法を教えてください
Amazon EC2 インスタンスを踏み台ホストとして使用して、ローカルマシンからプライベート Amazon RDS DB インスタンスに接続する方法を教えてください

関連するコンテンツ
- 質問済み 8ヶ月前lg...
- 質問済み 7年前lg...
- AWS公式更新しました 9ヶ月前
- AWS公式更新しました 2年前