
# 删除对象-DeleteObject
#### 功能介绍
当对象不再使用或无需保存时，可及时删除，以减少存储空间占用及存储成本。了解更多删除对象相关介绍，请参见[删除对象](https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829108.html)。如果要删除的对象不存在，则仍然返回成功信息。
#### 与其他功能结合使用
- [多版本]
  当桶的多版本状态是开启时，不指定版本删除对象将产生一个带唯一版本号的删除标记，并不删除对象；当桶的多版本状态是Suspended时，不指定版本删除将删除版本号为null的对象，并将产生一个版本号为null的删除标记。
  如果要删除指定版本的对象，请求可携带versionId消息参数。
- [WORM]
  由于打开了WORM开关的桶默认开启了多版本，当您不指定版本号进行删除对象操作时，由于多版本机制并不会真正删除此对象，您的操作可以成功并为最新版本的对象产生一个带唯一版本号的删除标记。当您指定版本号进行删除对象操作时，如果对象处于WORM保护状态，WORM的保护模式会限制对象的删除并返回403。删除标记不会被WORM保护。
#### 授权信息
您必须是对象拥有者或拥有删除对象的权限，才能调用本接口，建议使用IAM或桶策略进行授权。了解更多OBS授权方式请参见[OBS不同权限控制方式的区别](https://support.huaweicloud.com/perms-cfg-obs/obs_40_0001.html)。
- 如果使用**IAM授权** ，那么请在"角色与策略授权"、"身份策略授权"两种IAM授权方式中选择一种，并配置相应权限：
  - 如果使用**角色与策略授权** （旧版IAM，即IAM v3接口），需具备**obs:object:DeleteObject** （未开启多版本）、**obs:object:DeleteObjectVersion** （开启或暂停多版本）权限，授权操作请参见[创建IAM自定义策略](https://support.huaweicloud.com/usermanual-iam/iam_01_0605.html)。
  
  - 如果使用**身份策略授权** （新版IAM，即IAM v5接口），如下表所示，需具备**obs:object:deleteObject** （未开启多版本）、**obs:object:deleteObjectVersion** （开启或暂停多版本）权限，授权操作请参见[创建IAM自定义身份策略](https://support.huaweicloud.com/usermanual-iam5/iam_01_0917.html)。
    
    | 授权项 Action                                                                | 访问级别 Access Level | 资源类型（\*为必须） Resource Type (\*: required) | [条件键](https://support.huaweicloud.com/api-obs/obs_04_0112.html#ZH-CN_TOPIC_0000002375307974__condition_table) Condition Key                                                                                                                                                                                                                                                                                          | [别名](https://support.huaweicloud.com/iam5_faq/iam_01_1103.html) Alias | 依赖的授权项 Dependencies                                                                                                                                                                                                                                                                                                                                              |
    |:---|:---|:---|:---|:---|:---|
    | obs:object:deleteObject（未开启多版本） obs:object:deleteObjectVersion（开启或暂停多版本） | Write                                                      | object \*                                                                         | [g:EnterpriseProjectId](https://support.huaweicloud.com/usermanual-iam5/iam_01_0934.html#section2)                                                                                                                                                                                                                                                                                                                                                           | -                                                                                                               | - functiongraph:function:invokeAsync  - functiongraph:workflow:invoke  - smn:topic:publish   |
    | obs:object:deleteObject（未开启多版本） obs:object:deleteObjectVersion（开启或暂停多版本） | Write                                                      | -                                                                                 | - obs:EpochTime  - obs:SourceIp  - obs:TlsVersion  - obs:CustomDomain   | -                                                                                                               | - functiongraph:function:invokeAsync  - functiongraph:workflow:invoke  - smn:topic:publish   |
       
    
   
- 如果使用**桶策略** 进行授权，需具备**obs:object:DeleteObject** （未开启多版本）、**obs:object:DeleteObjectVersion** （开启或暂停多版本）权限，具体操作请参见[自定义创建桶策略](https://support.huaweicloud.com/usermanual-obs/obs_03_0123.html)。
 
#### URI
DELETE /{*object_key*}
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-obs/obs_04_0006.html)。调用前需要先[计算API签名](https://support.huaweicloud.com/api-obs/obs_04_0009.html)，并将签名添加到请求中。
您还可以使用[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/OBS/doc?api=DeleteObject)在线调试接口。
#### 请求消息样式
```
DELETE /ObjectName HTTP/1.1 
Host: bucketname.obs.cn-north-4.myhuaweicloud.com 
Date: date
Authorization: authorization
```
#### URI参数（URI Parameters）
请求参数说明如[表1]所示。
![](https://support.huaweicloud.com/api-obs/public_sys-resources/notice_3.0-zh-cn.png)
删除对象时，请求消息参数仅支持[表1 请求消息参数]中列出的参数信息，如果包含了OBS无法识别的参数信息，服务端将返回400错误。
 表1URI参数 
| **参数名称**  | **是否必选** | 参数类型   | **描述**                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| versionId | 否        | String | **参数解释：** 待删除对象的版本号。 **约束限制：** 无 **取值范围：** 长度为32的字符串。 **默认取值：** 无 |
   
#### 请求头参数（Request headers）
该请求使用公共请求头，具体参见[表3](https://support.huaweicloud.com/api-obs/obs_04_0007.html#ZH-CN_TOPIC_0136436606__table25197309)。
#### 请求体参数（Request body）
该请求消息中不带请求体参数。
#### 响应消息样式
```
HTTP/1.1 status_code
Date: date
```
#### 状态码
了解状态码详情请参见[状态码](https://support.huaweicloud.com/api-obs/obs_04_0114.html)。
如果要删除的对象不存在，则仍然返回成功信息。
#### 响应头 (Response Headers)
该请求的响应消息使用公共响应头，具体请参考[表1](https://support.huaweicloud.com/api-obs/obs_04_0013.html#ZH-CN_TOPIC_0173612084__d0e686)。
除公共响应头之外，如果开启了多版本功能，还可能使用如下[表2]中的消息头。
 表2响应头 
| 消息头名称               | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|
| x-obs-delete-marker | Boolean | **参数解释：** 标识对象是否标记删除。如果不是，则响应中不会出现该消息头。 **取值范围：** - true：是标记删除  - false：不是标记删除   |
| x-obs-version-id    | String  | **参数解释：** 对象的版本号。如果该对象无版本号，则响应中不会出现该消息头。 **取值范围：** 长度为32的字符串。                                                                                                                                                                                                                                        |
   
#### 响应体 (Response Body)
该请求的响应消息中不带消息元素。
#### 错误响应消息
无特殊错误，所有错误已经包含在[错误码概述](https://support.huaweicloud.com/api-obs/obs_04_0115.html)中。
#### 请求示例
```
DELETE /object2 HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.cn-north-4.myhuaweicloud.com
Accept: */*
Date: Wed, 01 Jul 2015 04:19:21 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:MfK9JCnSFHCrJmjv7iRkRrrce2s=
```
#### 响应示例
```
HTTP/1.1 204 No Content
Server: OBS
x-obs-request-id: 8DF400000163D3F51DEA05AC9CA066F1
x-obs-id-2: 32AAAUgAIAABAAAQAAEAABAAAQAAEAABCSgkM4Dij80gAeFY8pAZIwx72QhDeBZ5
Date: Wed, 01 Jul 2015 04:19:21 GMT
```
#### 请求示例：指定versionId执行DeleteObject操作
```
DELETE /object2?versionId=G001118A49821905FFFFD28739D419DA HTTP/1.1
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:iqSPeUBl66PwXDApxjRKk6hlcN4=
User-Agent: curl/7.29.0
Host: examplebucket.obs.cn-north-4.myhuaweicloud.com
Date: Wed, 01 Jul 2015 02:37:22 GMT
Content-Type: application/xml
```
#### 响应示例：指定versionId执行DeleteObject操作
```
HTTP/1.1 200 OK
x-obs-id-2: 32AAAUgAIAABAAAQAAEAABAAAQAAEAABCS3WJqDiMsxgGHKQrlqST9veFKpDgE50
x-obs-request-id: 0000018A4997390DD306CCDA0DEC814F
Server: OBS
Date: Wed, 01 Jul 2015 02:37:22 GMT
x-obs-version-id: G001118A49821905FFFFD28739D419DA
```
#### 请求示例：指定versionId删除"删除标记"
```
DELETE /object2?versionId=G001118A6456208AFFFFD24829FCF614 HTTP/1.1
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:iqSPeUBl66PwXDApxjRKk6hlcN4=
User-Agent: curl/7.29.0
Host: examplebucket.obs.cn-north-4.myhuaweicloud.com
Date: Wed, 01 Jul 2015 02:37:22 GMT
Content-Type: application/xml
```
#### 响应示例：指定versionId删除"删除标记"
```
HTTP/1.1 200 OK
x-obs-id-2: 32AAAUgAIAABAAAQAAEAABAAAQAAEAABCS3WJqDiMsxgGHKQrlqST9veFKpDgE50
x-obs-request-id: 0000018A4997390DD306CCDA0DEC814F
Server: OBS
Date: Wed, 01 Jul 2015 02:37:22 GMT
x-obs-version-id: G001118A6456208AFFFFD24829FCF614
```
#### 使用SDK调用接口
建议您使用OBS SDK调用接口。SDK对API进行了封装以简化您的开发工作，直接调用SDK接口函数即可访问OBS，无需手动计算签名。
| [Java](https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_0804.html) | [Python](https://support.huaweicloud.com/sdk-python-devg-obs/obs_22_0918.html) | [C](https://support.huaweicloud.com/sdk-c-devg-obs/obs_20_0604.html) | [Go](https://support.huaweicloud.com/sdk-go-devg-obs/obs_33_0506.html) | [BrowserJS](https://support.huaweicloud.com/sdk-browserjs-devg-obs/obs_24_0704.html)  | [.NET](https://support.huaweicloud.com/sdk-dotnet-devg-obs/obs_25_0604.html) | [Android](https://support.huaweicloud.com/sdk-android-devg-obs/obs_26_0604.html) | [iOS](https://support.huaweicloud.com/sdk-ios-devg-obs/obs_27_0604.html) | [PHP](https://support.huaweicloud.com/sdk-php-devg-obs/obs_28_0604.html) | [Node.js](https://support.huaweicloud.com/sdk-nodejs-devg-obs/obs_29_0606.html) |
|---|---|---|---|---|---|---|---|---|---|
   
#### 相关文档
- 使用obsutil删除对象，请参见[删除对象](https://support.huaweicloud.com/utiltg-obs/obs_11_0021.html)。
- 使用OBS Browser+删除对象，请参见[删除文件或文件夹](https://support.huaweicloud.com/browsertg-obs/obs_03_1066.html)。
- 了解更多删除对象相关介绍，请参见[删除对象](https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829108.html)。
- API操作涉及的计费项参见[计费项](https://support.huaweicloud.com/price-obs/obs_42_0002.html)。
 
