Amazon RDS DB インスタンスをパブリックサブネットから同じ VPC 内のプライベートサブネットに移動する方法を教えてください。
最終更新日: 2022 年 6 月 23 日
サブネットにある Amazon Relational Database Service (Amazon RDS) DB インスタンスを持っています。パブリックサブネットから同じ VPC 内のプライベートサブネットに DB インスタンスを移動し、DB インスタンスを完全にプライベートにしたいと考えています。これを行うにはどうすればよいですか?
簡単な説明
Amazon RDS には、同じ VPC で DB インスタンスのサブネットグループを変更するオプションはありません。ただし、この記事で紹介する回避策を使用して、DB インスタンスをパブリックサブネットからプライベートサブネットに移動することができます。このアクションを実行すると、DB インスタンスがプライベートになります。
この方法には、次のような多くの利点があります。
- 新しい DB インスタンスを作成する必要性を回避できます
- スナップショットリストアプロセスを使用する必要はありません
- 新しいインスタンスの作成とトラフィックの転送に伴うダウンタイムを最小限に抑えられます。生じるダウンタイムは、フェイルオーバー時間だけです。
解決方法
DB インスタンスのマルチ AZ 配置とパブリックアクセシビリティを無効にする
DB インスタンスが [Public accessibility] パラメータを [No] に設定した状態ですでにシングル AZ に設定されている場合は、このステップをスキップします。
マルチ AZ 配置を無効にするように DB インスタンスを変更するには、次の手順に従います。
- Amazon RDS コンソールにサインインします。
- ナビゲーションペインの [データベース] を選択してから、変更対象の DB インスタンスを選択します。
- [Modify] (変更) を選択します。
- [DB インスタンスを変更] ページの [マルチ AZ 配置] と [パブリックアクセシビリティ] で、 [No] を選択します。
- [続行] を選択し、変更の概要を確認します。
- [即時に適用] を選択して変更を適用します。
- 変更を確認し、よければ [DB インスタンスを変更] を選択して保存します。
DB インスタンスの IP アドレスを見つける
DB インスタンスが [利用可能] 状態に戻ったら、DB インスタンスのエンドポイントで dig を実行して、基になる IP アドレスを見つけます。
dig <rds-endpoint>
出力:
db-RDS-instance.xxxxxxxx.us-east-1.rds.amazonaws.com. 5 IN A 172.39.5.213
プライベート IP から、プライマリインスタンスが使用しているサブネットを見つけることができます。
この例では、サブネット CIDR のリストは次のとおりです。
- subnet1 -> 172.39.5.0/24
- subnet2 -> 172.39.4.0/24
IP が 179.39.5.0/24 未満であるため、インスタンスは subnet1 に配置されていると判断できます。
パブリックサブネットを削除し、DB インスタンスでプライベートサブネットを追加する
必要なすべてのプライベートサブネットをサブネットグループに追加します。また、プライマリで使用されるパブリックサブネットを除くすべてのパブリックサブネットをサブネットグループから削除します。上記の例では、DB インスタンスで使用中の subnet1 以外のすべてを削除します。
注意: プライベートサブネットは、インターネットゲートウェイへのルートを持たないルートテーブルに関連付けられたサブネットです。
- Amazon RDS コンソールにサインインします。
- ナビゲーションペインで [サブネットグループ] をクリックし、DB インスタンスに関連付けられているサブネットグループを選択します。
- [Edit] (編集) を選択します。
- [サブネットを追加] セクションで、追加するアベイラビリティーゾーンとプライベートサブネットを選択します。
- 削除するパブリックサブネットを選択し、[削除] を選択します。
- [保存] を選択します。
DB インスタンスでマルチ AZ を有効にする
DB インスタンスを変更してマルチ AZ 配置を有効にします。新しいセカンダリは、残りのプライベートサブネットの 1 つで起動します。
フェイルオーバーで DB インスタンスを再起動し、マルチ AZ 配置を無効にする
DB インスタンスがフェイルオーバーすると、プライベート IP を使用しているセカンダリがプライマリになり、パブリックサブネットがセカンダリになります。
フェイルオーバーにより DB インスタンスを再起動した後、パブリックサブネットにあるセカンダリを削除する必要があります。これを行うには、DB インスタンスを変更してマルチ AZ をもう一度オフにします。マルチ AZ 配置を [No] に設定することで、これを行えます。
パブリックサブネットの削除
- サブネットグループから残りのパブリックサブネットを削除します。
注意: サブネットグループからサブネットを削除することは、RDS 側の設定です。VPC からのサブネットの削除は含まれません。 - サブネットグループにプライベートサブネットだけが存在することを確認します。
- DB インスタンスが以前にマルチ AZ 配置されていた場合は、マルチ AZ 配置を再度オンにします。
このソリューションには、フェイルオーバーとマルチ AZ の無効化/有効化が含まれるため、考慮すべき事項はほとんどありません。詳細については、「マルチ AZ DB インスタンスのデプロイ」を参照してください。
注意: このメソッドは RDS DB インスタンスに固有です。DB インスタンスが Aurora クラスターの一部である場合は、クローンオプションを使用できます。または、この記事の手順を実行することができますが、マルチ AZ を無効にする代わりに、リーダーを削除して再作成してください。