状況
Elastic Beanstalkで環境やアプリケーションが削除できなくなる時がありました。
原因
RDSだったり、セキュリティグループなどの依存関係があると削除できなくなるようです。
エラーメッセージ
以下はElastic Beanstalk管理内にRDSを立てた環境でRDSを先に削除してしまった際に出たエラーメッセージです。
ERROR
Stack deletion failed: The following resource(s) failed to delete: [AWSEBRDSDatabase].
2021-xx-xx-xxxx
ERROR
Deleting RDS database named: xxxxxxxxxxxx failed Reason: DBInstance xxxxxxxxxxxx was not found during DescribeDBInstances
余談&注意点
注意点
今回のエラーの本筋とは関係ありませんが
Elastic BeanstalkではRDSを『管理下に置かない』ことが推奨されています。
理由はElastic Beanstalkの環境を削除した際にRDSが管理下にあると
一緒に削除されてしまうからです。
これを防止する方法としてRDSインスタンス設定で削除防止の設定をすることもできます。
解決策
CloudFormationをラップして定番ウェブアプリケーションのAWSにおけるベストプラクティス的な
構築をサクッとサポートしてくれるのがElastic Beanstalkなんですね。なので
1.CloudFormationの管理画面を開きます。
2.左メニューからスタックをクリックします。
3.ステータスの欄が[DELETE_FAILED]となっているスタックを確認します。
(Elastic Beanstalk 環境の IDが出ていればその内容も含めて確認します)
4.失敗している処理を進めたい場合は左側のチェックを入れて[削除ボタン]を押します。
5.ポップアップウィンドウでチェックを入れるとその「リソースは無視する」という動きになりますのでチェックを入れます。
6.スタックのステータスが [DELETE_COMPLETE] に変わったら、 Elastic Beanstalkの管理画面から[環境を終了]します。
セキュリティグループが原因の場合
基本的には同様の手順で消すことができます。
しかし、セキュリティグループ自体も削除できない場合があります。
もし使っていないという確認が取れればセキュリティグループの
インバウンド、アウトバウントを削除してセキュリティブループ同士の
依存関係をとってあげることで削除できたりします。
詳細は参考ページをご参照下さい。
参考情報
本家:Beanstalkの削除
本家:セキュリティグループの削除
蛇足
PaasやSaasなどで機能が豊富で手軽なゆえに実はブラックボックス化してしまっていることは結構ある気がします。
Beanstalkの中身を詳しく知るにはVPCやCloudFormationあたりを掘り下げれば理解が深まると思います。
ツールで便利になってはいますがまだまだ最低限の知識は必要ですね。