Delete Multiple Objects

DELETE Object では一度に1つのオブジェクトしか削除することができませんが、この操作を使うことによって1回のリクエストで複数のオブジェクトを削除することができます。

この操作を行うには、削除するオブジェクトのオブジェクトキーのリストをXML形式でリクエストボディに指定して POST で送付します。それぞれのオブジェクトが削除されたかどうかの結果はレスポンスで確認することができます。
削除の際は、1つ1つのオブジェクトに対して権限(オブジェクトのACLおよびバケットポリシー)を評価します。権限については DELETE Object をご覧ください。

 

リクエスト情報

シンタックス
POST /{bucket name}?delete HTTP/1.1
Host: s3api.iot.iij.jp
Authorization: {authorization string}
Content-Length: {length}
Content-MD5: {MD5}

<?xml version="1.0" encoding="UTF-8"?>
<Delete>
    <Quiet>true</Quiet>
    <Object>
         <Key>{object key}</Key>
    </Object>
    <Object>
         <Key>{object key}</Key>
    </Object>
    ...
</Delete>
リクエストパラメータ

この操作ではリクエストパラメータは使用しません。

リクエストヘッダー

この操作では基本リクエストヘッダーに加え、以下のヘッダーを使用します。 

表. Delete Multiple Objects リクエストヘッダー一覧

HTTPヘッダー説明必須
Content-MD5

Base64でエンコードされたRFC 1864に準拠した128ビットMD5のダイジェストメッセージ(ヘッダーは含みません)
送信データの保全チェックに用います。

  • 型:String
  • デフォルト値:なし
Content-Length

RFC 2616に準拠したリクエストボディのサイズ

  • 型:String
  • デフォルト値:なし

 

リクエストエレメント

この操作では以下のリクエストエレメントを使用します。

表. Delete Multiple Objects リクエストエレメント一覧

名前説明必須
Delete

リクエストのルート要素となるコンテナ

  • 型:Container
  • 親:なし
Quiet

Quietモード(出力を抑止するモード)を有効にする
この要素を指定する場合は必ず true を指定してください。(無効にする場合は無指定)

  • 型:Boolean
  • デフォルト値:false
  • 親:Delete
×
Object

削除するオブジェクト情報が含まれるコンテナ

  • 型:Container
  • 親:Delete
Key

削除するオブジェクトのオブジェクトキー

  • 型:String
  • 親:Object

 

レスポンス情報

レスポンスヘッダー

この操作では基本レスポンスヘッダーを返します。

レスポンスエレメント

この操作では以下のレスポンスエレメントを返します。

表. Delete Multiple Objects レスポンスエレメント一覧

名前説明
DeleteResult

レスポンスのルート要素となるコンテナ

  • 型:Container
  • 親:なし
Deleted

削除に成功したオブジェクト情報を含むコンテナ

  • 型:Boolean
  • デフォルト値:false
  • 親:DeleteResult
Key

削除操作を行ったオブジェクトのオブジェクトキー

  • 型:String
  • 親:Deleted, Error
Error

削除に失敗したオブジェクトの情報とエラー情報を含むコンテナ

  • 型:Container
  • 親:DeleteResult
Code

オブジェクト削除失敗時のエラーコード

  • 型:String
  • 値:AccessDenied, InternalError
  • 親:Error
Message

オブジェクト削除失敗時のエラーメッセージ

  • 型:String
  • 親:Error
エラー情報

この操作は共通のエラーレスポンスを返します。詳しくは エラーコード一覧 をご覧ください。

 

サンプル 

複数のオブジェクトを削除するサンプル

リクエスト
POST /mybucket?delete HTTP/1.1
Host: s3api.iot.iij.jp
Accept: */*
Date: Wed, 1 Oct 2014 00:00:00 GMT
Content-MD5: CLe6JwkZAD1ei6hp9XZIee==
Authorization: IIJGIO 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXAMPLE=
Content-Length: 125
Connection: Keep-Alive

<Delete>
  <Object>
    <Key>sample1.txt</Key>
  </Object>
  <Object>
    <Key>sample2.txt</Key>
  </Object>
</Delete>
レスポンス

1つは削除に成功し、もう1つのオブジェクトは削除するための権限がなくエラーになった場合のレスポンスは以下のようになります。

HTTP/1.1 200 OK
x-iijgio-id-2: eftixk72aD6Ap51TnqcoF8eFidJG9Z/2mkiDFu8yU9AS1ed4OpIszj7UDNEHGran
x-iijgio-request-id: 318BC8BC148832E5
Date: Wed, 1 Oct 2014 00:00:00 GMT
Content-Type: application/xml
Server: s3api.iot.iij.jp
Content-Length: 251

<?xml version="1.0" encoding="UTF-8"?>
<DeleteResult xmlns="http://acs.dag.iijgio.com/doc/2006-03-01/">
  <Deleted>
    <Key>sample1.txt</Key>
  </Deleted>
  <Error>
    <Key>sample2.txt</Key>
    <Code>AccessDenied</Code>
    <Message>Access Denied</Message>
  </Error>
</DeleteResult>