- 公開日
- 最終更新日
【Terraform】S3やECRに中身が入っていても一気にterraform destroyする方法
この記事を共有する

目次
はじめに
皆さんこんにちは!パーソル&サーバーワークスの榎本です。
terraform destroyでリソース削除を行う際、リソースに中身が入っているから削除できないというエラーが表示されたことはありませんか?
最近は検証でTerraformをよく使っているのですが、毎回手動で中身を消すのではなく一気にリソース消したいと思っていたところ、よい解決策を見つけたので共有いたします!
今回はS3とECRの場合でお伝えいたします!
本記事の目的
S3とECRをTerraformで構築した後、中身が入っていても terraform destroy
コマンドで一気にリソース削除ができるようになること
前提
- S3バケットにオブジェクトが存在すること
- ECRリポジトリにイメージが存在すること
エラー内容
S3
Error: ECR Repository(xxxxxxxxxx)not empty, consider using force_delete: operation error ECR: DeleteRepository, https response error StatusCode 400, RequestID:xxxxxxxxxx,
RepositoryNotEmptyException: The repository with name 'xxxxxxxxxx' in registry with id 'xxxxxxxxxx' cannot be deleted because it still contains images
ECR
Error: deleting S3 Bucket(xxxxxxxxxx): operation error S3: DeleteBucket, https response error StatusCode 409, RequestID:xxxxxxxxxx, HostID:xxxxxxxxxx,
api error BucketNotEmpty: The bucket you tried to delete is not empty
要望
S3とECRに中身が入っていても terraform destroy
コマンドで一気にリソース削除がしたい
解決策
S3とECRを作成するtfファイルにて、S3バケットを作成するための記載箇所とECRリポジトリを作成するための記載箇所に以下追記する
S3
force_destroy = true
ECR
force_delete = true
削除成功画面
注意点
terraform apply
コマンドでリソースを構築する前に上記記載をしておく必要があります。
terraform apply
時にterraform.tfstateファイルに以下のように記載されてしまうためです。
- S3
"force_destroy" = false
- ECR
"force_delete" = null
※ただし、terraform.tfstateファイルを以下のように直接修正することで、 terraform apply
後でも対応することは可能です。
- S3
"force_destroy" = true
- ECR
"force_delete" = true
まとめ
検証などで頻繁に terraform destroy
コマンドを実行する際は、本設定を入れておくとスムーズに削除ができるため便利です!
必要に応じてぜひ使ってみてください!
この記事は私が書きました
榎本 将希
記事一覧2024 Japan AWS All Certifications Engineers サッカー観戦とサウナが好きです! 機械学習を勉強中です!
