You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CLI及Terraform销毁时无法删除版本化AWS S3桶

解决AWS版本化S3桶无法删除的问题

问题描述

执行删除版本化S3桶的命令时触发报错:

aws s3 rb s3://rapport1-0-ap1-dev-01 --force

报错信息:

remove_bucket failed: s3://rapport1-0-ap1-dev-01 An error occurred (BucketNotEmpty) when calling the DeleteBucket operation: The bucket you tried to delete is not empty. You must delete all versions in the bucket

已尝试以下操作但未解决问题:

  • 执行aws s3 rm s3://rapport1-0-ap1-dev-01 --recursive清空桶
  • 执行aws s3api put-bucket-versioning --bucket rapport1-0-ap1-dev-01 --versioning-configuration Status=Suspended暂停版本控制
  • 再次执行删除桶命令仍报相同错误,仅在控制台手动删除所有版本化对象后才能成功删桶

解决方案

版本化桶内除了当前版本对象,还存在历史版本对象和删除标记(Delete Marker),普通的aws s3 rm --recursive只能删除当前版本,无法处理这些隐藏内容,必须彻底清理所有版本后才能删除桶。

推荐用以下命令批量清理:

  1. 删除所有对象的历史版本:
aws s3api delete-objects --bucket rapport1-0-ap1-dev-01 --delete "$(aws s3api list-object-versions --bucket rapport1-0-ap1-dev-01 --query '{Objects: Versions[].{Key: Key, VersionId: VersionId}}')"
  1. 删除所有删除标记:
aws s3api delete-objects --bucket rapport1-0-ap1-dev-01 --delete "$(aws s3api list-object-versions --bucket rapport1-0-ap1-dev-01 --query '{Objects: DeleteMarkers[].{Key: Key, VersionId: VersionId}}')"
  1. 清理完成后,再次执行删除桶命令:
aws s3 rb s3://rapport1-0-ap1-dev-01 --force

或者用更简洁的命令一次性清理所有版本:

aws s3 rm s3://rapport1-0-ap1-dev-01 --recursive --include "*" --version-id all

注意:暂停版本控制只是停止创建新的对象版本,已存在的历史版本和删除标记不会自动消失,必须手动清理。

内容的提问来源于stack exchange,提问作者Manosundar M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 20:33:11