バケットから複数のオブジェクトを削除します。
注意事項
DeleteMultipleObjects 操作の呼び出しでは、最大 1,000 個のオブジェクトを削除できます。
バケットにデータレプリケーションルールが設定されており、オブジェクトの作成、変更、削除を含むすべてのデータ変更 (追加/削除/変更) を同期するように設定されている場合、DeleteMultipleObjects 操作を呼び出して格納されているオブジェクトを削除すると、レプリケーションポリシーに関連付けられたデスティネーションバケットからレプリケートされたオブジェクトが削除されます。 さらに、このバケットでバージョン管理も有効になっている場合、DeleteMultipleObjects 操作を呼び出すと、削除されたオブジェクトの削除マーカーがソースバケットに作成され、デスティネーションバケットにレプリケートされます。
削除されたオブジェクトは復元できません。 慎重に行ってください。 オブジェクトの削除方法の詳細については、「オブジェクトの削除」をご参照ください。
バージョン管理
DeleteMultipleObjects 操作を呼び出して、バージョン管理されたバケットから複数のオブジェクトを削除できます。 リクエストで削除するオブジェクトのバージョン ID を指定しない場合、オブジェクトに削除マーカーが追加されます。 リクエストで削除するオブジェクトのバージョン ID を指定した場合、指定されたオブジェクトバージョンは完全に削除されます。
リクエスト構文
POST /?delete HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Content-Length: ContentLength
Content-MD5: MD5Value
Authorization: SignatureValue
<?xml version="1.0" encoding="UTF-8"?>
<Delete>
<Quiet>true</Quiet>
<Object>
<Key>key</Key>
</Object>
...
</Delete>
リクエストヘッダー
Object Storage Service (OSS) は、以下のヘッダーに基づいて DeleteMultipleObjects リクエストの本文を検証し、検証が成功した場合にのみ指定されたオブジェクトを削除します。
ヘッダー | タイプ | 必須 | 例 | 説明 |
Encoding-type | 文字列 | いいえ | url | レスポンス内のオブジェクト名のエンコーディングタイプ。 Key 要素の値は UTF-8 でエンコードされています。 Key 要素に XML 1.0 標準でサポートされていない制御文字が含まれている場合は、このヘッダーを指定して、レスポンス内の Key 要素の値をエンコードできます。 デフォルトでは、このヘッダーは空のままです。 有効な値: url |
Content-Length | 文字列 | はい | 151 | HTTP メッセージ本文の長さ。 OSS はこのヘッダーを使用してリクエストのメッセージ本文を検証し、メッセージ本文の長さがこのヘッダーの値と同じ場合にのみ指定されたオブジェクトを削除します。 |
Content-MD5 | 文字列 | はい | ohhnqLBJFiKkPSBO1eNaUA== | MD5 アルゴリズムを使用して計算された MD5 ハッシュ。 このヘッダーは、受信したメッセージの内容が送信されたメッセージの内容と同じかどうかを確認するために使用されます。 リクエストで Content-MD5 ヘッダーが指定されると、OSS はメッセージ本文に基づいて MD5 ハッシュを計算し、計算された MD5 ハッシュがリクエストで指定された Content-MD5 値と同じかどうかを確認します。 説明 Content-MD5 ヘッダーの値を取得するには、MD5 アルゴリズムを使用して DeleteMultipleObjects リクエストのメッセージ本文を暗号化して 128 ビットのバイト配列を取得し、次にバイト配列を Base64 でエンコードします。 |
リクエスト要素
要素 | タイプ | 必須 | 例 | 説明 |
Delete | コンテナー | はい | 該当なし | DeleteMultipleObjects リクエストコンテンツを格納するコンテナー。 子ノード: Object および Quiet 親ノード: なし |
Object | コンテナー | はい | 該当なし | オブジェクトに関する情報を格納するコンテナー。 子ノード: Key 親ノード: Delete |
Key | 文字列 | はい | test.jpg | 削除するオブジェクトの名前。 親ノード: Object |
Quiet | 列挙型文字列 | いいえ | false | Quiet 戻りモードを有効にするかどうかを指定します。 DeleteMultipleObjects 操作では、次の戻りモードが提供されます。
有効な値: true および false デフォルト値: false。 親ノード: Delete |
VersionId | 文字列 | いいえ | CAEQNRiBgIDyz.6C0BYiIGQ2NWEwNmVhNTA3ZTQ3MzM5ODliYjM1ZTdjYjA4**** | 削除するオブジェクトのバージョン ID。 親ノード: Object |
レスポンス要素
要素 | タイプ | 例 | 説明 |
DeleteResult | コンテナー | 該当なし | DeleteMultipleObjects リクエストの結果を格納するコンテナー。 子ノード: Deleted 親ノード: なし |
Deleted | コンテナー | 該当なし | 削除されたオブジェクトに関する情報を格納するコンテナー。 重要 Deleted レスポンス要素には、削除されたオブジェクトに関する情報のみが含まれ、削除に失敗したオブジェクトに関する情報は含まれません。 DeleteMultipleObjects 操作で削除に失敗したオブジェクトの名前を取得するには、リクエストの Delete ヘッダーの値とレスポンスの Deleted ヘッダーの値を比較します。 子ノード: Key 親ノード: DeleteResult |
Key | 文字列 | demo.jpg | 削除されたオブジェクトの名前。 親ノード: Deleted |
VersionId | 文字列 | version_20211101141621_d137 | バージョン ID。 親ノード: Deleted |
DeleteMarker | ブール値 | true | 削除されたバージョンが削除マーカーかどうかを示します。 true: 削除されたバージョンは削除マーカーです。 false: 指定されたバージョンは削除マーカーではありません。 説明 DeleteMarker 要素は、DeleteMultipleObjects 操作に削除マーカーの作成または完全な削除が含まれる場合にのみレスポンスに含まれます。 親ノード: Deleted |
DeleteMarkerVersionId | 文字列 | THUQNRiBgICEoPiC0BYiIGMxZWJmYmMzYjE0OTQ0ZmZhYjgzNzkzYjc2NjZk**** | 削除マーカーのバージョン ID。 親ノード: Deleted |
EncodingType | 文字列 | url | レスポンス内の削除されたオブジェクト名のエンコーディングタイプ。 親ノード: DeleteResult |
例
Quiet モードが無効になっているサンプルリクエスト
POST /?delete HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Wed, 29 Feb 2012 12:26:16 GMT Content-Length:151 Content-MD5: ohhnqLBJFiKkPSBO1eNaUA== Authorization: OSS qn6q**************:77Dv**************** <?xml version="1.0" encoding="UTF-8"?> <Delete> <Quiet>false</Quiet> <Object> <Key>multipart.data</Key> </Object> <Object> <Key>test.jpg</Key> </Object> <Object> <Key>demo.jpg</Key> </Object> </Delete>
サンプルレスポンス
HTTP/1.1 200 OK x-oss-request-id: 78320852-7eee-b697-75e1-b6db0f4849e7 Date: Wed, 29 Feb 2012 12:26:16 GMT Content-Length: 244 Content-Type: application/xml Connection: keep-alive Server: AliyunOSS <?xml version="1.0" encoding="UTF-8"?> <DeleteResult xmlns="http://doc.oss-cn-hangzhou.aliyuncs.com"> <Deleted> <Key>multipart.data</Key> </Deleted> <Deleted> <Key>test.jpg</Key> </Deleted> <Deleted> <Key>demo.jpg</Key> </Deleted> </DeleteResult>
Quiet モードが有効になっているサンプルリクエスト
POST /?delete HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Wed, 29 Feb 2012 12:33:45 GMT Content-Length:151 Content-MD5: ohhnqLBJFiKkPSBO1eNaUA== Authorization: OSS qn6q**************:77Dv**************** <?xml version="1.0" encoding="UTF-8"?> <Delete> <Quiet>true</Quiet> <Object> <Key>multipart.data</Key> </Object> <Object> <Key>test.jpg</Key> </Object> <Object> <Key>demo.jpg</Key> </Object> </Delete>
サンプルレスポンス
HTTP/1.1 200 OK x-oss-request-id: 559CC9BDC755F95A64485981 Date: Wed, 29 Feb 2012 12:33:45 GMT Content-Length: 0 Connection: keep-alive Server: AliyunOSS
バージョン ID が指定されていないサンプルリクエスト
POST /?delete HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Tue, 09 Apr 2019 04:20:03 GMT Content-MD5: xSLOYWaPC86RPwWXNiFeXg== Authorization: OSS qn6q**************:77Dv**************** <?xml version="1.0" encoding="UTF-8"?> <Delete> <Quiet>false</Quiet> <Object> <Key>multipart.data</Key> </Object> <Object> <Key>test.jpg</Key> </Object> </Delete>
サンプルレスポンス
次の例では、削除する 2 つのオブジェクト (multipart.dat と test.jpg) のバージョン ID が指定されていません。 そのため、OSS は 2 つのオブジェクトに削除マーカーを追加し、<DeleteMarker>true</DeleteMarker> と <DeleteMarkerVersionId>XXXXXX</DeleteMarkerVersionId> を返します。
HTTP/1.1 200 OK x-oss-request-id: 5CAC1D73B7AEADE01700**** Date: Tue, 09 Apr 2019 04:20:03 GMT Content-Type: application/xml Connection: keep-alive Server: AliyunOSS <?xml version="1.0" encoding="UTF-8"?> <DeleteResult> <Deleted> <Key>multipart.data</Key> <DeleteMarker>true</DeleteMarker> <DeleteMarkerVersionId>CAEQMhiBgIDXiaaB0BYiIGQzYmRkZGUxMTM1ZDRjOTZhNjk4YjRjMTAyZjhl****</DeleteMarkerVersionId> </Deleted> <Deleted> <Key>test.jpg</Key> <DeleteMarker>true</DeleteMarker> <DeleteMarkerVersionId>CAEQMhiBgIDB3aWB0BYiIGUzYTA3YzliMzVmNzRkZGM5NjllYTVlMjYyYWEy****</DeleteMarkerVersionId> </Deleted> </DeleteResult>
バージョン ID が指定されているサンプルリクエスト
説明Key 要素と VersionId 要素の両方を指定する必要があります。
POST /?delete HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Tue, 09 Apr 2019 06:09:34 GMT Content-Length:151 Content-MD5: 2Tpk+dL/tGyuSA+YCEuSVg== Authorization: OSS qn6q**************:77Dv**************** <?xml version="1.0" encoding="UTF-8"?> <Delete> <Quiet>false</Quiet> <Object> <Key>multipart.data</Key> <VersionId>CAEQNRiBgIDyz.6C0BYiIGQ2NWEwNmVhNTA3ZTQ3MzM5ODliYjM1ZTdjYjA4****</VersionId> </Object> </Delete>
サンプルレスポンス
この例では、削除されたオブジェクトのキーとバージョン ID が返されます。
HTTP/1.1 200 OK x-oss-request-id: 5CAC371EB7AEADE01700**** Date: Tue, 09 Apr 2019 06:09:34 GMT Content-Length: 244 Content-Type: application/xml Connection: keep-alive Server: AliyunOSS <?xml version="1.0" encoding="UTF-8"?> <DeleteResult xmlns="http://doc.oss-cn-hangzhou.aliyuncs.com"> <Deleted> <Key>multipart.data</Key> <VersionId>CAEQNRiBgIDyz.6C0BYiIGQ2NWEwNmVhNTA3ZTQ3MzM5ODliYjM1ZTdjYjA4****</VersionId> </Deleted> </DeleteResult>
versionId 要素を指定して削除マーカーを削除するサンプルリクエスト
POST /?delete HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Tue, 09 Apr 2019 06:14:50 GMT Content-Length: 178 Content-MD5: dX9IFePFgYhmINvAhG30Bg== Authorization: OSS qn6q**************:77Dv**************** <?xml version="1.0" encoding="UTF-8"?> <Delete> <Quiet>false</Quiet> <Object> <Key>multipart.data</Key> <VersionId>CAEQNRiBgICEoPiC0BYiIGMxZWJmYmMzYjE0OTQ0ZmZhYjgzNzkzYjc2NjZk****</VersionId> </Object> </Delete>
サンプルレスポンス
Key 要素は削除されたオブジェクトの名前を示し、VersionId 要素はオブジェクトの削除されたバージョンを示します。
DeleteMarker は、削除マーカーが削除されたことを示します。 DeleteMarkerVersionId は、削除マーカーのバージョン ID を示します。 この場合、VersionId と DeleteMarkerVersionId の値は同じであり、DeleteMarker と DeleteMarkerVersionId は一緒に返されます。
HTTP/1.1 200 OK x-oss-request-id: 5CAC385AB7AEADE01700**** Date: Tue, 09 Apr 2019 06:14:50 GMT Content-Length: 364 Content-Type: application/xml Connection: keep-alive Server: AliyunOSS <?xml version="1.0" encoding="UTF-8"?> <DeleteResult xmlns="http://doc.oss-cn-hangzhou.aliyuncs.com"> <Deleted> <Key>demo.jpg</Key> <VersionId>CAEQNRiBgICEoPiC0BYiIGMxZWJmYmMzYjE0OTQ0ZmZhYjgzNzkzYjc2NjZk****</VersionId> <DeleteMarker>true</DeleteMarker> <DeleteMarkerVersionId>THUQNRiBgICEoPiC0BYiIGMxZWJmYmMzYjE0OTQ0ZmZhYjgzNzkzYjc2NjZk****</DeleteMarkerVersionId> </Deleted> </DeleteResult>
OSS SDK
次のプログラミング言語の OSS SDK を使用して、DeleteMultipleObjects 操作を呼び出すことができます。
ossutil
DeleteMultipleObjects 操作に対応する ossutil コマンドについては、「delete-multiple-objects」をご参照ください。
関連情報
単一のオブジェクトを削除するために呼び出すことができる API 操作の詳細については、「DeleteObject」をご参照ください。
オブジェクトを自動的に削除する方法については、「ライフサイクル」をご参照ください。
エラーコード
エラーコード | HTTP ステータスコード | 説明 |
InvalidDigest | 400 | メッセージ本文に基づいて OSS によって計算された Content-MD5 値が、リクエストヘッダーで指定された Content-MD5 値と異なります。 |
MalformedXML | 400 |
|
FileImmutable | 409 | 削除または変更しようとしているデータは、保持ポリシーによって保護されています。 |