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

如何通过AWS API端点批量删除S3存储桶内所有对象

无需手动输入所有Key清空S3桶的方法(带AWS签名请求)

核心说明

S3的DeleteObjects API不支持通配符匹配,必须明确指定每个要删除的对象Key——这就是你用*没效果的原因,接口只会把*当成一个具体的对象Key去处理,自然找不到匹配的内容。

可行流程

正确的做法是先批量获取桶内所有对象的Key,再分批次调用DeleteObjects完成删除,全程都可以通过带AWS签名的请求实现:

  1. 调用ListObjectsV2 API拉取所有对象Key

    • 请求URL:https://bucket-name.s3.us-east-1.amazonaws.com/?list-type=2
    • 请求头沿用你之前的签名配置(X-Amz-Date、Authorization等字段)
    • 注意:这个接口单次最多返回1000个对象,如果桶内对象超过1000个,需要用响应里的NextContinuationToken参数循环请求,直到拿到所有对象的Key。
  2. 构造批量删除请求体

    • 把拿到的所有对象Key按XML格式组装,单次最多可删除1000个对象:
      <Delete>
        <Object><Key>object-key-1</Key></Object>
        <Object><Key>object-key-2</Key></Object>
        <!-- 依次添加所有需要删除的对象Key -->
      </Delete>
      
    • 用你之前的DeleteObjects请求URL(https://bucket-name.s3.us-east-1.amazonaws.com/?delete),带上签名请求头发送即可。

特殊场景处理:开启版本控制的桶

如果你的桶开启了版本控制,除了当前版本的对象,还需要处理历史版本和删除标记:

  • 调用ListObjectVersions API获取所有版本的Key和对应的VersionId
  • 构造DeleteObjects请求时,每个Object节点需额外带上VersionId:
    <Delete>
      <Object><Key>object-key-1</Key><VersionId>version-id-1</VersionId></Object>
      <!-- 依次添加所有带版本ID的对象 -->
    </Delete>
    
  • 同样要把所有删除标记(Delete Marker)按上述格式加入请求体,确保彻底清空桶内内容。

操作验证

删除完成后,再次调用ListObjectsV2 API确认桶内已无对象,即可确保操作成功。

内容的提问来源于stack exchange,提问作者Prakrit Raj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:52:59