DeleteMultipleObjects 操作は、同じバケットから複数のオブジェクトを削除するために使用します。
注意事項
1 回の DeleteMultipleObjects リクエストで削除できるオブジェクトは 1,000 個までです。
バケットにデータレプリケーションルールがあり、レプリケーションポリシーが Sync Additions, Deletions, And Modifications に設定されている場合、DeleteMultipleObjects を呼び出してバケット内のオブジェクトを削除すると、ターゲットバケット内の対応するオブジェクトも削除されます。これらのオブジェクトは削除後に回復できません。バケットでバージョン管理も有効になっている場合、DeleteMultipleObjects を呼び出すと、OSS はバケット内の削除された各オブジェクトに対して削除マーカーを作成します。この操作はターゲットバケットにレプリケーションされ、対応する削除マーカーが作成されます。
削除されたオブジェクトは回復できません。操作は慎重に行ってください。オブジェクトの削除方法の詳細については、「オブジェクトの削除」をご参照ください。
バージョン管理
DeleteMultipleObjects 操作を使用して、バージョン管理が有効なバケットから複数のオブジェクトを削除することもできます。削除リクエストでバージョン ID を指定しない場合、削除マーカーが挿入されます。バージョン ID を指定した場合、指定されたバージョンのオブジェクトが完全に削除されます。
権限
デフォルトでは、Alibaba Cloud アカウントは完全な権限を持っています。Alibaba Cloud アカウント配下の Resource Access Management (RAM) ユーザーまたは RAM ロールは、デフォルトでは何の権限も持っていません。Alibaba Cloud アカウントまたはアカウント管理者は、RAM ポリシーまたはバケットポリシーを通じて操作権限を付与する必要があります。
API | アクション | 定義 |
DeleteMultipleObjects | oss:DeleteObject | バケットから複数のオブジェクトを削除します。 |
リクエスト構文
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>リクエストヘッダー
OSS は、削除操作を実行する前に、次のリクエストヘッダーに基づいてメッセージ本文を検証します。
名前 | 型 | 必須 | 例 | 説明 |
Encoding-type | 文字列 | いいえ | url2 | オブジェクトのキーは UTF-8 でエンコードする必要があります。キーに XML 1.0 でサポートされていない制御文字が含まれている場合は、Encoding-type を url2 に設定し、リクエスト内のキーを URL エンコードします。OSS はレスポンス内の Key フィールドをエンコードします。 デフォルト値:なし 有効な値:url2 |
Content-Length | 文字列 | はい | 151 | HTTP メッセージ本文の長さ。 OSS は、このリクエストヘッダーに基づいて受信したメッセージ本文を検証します。削除操作は、メッセージ本文が検証された後にのみ実行されます。 |
Content-MD5 | 文字列 | はい | ohhnqLBJFiKkPSBO1eNaUA== | Content-MD5 ヘッダーは、MD5 アルゴリズムを使用して生成された値です。このヘッダーは、メッセージの内容が送信された内容と同じであるかどうかを確認するために使用されます。Content-MD5 リクエストヘッダーを指定すると、OSS はメッセージ本文の Content-MD5 値を計算し、その値が Content-MD5 リクエストヘッダーの値と一致するかどうかを確認します。 説明 Content-MD5 フィールドの値を取得するには、DeleteMultipleObjects リクエストのメッセージ本文を MD5 アルゴリズムで暗号化して 128 ビットのバイト配列を取得します。次に、そのバイト配列を Base64 でエンコードします。エンコードされた文字列が Content-MD5 フィールドの値になります。 |
リクエスト要素
名前 | 型 | 必須 | 例 | 説明 |
Delete | コンテナー | はい | N/A | DeleteMultipleObjects リクエストのコンテナー。 子ノード:1 つ以上の Object 要素と Quiet 要素 親ノード:なし |
Object | コンテナー | はい | N/A | オブジェクトに関する情報のコンテナー。 子ノード:Key 親ノード:Delete |
Key | 文字列 | はい | test.jpg | 削除するオブジェクトの名前。 親ノード:Object |
Quiet | 列挙文字列 | いいえ | false | シンプルレスポンスモードを有効にするかどうかを指定します。 DeleteMultipleObjects は、次のレスポンスモードを提供します。
有効な値:true (シンプルモードを有効にする) と false (詳細モードを有効にする) デフォルト値:false 親ノード:Delete |
VersionId | 文字列 | いいえ | CAEQNRiBgIDyz.6C0BYiIGQ2NWEwNmVhNTA3ZTQ3MzM5ODliYjM1ZTdjYjA4**** | 削除するオブジェクトのバージョン番号。 親ノード:Object |
レスポンス要素
名前 | 型 | 例 | 説明 |
DeleteResult | コンテナー | N/A | DeleteMultipleObjects リクエストの結果のコンテナー。 子ノード:Deleted 親ノード:なし |
Deleted | コンテナー | N/A | 正常に削除されたオブジェクトのコンテナー。 重要 Deleted レスポンス要素には、正常に削除されたオブジェクトのみが含まれます。削除に失敗したオブジェクトは含まれません。削除に失敗したオブジェクトの名前を取得するには、リクエスト内のオブジェクトのリストとレスポンスの `Deleted` 要素内のオブジェクトのリストを比較します。 子ノード:Key 親ノード:DeleteResult |
Key | 文字列 | demo.jpg | 削除されたオブジェクトの名前。 親ノード:Deleted |
VersionId | 文字列 | version_20211101141621_d137 | バージョン ID。 親ノード:Deleted |
DeleteMarker | ブール値 | true | バージョンが削除マーカーであるかどうかを示します。有効な値:true と false。 説明 この要素は、削除マーカーが作成された場合、または削除マーカーが完全に削除された場合にのみ true の値で返されます。 親ノード:Deleted |
DeleteMarkerVersionId | 文字列 | THUQNRiBgICEoPiC0BYiIGMxZWJmYmMzYjE0OTQ0ZmZhYjgzNzkzYjc2NjZk**** | 削除マーカーのバージョン ID。 親ノード:Deleted |
EncodingType | 文字列 | url2 | レスポンス内のオブジェクト名に使用されるエンコーディングタイプ。リクエストで Encoding-type パラメーターを指定した場合、OSS はレスポンス内の Key をエンコードします。 親ノード:DeleteResult |
例
シンプルレスポンスモードを無効にしたリクエスト例
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: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <?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>シンプルレスポンスモードを有効にしたリクエスト例
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: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <?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 を指定せずに DeleteMultipleObjects 操作を呼び出すリクエスト例
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: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <?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: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <?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>バージョン ID を指定して削除マーカーを削除するリクエスト例
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: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <?xml version="1.0" encoding="UTF-8"?> <Delete> <Quiet>false</Quiet> <Object> <Key>multipart.data</Key> <VersionId>CAEQNRiBgICEoPiC0BYiIGMxZWJmYmMzYjE0OTQ0ZmZhYjgzNzkzYjc2NjZk****</VersionId> </Object> </Delete>レスポンス例
返された Key と VersionId は、削除されたオブジェクトのキーとバージョン ID を表します。
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>
SDK
DeleteMultipleObjects 操作の SDK は、次の言語で利用できます。
ossutil コマンドラインツール
DeleteMultipleObjects 操作の ossutil コマンドについては、「delete-multiple-objects」をご参照ください。
関連ドキュメント
単一のファイルを削除するには、「DeleteObject」をご参照ください。
オブジェクトを自動的に削除する方法については、「ライフサイクル」をご参照ください。
エラーコード
エラーコード | HTTP ステータスコード | 説明 |
InvalidDigest | 400 | Content-MD5 リクエストヘッダーを指定すると、OSS はメッセージ本文の Content-MD5 値を計算し、その値が Content-MD5 リクエストヘッダーの値と一致するかどうかを確認します。値が一致しない場合、このエラーが返されます。 |
MalformedXML | 400 |
|
FileImmutable | 409 | 保護されているバケット内のデータを削除または変更しようとすると、このエラーが返されます。 |