削除保護を有効にしているAuroraのDBインスタンスを削除する方法
困っていた内容
削除保護を有効にしている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
参考
- 単一の DB インスタンスを使用している Aurora クラスターの削除 | Aurora DB クラスターと DB インスタンスを削除する - Amazon Aurora
- Aurora クラスターの削除保護 | Aurora DB クラスターと DB インスタンスを削除する - Amazon Aurora
- delete-db-instance - AWS CLI Command Reference
- delete-db-cluster - AWS CLI Command Reference
- DB インスタンスの削除の前提条件 | DB インスタンスを削除する - Amazon Relational Database Service