S3バケットに対してdestroy
したときに
BucketNotEmpty: The bucket you tried to delete is not empty
とか言われて怒られることが結構あるんですよね
対処(CLI)
メッセージの通りなんですが、
S3バケットの中身が空でない(NotEmpty)の状態でバケット自体削除できないわけです。
なので、CLIで消してしまうというのが一つの手
aws s3 rm s3://bucket-name --recursive
いちいち消すのが面倒くさい(tfでやりたいときは)ときは下記の通り
対処(Terraform)
resource "aws_s3_bucket" "default" {
bucket = "bucket-name"
}
resource "null_resource" "default" {
triggers = {
bucket = aws_s3_bucket.default.bucket
}
depends_on = [
aws_s3_bucket.default
]
provisioner "local-exec" {
when = destroy
command = "aws s3 rm s3://${self.triggers.bucket} --recursive"
}
}
解説
null_resourceブロックをつかって
depends_on
で依存関係を作る
↓
local-exec
のwhen=destroy
で実行するタイミングをdestroy
時だけに限定
↓
CLIでS3の中身を消す
いじょ!