Amazon RDS DB インスタンスをパブリックサブネットから同じ VPC 内のプライベートサブネットに移動する方法を教えてください。
最終更新日: 2020 年 12 月 9 日
サブネットにある Amazon Relational Database Service (Amazon RDS) DB インスタンスを持っています。パブリックサブネットから同じ VPC 内のプライベートサブネットに DB インスタンスを移動し、DB インスタンスを完全にプライベートにしたいと考えています。これを行うにはどうすればよいですか?
簡単な説明
Amazon RDS には、同じ VPC で DB インスタンスのサブネットグループを変更するオプションはありません。ただし、この記事で紹介する回避策を使用して、DB インスタンスをパブリックサブネットからプライベートサブネットに移動し、DB インスタンスをプライベートにすることができます。
この方法を用いる利点には以下があります。
- 新しい DB インスタンスを作成する必要性を回避できます
- snapshot-restore プロセスの使用を回避できます
- 新しいインスタンスの作成とトラフィックの転送に伴うダウンタイムを最小限に抑えられます。受けるダウンタイムは、フェイルオーバー時間だけです。
解決方法
DB インスタンスのマルチ AZ 配置とパブリックアクセシビリティを無効にする
DB インスタンスが既にシングル AZ に設定されており、 パブリックアクセシビリティパラメータが No に設定されている場合は、このステップをスキップして次のステップに進んで IP アドレスを見つけます。
マルチ AZ 配置を無効にするように DB インスタンスを変更するには、次の手順に従います。
- AWS RDS コンソールにサインインします。
- ナビゲーションペインの [データベース] をクリックしてから、変更対象の DB インスタンスを選択します。
- [変更] を選択します。
- [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 インスタンスに関連付けられているサブネットグループを選択します。
- [編集] を選択します。
- [サブネットを追加] セクションで、追加するアベイラビリティーゾーンとプライベートサブネットを選択します。
- 削除するパブリックサブネットを選択し、[削除] をクリックします。
- [保存] を選択します。
DB インスタンスでマルチ AZ を有効にする
DB インスタンスを変更してマルチ AZ 配置を有効にします。新しいセカンダリは、残りのプライベートサブネットの 1 つで起動します。
フェイルオーバーで DB インスタンスを再起動し、マルチ AZ 配置を無効にする
DB インスタンスがフェイルオーバーすると、プライベート IP を使用しているセカンダリがプライマリになり、パブリックサブネットがセカンダリになります。
フェイルオーバーにより DB インスタンスを再起動した後、パブリックサブネットにあるセカンダリを削除する必要があります。これを行うには、DB インスタンスを変更して マルチ AZ を再度無効にします。マルチ AZ 配置を [No] に設定してこれを行えます。
パブリックサブネットの削除
- サブネットグループから残りのパブリックサブネットを削除します。
注: サブネットグループからサブネットを削除することは、RDS 側の設定です。VPC のサブネットの削除は含まれません。 - サブネットグループにプライベートサブネットだけが存在することを確認します。
- DB インスタンスが以前にマルチ AZ 配置にあった場合は、再度有効にします。
このソリューションには、フェイルオーバーとマルチ AZ の無効化/有効化が含まれるため、考慮すべき事項はほとんどありません。詳細については、「DB インスタンスをマルチ AZ 配置に変更する」を参照してください。
注: このメソッドは RDS DB インスタンスに固有です。DB インスタンスが Aurora クラスターの一部である場合は、クローンオプションを使用できます。または、この記事の手順を実行することができますが、マルチ AZ を無効にする代わりに、リーダーを削除して再作成してください。