【AWS】Aurora Postgresでインスタンスのサブネットを変更する
やりたいこと
開発環境などSingle AZでAuroraを使用している際にインスタンスが所属しているサブネットを変更します。サブネットグループに含めるサブネットの設定をDBインスタンス作成後に変更したい場合を想定しています。
大まかな手順としては、DBインスタンスが所属するサブネットを変更した後でサブネットグループから不要なサブネットを削除します。
インスタンスが所属するサブネットはサブネットグループから削除できない
サブネットグループに設定すべきサブネットを間違えたのであれば、サブネットグループを編集して不要なサブネットを削除すればいい気がします。しかし、削除すべきサブネットにDBインスタンスが所属している場合は当該サブネットをサブネットグループから削除することができません。
削除しようとすると以下のキャプチャのようにエラーメッセージが表示されます。
サブネットの変更方法
DBインスタンスが所属するサブネットの変更と不要サブネットのサブネットグループからの削除は以下の手順で行います。
- Public Accessibilityをオフにする。
- リードレプリカを追加する。リードレプリカが残したいサブネットに作成されていることを確認する。
- フェイルオーバを行う。
- 不要サブネットのインスタンスを削除する。
- サブネットグループから不要サブネットを削除する。
Public Accesibilityをオフにする
インスタンスのIPアドレスから所属しているサブネットを特定するためにPublic Accessibilityをオフにします。元々オフであればこの手順は不要です。
リードレプリカの追加
リードレプリカを追加します。追加前にサブネットグループから削除できる不要サブネットがあれば削除しておきます。
リードレプリカが作成されたら、digコマンドを使って追加されたリードレプリカのIPアドレスを確認します。解決されたIPアドレスとサブネットのCIDR設定を確認して、リードレプリカが削除したいサブネット以外に作成されていることを確認します。
$ dig reader1. xxxxxxxx.ap-northeast-1.rds.amazonaws.com
...省略
;; ANSWER SECTION:
reader1.cru126zbyvok.ap-northeast-1.rds.amazonaws.com. 5 IN A 10.2.xxx.yyy
フェイルオーバ実施
フェイルオーバを実行してリードレプリカをプライマリへ昇格させます。
不要サブネットのインスタンス削除
リードレプリカとなったインスタンスを削除します。これでサブネットグループから削除したいサブネットからDBインスタンスがいなくなります。
不要サブネット削除
サブネットグループを編集して不要なサブネットをサブネットグループから削除します。所属するDBインスタンスが無くなったのでサブネットグループから削除することができます。