Amazon Relational Database Service (Amazon RDS) が DB インスタンスに割り当てられた IP アドレスに関する問題をトラブルシューティングしたいです。
解決策
Amazon RDS が仮想プライベートクラウド (VPC) に DB インスタンスを作成する際、Amazon RDS は DB インスタンスにネットワークインターフェイスを割り当てます。Amazon RDS は、インスタンスの構成に基づいて、プライベート IP アドレス、パブリック IP アドレスのいずれかを割り当てます。
パブリックアクセス可能に設定したものの、Amazon RDS は DB インスタンスにパブリック IP アドレスを割り当てなかった場合
DB サブネットグループ内のサブネットがプライベートの場合、Amazon RDS は、DB インスタンスにパブリック IP アドレスを割り当てません。
この問題を解決するには、次の手順を実行します。
- Amazon RDS コンソールを開きます。
- ナビゲーションペインで [サブネットグループ] を選択します。
- DB インスタンスが関連付けられているサブネットグループを選択します。
注: VPC ID と関連するサブネット ID を参照することで、サブネットグループを確認できます。
- Amazon Virtual Private Cloud (Amazon VPC) コンソールを開きます。
- ナビゲーションペインで [インターネットゲートウェイ] を選択します。
- VPC がインターネットゲートウェイにアタッチされているかどうかを確認します。
注: VPC がインターネットゲートウェイに接続されていない場合は、ゲートウェイを作成して VPC にアタッチします。
- ナビゲーションペインで [ルートテーブル] を選択します。
- VPC に関連付けられているルートテーブルを選択します。
- [サブネットの関連付け] タブを選択し、DB のサブネットグループ内のすべてのサブネットがルートテーブルにアタッチされているかどうかを確認します。
注: サブネットがルートテーブルに関連付けられていない場合は、[サブネットの関連付けを編集] を選択します。ルートテーブルに関連付けるサブネットを選択します。
- [ルート] タブを選択します。DB のサブネットグループ内にあるすべてのサブネットにおいて、[宛先] フィールドが 0.0.0.0/0 であり、[ターゲット] フィールドにインターネットゲートウェイの ID があることを確認します。
注: サブネットの [宛先] フィールドと [ターゲット] フィールドに複数の値がある場合は、ルートを変更し、上記の値が含まれるようにします。
- Amazon RDS コンソールを開きます。
- ナビゲーションペインで [データベース] を選択します。
- 該当する DB インスタンスを選択し、**[変更]**を選択します。
- [接続] で [その他の設定] セクションを展開し、[パブリックアクセス可能] を選択します。
- [続行] を選択します。
- [DB インスタンスの変更] を選択します。
注: パブリックサブネットとプライベートサブネットの組み合わせを含むサブネットグループは、フェイルオーバー後に接続の問題を引き起こす可能性があります。たとえば、マルチアベイラビリティーゾーン構成では、プライマリインスタンスがパブリックサブネットを使用し、セカンダリインスタンスがプライベートサブネットを使用する際に、接続の問題が発生する可能性があります。
Amazon RDS DB インスタンスの接続情報を特定する必要がある場合
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
同じ VPC 内のリソースから DB インスタンスへの接続を試行すると、Amazon RDS エンドポイントは自動的にプライベート IP アドレスに解決されます。VPC の外部またはインターネットから DB インスタンスに接続する場合は、エンドポイントはパブリック IP アドレスに解決されます。
Amazon RDS コンソールで AWS CLI コマンド describe-db-instances を実行するか、DescribeDBInstances Amazon RDS API を実行すると、接続情報を確認できます。
または、次のいずれかのコマンドを実行しても確認できます。
dig example-rds-endpoint
または、
nslookup example-rds-endpoint
注: example-rds-endpoint を実際のエンドポイントに置き換えてください。
nslookup コマンドを実行して Amazon RDS エンドポイントを取得すると、次の例のような出力が表示されます。
プライベート IP アドレスに解決される、同じ VPC 内の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスからの出力:
[ec2-user@ip-172-xx-xx-xx ~] nslookup myoracledb.abcd123.region.rds.amazonaws.com
Server: 172.16.0.0
Address: 172.31.255.255#53
Non-authoritative answer: myoracledb.abcd123.region.rds.amazonaws.com canonical name = ec2-3-232-189-42.compute-1.amazonaws.com.
Name: ec2-3-232-189-42.compute-1.amazonaws.com
Address: 172.31.8.27
パブリック IP アドレスに解決される、別の VPC 内の Amazon EC2 インスタンスからの出力:
[ec2-user@ip-172-xx-xx-xx ~] nslookup myoracledb.abcd123.region.rds.amazonaws.com
Server: 192.0.2.0
Address: 192.0.2.255#53
Non-authoritative answer: myoracledb.abcd123.region.rds.amazonaws.com canonical name = ec2-3-232-189-42.compute-1.amazonaws.com.
Name: ec2-3-232-189-42.compute-1.amazonaws.com
Address: 3.232.189.42
DB インスタンスの IP アドレスに一貫性がない場合
次のシナリオでは、Amazon RDS DB インスタンスの IP アドレスは変更される可能性があります。
- DB インスタンスを停止して再起動した場合。
注: DB インスタンスの再起動時には、IP アドレスは変わりません。
- DB インスタンスの障害または DB インスタンスクラスの更新が原因で、Amazon RDS が基盤ホストを置換した場合。
- Amazon RDS が DB インスタンスのハードウェアメンテナンスを行った場合。
- DB インスタンスがマルチ AZ 環境にあり、フェイルオーバーが発生した場合。
- DB インスタンスのオペレーティングシステム (OS) にソフトウェアパッチが適用された場合。
- DB インスタンスの手動フェイルオーバーを開始するために、フェイルオーバーが伴う再起動を行った場合。
- DB エンジンでメジャーバージョンまたはマイナーバージョンのアップグレードが行われた場合。
- インスタンスのアベイラビリティーゾーンで障害が発生した場合。
注: インスタンスの IP アドレスは動的であるため、静的 IP アドレスや Elastic IP アドレスをインスタンスに割り当てることはできません。