
# 使用生命周期删除和转换对象存储类别的规则
本节介绍使用生命周期定时转换对象存储类别、删除对象的规则。
#### 约束限制
归档存储和深度归档存储不支持多AZ，因此不支持使用生命周期将多AZ桶中对象的存储类别转化为归档存储或深度归档存储。
#### 使用生命周期转换对象存储类别规则
图1使用生命周期转换对象存储类别   
![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002048748774.png)
如[图]所示，OBS支持通过生命周期实现以下场景的存储类别自动转换：
- 标准存储-\>低频访问存储、归档存储、深度归档存储
- 低频访问存储-\>归档存储、深度归档存储
- 归档存储-\>深度归档存储
执行生命周期规则时，OBS依据桶的多版本状态执行的转换操作如下：
- [未开启多版本的桶]
  当桶未开启多版本时，您可以使用生命周期转换桶内对象的存储类别，此时每个对象只有一个版本。
  表1转换未开启多版本桶的对象存储类别 
  | 操作类别     | 操作效果             | 计时起点   |
  |:---|:---|:---|
  | 转换对象存储类别 | 转换对象存储类别为目标存储类别。 | 对象上传时间 |
     
  ![](https://support.huaweicloud.com/usermanual-obs/public_sys-resources/note_3.0-zh-cn.png)
  当桶未开启多版本时，桶内没有对象历史版本。因此，转换对象历史版本字段"NoncurrentVersionTransition"无效。
- [开启多版本的桶]
  当桶开启多版本时，您可以使用生命周期转换桶内对象的当前版本和历史版本的存储类别。
  表2转换开启多版本桶的对象存储类别 
  | 操作类别         | 操作效果                                                                                                                                                                                                                                                                                                                                                                                                                                                           | 计时起点       |
  |:---|:---|:---|
  | 转换对象当前版本存储类别 | - 如果当前版本不是删除标记，则转换存储类别为目标存储类别。  - 如果当前版本是删除标记，则不执行任何操作。   | 对象当前版本上传时间 |
  | 转换对象历史版本存储类别 | - 如果历史版本不是删除标记，则转换存储类别为目标存储类别。  - 如果历史版本是删除标记，则不执行任何操作。         | 成为历史版本的时间  |
     
- [暂停多版本的桶]
  当桶暂停多版本时，您可以使用生命周期转换桶内对象的当前版本和历史版本的存储类别。
  表3转换暂停多版本桶的对象存储类别 
  | 操作类别         | 操作效果                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 计时起点       |
  |:---|:---|:---|
  | 转换对象当前版本存储类别 | - 如果当前版本不是删除标记，则转换存储类别为目标存储类别。  - 如果当前版本是删除标记，则不执行任何操作。   | 对象当前版本上传时间 |
  | 转换对象历史版本存储类别 | - 如果历史版本不是删除标记，则转换存储类别为目标存储类别。  - 如果历史版本是删除标记，则不执行任何操作。   | 成为历史版本的时间  |
     
#### 使用生命周期删除对象规则
执行生命周期规则时，OBS会依据桶的多版本状态，针对文件执行不同的删除操作。
- [未开启多版本的桶]
  当桶未开启多版本时，您可以使用生命周期删除桶内的对象和碎片文件，此时每个对象只有一个版本。
  表4删除未开启多版本桶的桶内文件 
  | 操作类别   | 操作效果           |
  |:---|:---|
  | 删除对象   | 永久删除对象，删除后无法恢复 |
  | 删除碎片文件 | 永久删除碎片，删除后无法恢复 |
     
  ![](https://support.huaweicloud.com/usermanual-obs/public_sys-resources/note_3.0-zh-cn.png)
  当桶未开启多版本时，桶内没有对象历史版本和删除标记。因此，删除对象历史版本字段"NoncurrentVersionExpiration"和删除过期删除标记字段"ExpiredObjectDeleteMarker"无效。
- [开启多版本的桶]
  当桶开启多版本时，您可以使用生命周期删除桶内对象的当前版本、历史版本、过期删除标记和碎片文件，此时每个对象有一个或多个版本。
  表5删除开启多版本桶的桶内文件 
  | 操作类别      | 操作效果                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
  |:---|:---|
  | 删除对象的当前版本 | - 如果当前版本不是删除标记，则生命周期创建具有唯一版本ID的删除标记，当前版本会成为历史版本，删除标记成为当前版本。  - 如果当前版本是删除标记，则不执行任何操作。   |
  | 删除对象的历史版本 | 删除对象的历史版本，删除的历史版本无法恢复。                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
  | 删除过期删除标记  | 删除过期对象删除标记。过期删除标记是指对象的所有历史版本被删除后，当前对象版本是唯一的对象版本并且它还是删除标记，清理该标记有利于提高List性能。                                                                                                                                                                                                                                                                                                                                                                                                           |
  | 删除碎片文件    | 永久删除碎片，删除后无法恢复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
     
- [暂停多版本的桶]
  当桶暂停多版本（曾经开启）时，您可以使用生命周期删除桶内对象的当前版本、历史版本、过期删除标记和碎片文件，此时每个对象有一个或多个版本。
  表6删除开启多版本桶的桶内文件 
  | 操作类别      | 操作效果                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
  |:---|:---|
  | 删除对象的当前版本 | - 如果当前版本不是删除标记且当前版本ID不为null，则当前版本会成为历史版本，生命周期创建ID为null的删除标记成为当前版本。 说明： 暂停多版本后，新上传的对象版本号为null。如果之前有空版本号的同名对象，则上传对象会覆盖该带空版本号的对象。更多多版本相关信息请参见[多版本控制](https://support.huaweicloud.com/usermanual-obs/obs_03_0327.html)。   - 如果当前版本不是删除标记且当前版本ID为null，则生命周期创建ID为null的删除标记直接覆盖当前版本。此时，删除标记成为当前版本，被覆盖的版本数据无法恢复。  - 如果当前版本是删除标记，则不执行任何操作。   |
  | 删除对象的历史版本 | 永久删除对象的非当前版本，删除的对象无法恢复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
  | 删除过期删除标记  | 删除过期对象删除标记。过期删除标记是指对象的所有历史版本被删除后，当前对象版本是唯一的对象版本并且它还是删除标记，清理该标记有利于提高List性能。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | 删除碎片文件    | 永久删除碎片，删除后无法恢复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
     
#### 多条生命周期规则之间重叠
OBS支持单个桶配置多条生命周期规则，当多条规则的筛选条件存在重叠时，会导致单个对象同时匹配到多条生命周期规则。满足以下任一条件时，认为规则间存在重叠关系：
- 前缀筛选条件为空，则该规则与其他所有规则重叠。
- 如果规则A的筛选前缀与规则B相同，则规则A和规则B存在重叠关系。
- 如果规则A的筛选前缀是规则B筛选前缀的子串，则规则A和规则B存在重叠关系。
重叠的规则必须要满足以下要求，否则将会被判定为规则冲突，配置失败。例如桶已配置规则A，此时要配置的规则B与规则A冲突，则规则B将配置失败。
- 重叠规则的前缀和对象标签筛选条件不能同时都相同。
- 重叠规则中对于时间的标识，Days和Date不能混用，请统一使用Days或Date。
- 重叠规则的操作时间满足：删除对象 \> 转换为深度归档存储 \> 转换为归档存储 \> 转换为低频访问存储。
- 重叠规则不能配置同一个操作，例如两条规则都配置了删除对象，或都配置了转低频访问存储、归档存储、深度归档存储。
- 重叠规则中，对象当前版本过期删除、碎片过期删除、清理无历史版本的删除标记三个操作不能分别同时配置，否则会产生冲突。如下示例： ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002089144386.png)
  
 
#### 注意事项
- 加密对象在整个存储类别转换过程中保持加密状态。
- 最低存储时间 最低存储时间是指对象的计费时间下限。对象存储时间小于最低存储时间时，将按照最低存储时间计费。例如，一个低频访问存储对象在OBS中存储了20天后转换为归档存储，会按照30天计费。
  
  | 对比项目   | 标准存储 | 低频访问存储 | 归档存储 | 深度归档存储 |
  |:---|:---|:---|:---|:---|
  | 最低存储时间 | 无    | 30天    | 90天  | 180天   |
     
  
 
#### 相关操作
**如何查看对象版本是否是删除标记？**
1. 在OBS[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)左侧导航栏选择"桶列表"。
2. 在OBS[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)桶列表中，单击待操作的桶，进入"对象"页面。
3. 启用"历史版本"开关，即可查看对象各个版本是否是删除标记。 
   ![](https://support.huaweicloud.com/usermanual-obs/public_sys-resources/note_3.0-zh-cn.png)
   只有桶启用或暂停多版本控制时，在对象列表页面上方才会显示"历史版本"开关。
   ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002048633164.png)
   
   
您还可以使用[列举桶内对象API](https://support.huaweicloud.com/api-obs/obs_04_0022.html)和以下SDK接口查看对象版本是否是删除标记：
| [Java](https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_1007.html) | [Python](https://support.huaweicloud.com/sdk-python-devg-obs/obs_22_0806.html) | [C](https://support.huaweicloud.com/sdk-c-devg-obs/obs_20_0807.html) | [Go](https://support.huaweicloud.com/sdk-go-devg-obs/obs_33_0407.html) | [BrowserJS](https://support.huaweicloud.com/sdk-browserjs-devg-obs/obs_24_0907.html) | [.NET](https://support.huaweicloud.com/sdk-dotnet-devg-obs/obs_25_0807.html) | [Android](https://support.huaweicloud.com/sdk-android-devg-obs/obs_26_0807.html) | [iOS](https://support.huaweicloud.com/sdk-ios-devg-obs/obs_27_0807.html) | [PHP](https://support.huaweicloud.com/sdk-php-devg-obs/obs_28_0603.html) | [Node.js](https://support.huaweicloud.com/sdk-nodejs-devg-obs/obs_29_0807.html) |
|---|---|---|---|---|---|---|---|---|---|
   
