Amazon Virtual Private Cloud (Amazon VPC) のパブリックまたはプライベートサブネット内に配置された Amazon Relational Database Service (Amazon RDS) DB インスタンスに接続したいと考えています。
簡単な説明
VPC のパブリックまたはプライベートサブネットで RDS DB インスタンスを起動する際、次の原因で接続の問題が発生する可能性があります。
- DB インスタンス上の VPC 構成ミス
- 接続元クライアントの構成ミスまたは接続の問題
これらの問題を解決するには、環境に応じて解決手順を実行します。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
ローカルコンピュータからインターネット経由でパブリックサブネットの DB インスタンスに接続する際の問題のトラブルシューティング
DB インスタンスの Publicly Accessible プロパティが No に設定されている場合、接続の問題が発生する可能性があります。DB インスタンスがパブリックアクセス可能かどうかを確認するには、次の手順を実行します。
- Amazon Aurora と RDS コンソールを開きます。
- ナビゲーションペインで [データベース] をクリックします。
- 目的の DB インスタンスを選択します。
- インスタンスの [接続とセキュリティ] セクションを確認します。
または、
AWS CLI コマンド describe-db-instances を実行します。
aws rds describe-db-instances --db-instance-id example_instance_id
注: example_instance_id を DB インスタンス ID に置き換えてください。
DB インスタンスの Publicly Accessible プロパティを更新するには、次の手順を実行します。
- Aurora と RDS コンソールを開きます。
- ナビゲーションペインで [データベース] をクリックし、目的の DB インスタンスを選択します。
- [変更] をクリックします。
- [接続] で [その他の設定] セクションを展開し、[パブリックアクセス可能] を選択します。
- [続行] をクリックします。
- [DB インスタンスの変更] をクリックします。
注: ユーザーが [すぐに適用] オプションを選択しない場合も、Amazon RDS は変更を即時適用します。ダウンタイムを必要とする保留中のメンテナンスアクションが存在し、[すぐに適用] オプションを選択した場合のみ、ダウンタイムが発生します。
Publicly Accessible プロパティを有効にしてもインスタンスに接続できない場合は、次の詳細を確認します。
- VPC にインターネットゲートウェイがアタッチされていることを確認します。
- DB インスタンスのセキュリティグループ用インバウンドルールは、接続元 IP アドレスからの接続を許可していることを確認します。
ローカルコンピュータからプライベートサブネット内の DB インスタンスへの接続に関する問題のトラブルシューティング
この問題を解決するには、次のうち、ユースケースに最適な手法を実行します。
パブリックサブネットに切り替えるには、次の手順を実行します。
-
Aurora と RDS コンソールを開きます。
-
ナビゲーションペインで [データベース] をクリックし、目的の DB インスタンスを選択します。
-
[接続とセキュリティ] セクションに表示される DB インスタンスのエンドポイントをコピーします。
-
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
-
DB インスタンスのプライベート IP アドレスを取得した後、そのプライベート IP アドレスを VPC 内の特定のサブネットに関連付けます。VPC のサブネットは、サブネットの CIDR 範囲とプライベート IP アドレスに基づいています。
-
Amazon VPC コンソールを開きます。
-
ナビゲーションペインで [サブネット] をクリックします。
-
ステップ 5 で取得した DB インスタンスに関連付けられているサブネットを選択します。
-
[説明] ペインで [ルートテーブル] を選択します。
-
[アクション] を選択し、[ルートの編集] を選択します。
-
[ルートを追加] をクリックします。IPv4 および IPv6 トラフィックについて、[宛先ボックス] に外部ネットワークまたはオンプレミスネットワークのルートを入力します。次に、[ターゲット] リストでインターネットゲートウェイの ID を選択します。
注: インスタンスのインバウンドセキュリティグループのルールが、外部またはオンプレミスネットワークのアドレスへのトラフィックを制限していることを確認します。
-
[保存] をクリックします。
依然として DB インスタンスにアクセスできない場合は、DB インスタンスがパブリックアクセス可能であることを確認します。詳細については、前述のセクション「ローカルコンピュータからインターネット経由でパブリックサブネットの DB インスタンスに接続する際の問題のトラブルシューティング」を参照してください。
他の VPC の EC2 インスタンスから DB インスタンスへのアクセスに関する問題のトラブルシューティング
他の VPC の EC2 インスタンスから DB インスタンスにアクセスできない場合は、VPC ピアリング接続を作成します。VPC ピアリング接続は、プライベート IP アドレスを使用して VPC が通信できるようにします。
次の手順を実行します。
- VPC ピアリング接続を作成します。
注: VPC が同じ AWS アカウントにある場合は、IPv4 CIDR ブロックが重複していないことを確認してください。詳細については、「VPC ピアリングの制限事項」を参照してください。
- 接続を受け入れます。
- 両方のルートテーブルを更新します。
- セキュリティグループを更新し、ピアの VPC グループを参照させます。
- VPC ピアリング接続で DNS 解決サポートを有効にします。
- EC2 インスタンスでネットワークユーティリティを使用し、VPC ピアリング接続をテストします (下記参照)。
nc -zv hostname port
注: 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!
関連情報
VPC の DB インスタンスにアクセスするシナリオ
VPC 内の DB インスタンスの使用