AWS CDK経由で作成したAWS CloudFormationスタックが削除できない時は、CDKブートストラップのスタックを先に削除したかどうか確認しよう

AWS CDK経由で作成したAWS CloudFormationスタックが削除できない時は、CDKブートストラップのスタックを先に削除したかどうか確認しよう

CDKを最後に消す! (素振り) CDKを最後に消す! (素振り)
Clock Icon2025.03.19

AWS CDK経由で作成したAWS CloudFormationスタックが削除できない

おのやんです。

みなさん、AWS CDK(以下、CDK)経由で作成したAWS CloudFormation(以下、CFn)スタックが削除できない状態に陥ったことはありますか?私はあります。

具体的なエラーメッセージは以下の通りです。こちらは、AWSの生成AIサービスに機能を実際に構築して体験できるgenerative-ai-use-cases-jp(以下、GenU)というリポジトリのデプロイ分を削除しようとした際のものです。

Resource account (xxxxxxxxxxxx) doesn't match account (yyyyyyyyyyyy) parsed from ARN: arn:aws:cloudformation:us-east-1:zzzzzzzzzzzz:stack/CDKToolkit/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee

スクリーンショット 2025-03-19 11.37.21

このままだと、CFnスタックの強制削除も効きません。そもそも削除を開始できない状態となります。こちらを解決してCFnスタック削除まで実施した時のやり方を、本記事ではまとめます。

原因

原因は、 CDKToolkitのCFnスタックを先に削除してから、対象のCFnスタックを削除したため です。

CDKToolkitのCFnスタックでは、CDKブートストラップを実施した際に作成されるAWSリソースが管理されています。これらのリソースは、CDK経由でデプロイされたCFnスタックから参照されています。そのため、先にCDKTookkitのCFnスタックを削除してしまうと、CDK経由でデプロイされたCFnスタックからの参照先がなくなるため、CFnスタック削除に失敗します。

解決方法

ですので、解決方法は「 もう1回CDKToolkitのCFnスタックを作成する(= もう1回CDKブートストラップを実施する) 」です。

手っ取り早いのは、AWSアカウント内でCloudshellを起動し、そこからCDKを操作するやり方です。Cloudshellを開いて、以下を実行します。CloudshellにはあらかじめCDKがインストールされているので、このコマンドをそのまま実行すればOKです

cdk bootstrap aws://123456789012/us-east-1

CFnコンソールを見てみると、こんな感じでCDKToolkitが作成されています。これが本来の状態となりますので、この状態で、削除対象のCFnスタックを削除します。

スクリーンショット 2025-03-19 13.06.38

削除自体を開始できました。無事、スタックの削除もできました。

スクリーンショット 2025-03-19 13.16.04

CDKブートストラップのCFnスタックは最後に消そう

CDK関係のCFnスタックは、CDKToolkitのCFnスタックに依存しています。そのため、環境内のCFnスタックを全部削除するなどの際は、CDKブートストラップのCFnスタックを最後に消すようにしましょう。では!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.