目次
はじめに
検証で使用したCloudFormation Stackが削除できませんでした。
リソース自体は消えているのでコスト面など問題ないのですが微妙なのでメモ残したいと思います。
以下は前提条件になります。
- クロススタック参照したテンプレート(A, B)を利用
- 内部のリソースは削除済み
- スタック削除実行してもコンパネ反応なし
- 対象スタックを更新すると失敗(
UPDATE_ROLLBACK_COMPLETE
) - 実行するユーザIAM権限は不足なし
クロススタック参照には以下の制限があります。
・別のスタックがその出力の 1 つを参照している場合、スタックを削除することはできません。
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/walkthrough-crossstackref.html
テンプレート全体図
今回利用したテンプレートの構成は図のようになります。
試したこと
保護リソースを指定して削除
aws cloudformation delete-stack --stack-name STACKNAME --retain-resources RETAINRESOUREID
An error occurred (ValidationError) when calling the DeleteStack operation:
Invalid operation on stack [arn:aws:cloudformation:REGION:0000000000:stack/STACKNAME/ID].
When you delete a stack, specify which resources to retain only when the stack is in the DELETE_FAILED state.
DELETE_FAILED
状態のスタックでないためリソース指定できないとのことなんですが
そもそも失敗に到達できないためだめでした。
コンパネも同様に以下画面まで遷移できません。
テンプレートを更新して削除
- スタックAでimportvalueで参照しているリソースを削除or適当なリソースを代替として利用してupdate stack
- スタックBで同様にupdatestack
- 両スタックを削除
こちらの手順で削除できました。
ボタンの掛け違いなおす感じで順にクロススタック参照しないよう修正すれば削除可能でした。
おわりに
この記事では通常の手順では削除できないCloudFormation Stackの削除方法について紹介しました。
めったにないケースかと思いますがなにかしらどこかしら参考になれば幸いです。