VPC のパブリックサブネットまたはプライベートサブネットを使用する Amazon RDS インスタンスへの接続問題を解決するには、どうすれば良いですか?

最終更新日: 2020 年 1 月 2 日

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

簡単な説明

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

これらの問題を解決するには、お使いの環境に応じて以下の解決方法を参照してください。

解決方法

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

この問題は、インスタンスの [パブリックアクセス可能] プロパティが [いいえ] に設定されている場合に発生する可能性があります。インスタンスがパブリックにアクセス可能かどうかを確認するには、Amazon RDS コンソールまたは AWS Command Line Interface (AWS CLI) を使用できます。

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

1.    VPC にインターネットゲートウェイがアタッチされていることと、セキュリティグループのインバウンドルールで接続が許可されていることを確認してください。

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

3.    ナビゲーションペインで、[データベース]、[DB インスタンス] を順に選択します。

4.    [変更] を選択します。

5.    [ネットワークとセキュリティ] の下にある [パブリックアクセス可能] で、[はい] を選択します。

6.    [続行] を選択します。

7.    [DB インスタンス変更] を選択します。

注: [すぐに適用する] を選択する必要はありません。[すぐに適用する] がダウンタイムに与える影響については、「すぐに適用すパラメータの使用」を参照してください。

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

パブリックサブネットを使用して、この問題を解決できます。パブリックサブネットを使用すると、インターネットからそのサブネットのすべてのリソースにアクセスできるようになります。このソリューションがセキュリティ要件を満たしていない場合は、AWS サイト間 VPN を使用してください。サイト間 VPN では、VPC をリモートネットワークに接続できるカスタマーゲートウェイを設定します。

パブリックサブネットに切り替える

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 アドレスを取得したら、サブネット CIDR 範囲とプライベート IP アドレスに基づいて、プライベート IP アドレスを VPC 内の特定のサブネットに関連付けることができます。

6.    Amazon VPC コンソールを開き、次にナビゲーションペインで [サブネット] を選択します。

7.    手順 5 で検出した DB インスタンスに関連付けられているサブネットを選択します。

8.    説明 ペインで、[ルートテーブル] を選択します。

9.    [アクション] を選択してから、[ルート編集] を選択します。

10.    [ルート追加] を選択してから、次のように入力します。
IPv4 トラフィックの場合、送信先ボックス内で 0.0.0.0/0 と入力し、ターゲットリストでインターネットゲートウェイ ID を選択します。
IPv6 トラフィックの場合は、送信先ボックス内で ::/0 と入力し、ターゲットリストでインターネットゲートウェイ ID を選択します。

11.    [保存] を選択します。

重要: サブネットをパブリックに変更すると、インスタンスに関連付けられたパブリックアドレスがある場合は、インターネットからサブネット内の他のインスタンスにもアクセスできるようになります。

これらの手順を実行してもインスタンスにアクセスできない場合は、「インスタンスがプライベートサブネットにあり、ローカルコンピュータからアクセスできない」の手順に従って、インスタンスが [パブリックアクセス可能] な状態かどうかを確認してください。

別の VPC にある Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから自分の DB インスタンスにアクセスできません

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

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

重要: 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!