はじめに
S3オブジェクトの削除を目的として Terraform Apply を実施したところ、表題のエラーが発生しました。
問題
s3のバケットのTerraformモジュールを削除後、Applyを実施したところ、以下のエラーが発生しました。
Error: deleting S3 Bucket (Bucket-name): operation error S3: DeleteBucket, https response error StatusCode: 409, RequestID: XXXXX, HostID: XXXXX, api error BucketNotEmpty: The bucket you tried to delete is not empty. You must delete all versions in the bucket.
原因
S3バケット内のオブジェクトを事前に削除していなかったためです。
解決方法
AWSコンソールでS3バケット内のデータを削除しました。
バージョニングを有効にしている場合、バージョニングされたオブジェクトも削除しないと、同じエラーが再発します。
バージョンの表示のトグルをONにしてバージョニングデータを表示、削除しました。
おわりに
バージョニングされたオブジェクトまで削除する必要がある点は盲点でした。
Terraformでforce_destroy = trueを定義してApplyする方法でも解消できるようです。
参考
