Delete Multiple Objects

2022-09-23 07:54:12

DeDelete Multiple Objects 操作支持一次请求内删除多个 Object。

  • 操作支持一次请求内最多删除1000个 Object,并提供两种返回模式:详细(verbose)模式和简单(quiet)模式:
  • 详细模式:OSS 返回的消息体中会包含每一个删除 Object 的结果。
  • 简单模式:OSS 返回的消息体中只包含删除过程中出错的 Object 结果;如果所有删除都成功的话,则没有消息体。

请求语法

POST /bucket-name?delete HTTP/1.1
Host: s3-us-east-1.ossfiles.com
Date: GMT Date
Content-Length: ContentLength
x-amz-content-sha256: ContentSha256
Authorization: SignatureValue

<?xml version="1.0" encoding="UTF-8"?>
<Delete>
  <Quiet>true</Quiet>
  <Object>
    <Key>key</Key>
  </Object></Delete>

请求元素

名称 描述
Delete 保存 Delete Multiple Object 请求的容器。 类型:容器 子节点:一个或多个 Object 元素,可选的 Quiet 元素 父节点: None.
Quiet 打开“简单”响应模式的开关。 类型:枚举字符串 有效值:true、false 默认值:false 父节点:Delete
Object 保存一个 Object 信息的容器。 类型:容器 子节点:key 父节点:Delete
Key 被删除 Object 的名字。 类型:字符串 父节点:Object

响应元素

名称 描述
DeleteResult 保存Delete Multiple Object请求结果的容器。 类型:容器 子节点:Deleted 父节点:None
Deleted 保存被成功删除的Object的容器。 类型:容器 子节点:Key 父节点:DeleteResult
Key OSS执行删除操作的 Object 名字。 类型:字符串 父节点:Deleted
Error 保存删除失败的 Object 的容器。 类型:容器 子节点:Key 父节点:DeleteResult

细节分析

  1. Delete Multiple Objects 请求必须填 Content-Length 和 Content-MD5 字段。棱束链对象储存 会根据这些字段验证收到的消息体是正确的,之后才会执行删除操作。
  2. Delete Multiple Objects 请求默认是详细(verbose)模式。
  3. 在 Delete Multiple Objects 请求中删除一个不存在的 Object,仍然认为是成功的。
  4. Delete Multiple Objects 请求最多允许一次删除1000个Object;超过1000个 Object 或者不存在 object 会返回 InvalidRequest错误码。

示例

请求示例:

POST /test212/?delete= HTTP/1.1
Authorization: AWS4-HMAC-SHA256 Credential=6a19c6de088ff32ff663287eec8f3b85/20220420/us-east-1/s3/aws4_request,SignedHeaders=content-md5;host;user-agent;x-amz-content-sha256;x-amz-date, Signature=39e03234bee7713d0146ab75bf0e43a169fd5a57515cab62c8f5952257f4f9d9
Content-MD5: q969oS45M58Vxq6gOyGMYQ==
x-amz-content-sha256: c78460c906b0f662694edd2a1e333e7649eba3bcf7a49518930f4515b28cbb9f
x-amz-date: 20220420T092058Z
Host: s3-us-east-1.ossfiles.com
Content-Length: 535

<?xml version="1.0" encoding="utf-8"?>
<Delete>
    <Quiet>true</Quiet>
    <Object>
        <Key>test2.txt</Key>
    </Object>
    <Object>
        <Key>test1.txt</Key>
    </Object>
</Delete>

返回示例:

HTTP/1.1 200 OK
Date: Wed, 20 Apr 2022 09:20:54 GMT
Content-Type: application/xml
Content-Length: 134
Connection: keep-alive

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<DeleteResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"></DeleteResult>