AWS CloudFormation スタックを削除したいのですが、スタックが DELETE_FAILED ステータスのままになっています。
簡単な説明
以下の理由により、スタックが DELETE_FAILED ステータスのままになっている可能性があります。
- スタックリソースに、依存オブジェクト、または削除できないその他の依存関係がある。この問題を解決するには、「削除できない依存オブジェクトやその他の依存関係を含むスタックを削除する」セクションの手順を実行してください。
- 使用されているサービスロールが有効でない、または引き受けられないものである。この問題を解決するには、「ロールが無効なスタックを削除する」セクションの手順を実行してください。
- カスタムリソースを想定時間内に安定化できなかった。この問題を解決するには、「安定化に失敗したカスタムリソースのスタックを削除する」セクションの手順を実行してください。
解決策
削除できない依存オブジェクトやその他の依存関係を含むスタックを削除する
依存関係の問題は通常、帯域外の変更を行うときに発生します。たとえば、スタックの一部であるセキュリティグループがスタックの一部ではない Elastic Network Interface にアタッチされている場合、スタックは失敗します。このスタックの失敗は、セキュリティグループリソースを削除できないためです。スタックを削除するには、その依存リソースを保持する必要があります。
リソースを保持したままスタックを削除するには、次の手順を実行します。
AWS CloudFormation コンソール
- AWS CloudFormation コンソールを開きます。
- DELETE_FAILED ステータスのままになっているスタックを選択します。
- [削除] を選択します。
注: ウィンドウが開き、削除に失敗したリソースのリストが表示されます。
- ウィンドウで、保持するリソースをすべて選択し、[スタックを削除] を選択してください。
**AWS コマンドラインインターフェイス **
注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用しているか確めてください。
次の delete-stack コマンドを実行します。
$ aws cloudformation delete-stack --stack-name my-stack --retain-resources myresource1 myresource2
**注:**my-stack は該当するスタックの名前に置き換えてください。myresource1 と myresource2 は、削除に失敗したリソースの論理 ID に置き換えてください。
CloudFormation スタックはスタックの削除を再試行しますが、保持することを選択したリソースは削除しません。スタックのステータスが DELETE_COMPLETE に変わります。
重要: 不要な課金を避けるには、スタックの削除時に保持されるリソースを手動で削除する必要があります。
ロールが無効なスタックを削除する
存在しなくなったサービスロールを使用して作成されたスタックを削除しようとすると、次のエラーが表示されます。 「DeleteStack オペレーションの呼び出し時にエラーが発生しました (検証エラー): ロールが無効であるか、引き受けることができません」
このエラーを解決するには、次の手順を実行します。
- AWS CloudFormation コンソールを開きます。
- 削除するスタックを選択して、その詳細を表示します。
- [スタック情報] タブで、**スタックに割り当てられた **IAM ロールの名前を書き留めます。
- ステップ 3 の IAM ロールと同じ名前を使用して、AWS Identity and Access Management (IAM) ロールを作成します。
重要: IAM ロールを作成するときは、スタック内のリソースを削除するための適切なアクセス権限があるか確認してください。
- AWS CloudFormation コンソールで、スタックの削除を再試行します。
安定化に失敗したカスタムリソースのスタックを削除する
想定時間内に安定化できなかったカスタムリソースのスタックを削除するには、「CloudFormation で DELETE_FAILED ステータスまたは DELETE_IN_PROGRESS ステータスのままになっている Lambda-backed カスタムリソースを削除するにはどうすればよいですか?」を参照してください。