VPC のパブリックサブネットまたはプライベートサブネットを使用する Amazon RDS DB インスタンスへの接続問題を解決するには、どうすれば良いですか?
最終更新日: 2022 年 2 月 24 日
Amazon Relational Database Service (Amazon RDS) DB インスタンスに接続できません。Amazon Virtual Private Cloud (Amazon VPC) のパブリックサブネットまたはプライベートサブネットにおける接続問題を解決するには、どうすれば良いですか?
簡単な説明
Amazon RDS データベースは、VPC のパブリックサブネットまたはプライベートサブネットで起動できます。接続問題は、誤った VPC 設定、または接続しようとしているクライアントの設定や接続問題が原因で発生する可能性があります。
これらの問題を解決するには、お使いの環境に応じて以下の解決方法を参照してください。
解決方法
注意: AWS コマンドラインインターフェイス (AWS CLI) のコマンド実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用するようにしてください。
DB インスタンスはパブリックサブネット内にありますが、自分のローカルコンピュータからインターネット経由で接続できません
この問題は、DB インスタンスの [Publicly Accessible] (パブリックアクセス可能) プロパティが [No] (いいえ) に設定されている場合に発生する可能性があります。DB インスタンスがパブリックにアクセス可能かどうかを確認するには、Amazon RDS コンソールまたは AWS CLI を使用できます。
Amazon RDS インスタンスの [Publicly Accessible] (パブリックアクセス可能) プロパティを [Yes] (はい) に変更するには、次の手順を実行します。
1. VPC にインターネットゲートウェイがアタッチされていることを確認してください。セキュリティグループのインバウンドルールで接続が許可されていることを確認してください。
2. Amazon RDS コンソールを開きます。
3. ナビゲーションペインで、[データベース]、[DB インスタンス] を順に選択します。
4. [変更] を選択します。
5. [Connectivity] (接続) で、[Additional configuration] (追加の構成) セクションを拡張し、[Publicly accessible] (パブリックアクセス可能) を選択します。
6. [続行] を選択します。
7. [DB インスタンス変更] を選択します。
注意: [Apply Immediately] (すぐに適用) を選択する必要はありません。[Apply Immediately] (すぐに適用) がダウンタイムに与える影響については、「[すぐに適用] 設定を使用する」を参照してください。
DB インスタンスはプライベートサブネット内にありますが、自分のローカルコンピュータから接続できません
パブリックサブネットを使用して、この問題を解決できます。パブリックサブネットを使用すると、インターネットからそのサブネットのすべてのリソースにアクセスできるようになります。このソリューションがセキュリティ要件を満たしていない場合は、AWS Site-to-Site VPN を使用してください。Site-to-Site VPN では、VPC をリモートネットワークに接続できるカスタマーゲートウェイを設定します。
この問題を解決するもう 1 つの方法は、Amazon EC2 インスタンスを踏み台 (ジャンプ) ホストとして使用することです。詳細については、「Amazon EC2 インスタンスを踏み台ホストとして使用して、ローカルマシンからプライベート Amazon RDS DB インスタンスに接続するにはどうすればよいですか?」を参照してください。
パブリックサブネットに切り替えるには
1. Amazon RDS コンソールを開きます。
2. ナビゲーションペインで、[データベース]、[DB インスタンス] を順に選択します。
3. 「接続性とセキュリティ」セクションから、DB インスタンスのエンドポイントをコピーします。
4. VPC の EC2 インスタンスから DB インスタンスエンドポイントへの nslookup を実行します。次の出力例を参照してください。
nslookup myexampledb.xxxx.us-east-1.rds.amazonaws.com
Server: xx.xx.xx.xx
Address: xx.xx.xx.xx#53
Non-authoritative answer:
Name: myexampledb.xxxx.us-east-1.rds.amazonaws.com
Address: 172.31.xx.x
5. RDS DB インスタンスのプライベート IP アドレスを取得したら、プライベート IP アドレスを VPC 内の特定のサブネットに関連付けることができます。VPC サブネットは、サブネット CIDR 範囲とプライベート IP アドレスに基づいています。
6. Amazon VPC コンソールを開き、次にナビゲーションペインで [サブネット] を選択します。
7. 手順 5 で検出した DB インスタンスに関連付けられているサブネットを選択します。
8. [説明] ペインで、[ルートテーブル] を選択します。
9. [アクション] を選択してから、[ルート編集] を選択します。
10. [ルートを追加] をクリックします。IPv4 および IPv6 トラフィックの場合は、[送信先] ボックスに外部ネットワークまたはオンプレミスネットワークのルートを入力します。[ターゲット] リストで、インターネットゲートウェイ ID を選択します。
注意: インスタンスのインバウンドセキュリティグループルールが外部ネットワークまたはオンプレミスネットワークのアドレスへのトラフィックを制限していることを確認してください。
11. [保存] を選択します。
重要: サブネットをパブリックに変更すると、サブネット内の他の DB インスタンスもインターネットからアクセスできるようになります。パブリックアドレスが関連付けられている場合、DB インスタンスはインターネットからアクセスできます。
これらの手順を実行しても DB インスタンスにアクセスできない場合は、DB インスタンスが [Publicly Accessible] (パブリックアクセス可能) であるかどうかを確認します。そのためには、DB インスタンスはプライベートサブネット内にありますが、自分のローカルコンピュータから接続できませんの手順通りに進めてください。
別の VPC にある Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから自分の DB インスタンスにアクセスできません
VPC 間に VPC ピアリング接続を作成します。VPC ピアリング接続により、2 つの VPC がプライベート IP アドレスを使用して互いに通信できるようになります。
重要: VPC が同じ AWS アカウントにある場合は、IPv4 CIDR ブロックが重ならないようにしてください。詳細については、「サポートされていない VPC ピア接続設定」を参照してください。
2. 両方のルートテーブルを更新します。
3. セキュリティグループを更新して、ピア VPC グループを参照できるようにします。
4. VPC ピアリング接続の DNS 解決サポートを有効にします。
5. EC2 インスタンスで、ネットワークユーティリティを使用し、VPC ピアリング接続をテストします。以下の例を参照してください。
nc -zv <hostname> <port>
接続が機能している場合、出力は次のようになります。
$ nc -zv myexampledb.xxxx.us-east-1.rds.amazonaws.com 5439
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif en0
src xx.xxx.xxx.xx port 53396
dst xx.xxx.xxx.xxx port 5439
rank info not available
TCP aux info available
Connection to myexampledb.xxxx.us-east-1.rds.amazonaws.com port 5439 [tcp/*] succeeded!