削除保護を有効にしているAuroraのDBインスタンスを削除する方法

削除保護が有効になっているAurora DBクラスターとDBインスタンスを削除したい時には、まずDBクラスターの変更で、削除保護を無効にする必要があります。 しかし、自動アップグレードが失敗した等、何らかの問題があり、DBクラスターの変更ができない状況もありますので、削除保護が有効のままDBインスタンスを削除する方法を紹介します。
2023.10.29

困っていた内容

削除保護を有効にしているAuroraがあります。DBインスタンスを削除したいのですが、マネジメントコンソールから削除操作をすると以下のメッセージが表示され削除できません。

このデータベースでは削除保護オプションが有効になっています 最後の Aurora DB インスタンスを削除するには、Aurora クラスターを変更し、削除保護を無効化します。

対応方法

結論から申し上げますと、この場合、AWS CLIでの削除は可能です。

aws rds delete-db-instance --db-instance-identifier DBインスタンスID

公式AWSドキュメントに以下の説明がありました。 削除保護が有効になっている場合、DBクラスターは削除できません。DBインスタンスを削除する必要があります。

削除保護が有効になっているクラスターは削除できません。そのクラスター内の DB インスタンスは削除が可能ですが、クラスター自体は削除できません。これにより、クラスターボリュームに保存されたすべてのデータが、誤って削除されることを防止できます。コンソール、AWS CLI、あるいは RDS APIを使用して DB クラスターを削除しようとした場合でも、クラスターに対しては、削除保護が Aurora により強制的に適用されます。

引用元: Aurora クラスターの削除保護 | Aurora DB クラスターと DB インスタンスを削除する - Amazon Aurora

また、下記ドキュメントに、DBインスタンスを削除するには、AWS CLIまたはAPIにて削除可能であると記載されています。

DB クラスターで削除保護が有効になっている場合でも、AWS CLI または API を使用して最後の DB インスタンスを削除できます。

引用元: 単一の DB インスタンスを使用している Aurora クラスターの削除

試してみた

Aurora を新規作成します。

まず、試しにDBクラスターを delete-db-cluster で削除してみたところエラーとなり削除できませんでした。ドキュメントに記載の通り、削除保護が有効であるため削除できないとのエラーですので想定通りの動作です。

aws rds delete-db-cluster \
--db-cluster-identifier database-1

An error occurred (InvalidParameterCombination) when calling the DeleteDBCluster operation: Cannot delete protected Cluster, please disable deletion protection and try again.

次に、DBインスタンスの delete-db-instance での削除を試しました。

aws rds delete-db-instance \
    --db-instance-identifier database-1-instance-1

コマンド実行後にマネージドコンソールで確認したところ、削除中ステータスとなっていました。

その後、DBインスタンスの削除が完了しました。

RDSでも試してみた

MySQLを新規作成し、同様に試してみました。

マネジメントコンソールから削除をすると下記メッセージが表示され削除できません。

このデータベースでは削除保護オプションが有効になっています

データベースを削除できるようにするには、データベースを変更し、削除保護を無効にします。

同様に下記CLIを実行してみましたが、削除はできませんでした。

aws rds delete-db-instance --db-instance-identifier aib-mysql --profile jp

An error occurred (InvalidParameterCombination) when calling the DeleteDBInstance operation: Cannot delete protected DB Instance, please disable deletion protection and try again.

ドキュメントにも、DBインスタンスの削除の前提条件として、削除保護が無効になっている必要があると説明がありました。

DB インスタンスの削除の前提条件 DB インスタンスの削除を試みる前に、削除保護がオフになっていることを確認してください。デフォルトでは、コンソールで作成された DB インスタンスの削除保護がオンになっています。

DB インスタンスで削除保護が有効になっている場合は、インスタンス設定を変更することで削除保護を無効にできます。データベースの詳細ページで [変更] を選択するか、modify-db-instance コマンドを呼び出します。このオペレーションでは停止は発生しません。詳細については、「DB インスタンスの設定」を参照してください。

引用元: DB インスタンスの削除の前提条件 | DB インスタンスを削除する - Amazon Relational Database Service

参考