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

如何使用aws s3api调用Amazon S3 API删除S3存储桶中的文件夹

用aws s3api实现递归删除S3指定前缀下所有对象的方法

你已经知道的aws s3 rm s3://xyz/abc --recursive是AWS CLI封装的高层便捷命令,要使用底层s3api实现同等效果,有两种常用方案:

方案1:批量删除(推荐,适合大量对象场景)

配合s3api list-objects-v2查询目标前缀的所有对象,再调用delete-objects接口批量删除,一次最多可删1000个对象,效率远高于逐行删除。

带jq工具的命令示例(jq为常用JSON处理工具,多数环境默认预装)

aws s3api delete-objects \
  --bucket xyz \
  --delete "$(aws s3api list-objects-v2 \
    --bucket xyz \
    --prefix abc/ \
    --query 'Objects[].{Key:Key}' \
    --output json | jq '{Objects: ., Quiet: false}')"

无jq工具的命令示例

aws s3api delete-objects \
  --bucket xyz \
  --delete Objects="$(aws s3api list-objects-v2 --bucket xyz --prefix abc/ --query 'Objects[].{Key=Key}' --output text | awk '{printf "{Key=\"%s\"},", $0}' | sed 's/,$//')",Quiet=false

方案2:逐行删除(适合少量对象场景)

逻辑更简单,遍历查询到的对象逐个调用delete-object接口删除:

aws s3api list-objects-v2 \
  --bucket xyz \
  --prefix abc/ \
  --query 'Objects[].Key' \
  --output text | tr '\t' '\n' | xargs -I {} aws s3api delete-object --bucket xyz --key {}

注意事项

  1. 目标前缀末尾建议加/,避免误删前缀名称相似的其他对象,比如你要删abc文件夹下的内容,就写--prefix abc/
  2. 如果目标前缀下对象超过1000个,list-objects-v2默认仅返回前1000条,需要添加分页参数或循环调用覆盖全量对象
  3. 上述两种方案都会同步删除S3中用于标记空文件夹的abc/ 0字节占位对象,最终效果和aws s3 rm --recursive完全一致

内容的提问来源于stack exchange,提问作者Debdut Goswami

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:39:05