VPC のパブリックサブネットまたはプライベートサブネットを使用する Amazon RDS DB インスタンスへの接続をトラブルシューティングするにはどうすればよいですか?

所要時間2分
0

Amazon Relational Database Service (Amazon RDS) DB インスタンスに接続できません。Amazon Virtual Private Cloud (Amazon VPC) のパブリックサブネットまたはプライベートサブネットにおける接続の問題をトラブルシューティングするにはどうすればよいですか?

簡単な説明

Amazon RDS データベースは VPC のパブリックサブネットまたはプライベートサブネットで起動できます。ただし、RDS インスタンス側の VPC 設定が正しくないと、接続の問題が発生する可能性があります。また、接続元のクライアントの設定や接続の問題によって、接続の問題が発生する可能性もあります。

これらの問題を解決するには、ご利用の環境に応じて次の解決方法を参照してください。

解決方法

注意: AWS コマンドラインインターフェイス (AWS CLI) のコマンド実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用するようにしてください

DB インスタンスはパブリックサブネット内にありますが、自分のローカルコンピュータからインターネット経由で接続できません

この問題は、DB インスタンスの [Publicly Accessible] (パブリックアクセス可能) プロパティが [No] (いいえ) に設定されている場合に発生する可能性があります。DB インスタンスがパブリックにアクセス可能かどうかを確認するには:

Amazon RDS コンソールを開き、ナビゲーションペインから [Databases] (データベース) を選択し、DB インスタンスを選択します。その後、インスタンスの [Connectivity & Security] (接続とセキュリティ) セクションを確認します。

-または-

AWS CLI で describe-db-instances コマンドを使用します。

Amazon RDS インスタンスの [Publicly Accessible] (パブリックアクセス可能) プロパティを [Yes] (はい) に変更するには、次を実行します。

1.    Amazon RDS コンソールを開きます。

2.    ナビゲーションペインで、[Databases] (データベース)、DB インスタンスを選択します。

3.    [Modify] (変更) を選択します。

4.    [Connectivity] (接続) で、[Additional configuration] (追加の設定) セクションを展開し、[Publicly accessible] (パブリックアクセス可能) を選択します。

5.    [Continue] (続行) を選択します。

6.    [Modify DB Instance] (DB インスタンスを変更) を選択します。

注: この変更は、[Apply Immediately] (すぐに適用) オプションを選択しなくても、すぐに適用されます。ダウンタイムが発生するのは、この変更で保留中のメンテナンスアクションが設定されており、ダウンタイムが必要で、[Apply Immediately] (すぐに適用) を選択した場合のみです。

[Publicly Accessible] (パブリックアクセス可能) プロパティを [Yes] (はい) に設定しても、引き続き RDS インスタンスに接続できない場合は、次の詳細を確認します。

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 EC2 インスタンスから自分の DB インスタンスにアクセスできません

VPC 間に VPC ピアリング接続を作成します。VPC ピアリング接続により、2 つの VPC がプライベート IP アドレスを使用して互いに通信できるようになります。

1.    VPC ピアリング接続を作成して承諾します

重要: VPC が同じ AWS アカウントにある場合は、IPv4 CIDR ブロックが重ならないようにしてください。詳細については、「VPC ピアリングの制限事項」を参照してください。

2.    両方のルートテーブルを更新します

3.    セキュリティグループを更新して、ピア VPC グループを参照できるようにします

4.    VPC ピアリング接続の DNS 解決サポートをアクティブ化します

5.    Amazon Elastic Compute Cloud (Amazon 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!

関連情報

VPC の DB インスタンスにアクセスするシナリオ

VPC 内の DB インスタンスの使用