Amazon リレーショナルデータベースサービス (Amazon RDS) インスタンスに割り当てられている IP アドレスに関する問題をトラブルシューティングしたいです。
解決策
Amazon RDS が仮想プライベートクラウド (VPC) に DB インスタンスを作成すると、ネットワークインターフェイスが DB インスタンスに割り当てられます。インスタンスの設定方法に基づいて、プライベート IP アドレスまたはパブリック IP アドレスがインスタンスに割り当てられます。
[パブリックにアクセス可能] 設定を選択したが、パブリック IP アドレスが DB インスタンスに割り当てられていない
DB サブネットグループのサブネットがプライベートの場合、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 インスタンスの変更] を選択します。
注: パブリックサブネットとプライベートサブネットの組み合わせを含むサブネットグループでは、フェイルオーバー後に接続の問題が発生する可能性があります。たとえば、プライマリインスタンスがパブリックサブネットで実行されているが、セカンダリインスタンスはマルチ AZ 構成のプライベートサブネットで実行されている場合が該当します。
Amazon RDS DB インスタンスの接続情報を調べたい
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
同じ VPC 内のリソースから DB インスタンスに接続しようとすると、RDS エンドポイントは自動的にプライベート IP アドレスに解決されます。VPC の外部またはインターネットから DB インスタンスに接続すると、エンドポイントはパブリック IP アドレスに変換されます。
Amazon RDS コンソールで AWS CLI コマンド describe-db-instances を実行するか、 DescribeDBInstances RDS API を使用することで、接続情報を確認できます。
次のコマンドのいずれかを実行することでも、接続情報を確認できます。
dig example-rds-endpoint
または、
nslookup example-rds-endpoint
nslookup コマンドを実行して RDS エンドポイントを取得すると、次の例のような出力が表示されます。
プライベート IP アドレスに解決される、同じ VPC 内の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスからの出力:
[ec2-user@ip-172-xx-xx-xx ~]$ nslookup myoracledb.xxxxx.us-east-1.rds.amazonaws.com
Server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
Non-authoritative answer: myoracledb.xxxxx.us-east-1.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.xxxxx.us-east-1.rds.amazonaws.com
Server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
Non-authoritative answer: myoracledb.xxxxx.us-east-1.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 アドレスに一貫性がない
RDS DB インスタンスに割り当てられている IP アドレスは、次の状況で変更される可能性があります。
- DB インスタンスを停止して再起動した。
注: DB インスタンスを再起動しても、IP アドレスは変わりません。
- DB インスタンスの障害または DB インスタンスクラスの更新により、基盤となるホストが置き換えられた。
- DB インスタンスでハードウェアのメンテナンスが行われた。
- DB インスタンスがマルチ AZ 環境にあり、フェイルオーバーが発生した。
- DB インスタンスのオペレーティングシステム (OS) にソフトウェアパッチが適用された。
- DB インスタンスの手動フェイルオーバーを開始するために、フェイルオーバーが伴う再起動を行った。
- DB エンジンがメジャーバージョンまたはマイナーバージョンにアップグレードされた。
- インスタンスのアベイラビリティーゾーンが停止している。
注: インスタンスの IP アドレスは動的であるため、静的 IP アドレスや Elastic IP アドレスをインスタンスに割り当てることはできません。