# 获取桶的生命周期配置-GetBucketLifecycle
#### 功能介绍
当桶设置了生命周期规则时，可以通过本接口获取桶的生命周期配置信息。了解更多生命周期规则相关信息，请参见[生命周期](https://support.huaweicloud.com/usermanual-obs/obs_41_0069.html)。
#### 接口约束
- 生命周期规则目前仅支持根据前缀和[对象标签](https://support.huaweicloud.com/usermanual-obs/obs_41_0054.html)进行匹配，不支持通配符匹配、后缀匹配以及正则匹配。
- 单个桶的生命周期规则条数没有限制，但单个桶中所有生命周期规则的XML描述总大小不能超过20KB。
 
#### 授权信息
您必须是桶拥有者或拥有获取桶的生命周期配置的权限，才能调用本接口，建议使用IAM或桶策略进行授权。了解更多OBS授权方式请参见[OBS不同权限控制方式的区别](https://support.huaweicloud.com/perms-cfg-obs/obs_40_0001.html)。
- 如果使用**IAM授权** ，那么请在"角色与策略授权"、"身份策略授权"两种IAM授权方式中选择一种，并配置相应权限：
  - 如果使用**角色与策略授权** （旧版IAM，即IAM v3接口），需具备**obs:bucket:GetLifecycleConfiguration** 权限，授权操作请参见[创建IAM自定义策略](https://support.huaweicloud.com/usermanual-iam/iam_01_0605.html)。
  
  - 如果使用**身份策略授权** （新版IAM，即IAM v5接口），如下表所示，需具备**obs:bucket:getLifecycleConfiguration** 权限，授权操作请参见[创建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:bucket:getLifecycleConfiguration                | Read                                                         | bucket \*                                                                         | - [g:EnterpriseProjectId](https://support.huaweicloud.com/usermanual-iam5/iam_01_0934.html#section2)  - [g:ResourceTag/\<tag-key\>](https://support.huaweicloud.com/usermanual-iam5/iam_01_0934.html#section2)                                | -                                                                                                             | -                                                      |
    | obs:bucket:getLifecycleConfiguration                | Read                                                         | -                                                                                 | - obs:EpochTime  - obs:SourceIp  - obs:TlsVersion  - obs:CustomDomain   | -                                                                                                             | -                                                      |
       
    
   
- 如果使用**桶策略** 进行授权，需具备**obs:bucket:GetLifecycleConfiguration** 权限，具体操作请参见[自定义创建桶策略](https://support.huaweicloud.com/usermanual-obs/obs_03_0123.html)。
 
#### URI
GET /
#### 调用方法
请参见[如何调用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=GetBucketLifecycle)在线调试接口。
#### 请求消息样式
```
GET /?lifecycle HTTP/1.1 
Host: bucketname.obs.cn-north-4.myhuaweicloud.com 
Date: date
Authorization: authorization
```
#### 请求头参数（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
Content-Type: application/xml 
Content-Length: length
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<LifecycleConfiguration xmlns="http://obs.cn-north-4.myhuaweicloud.com/doc/2015-06-30/"> 
    <Rule> 
        <ID>id</ID> 
        <Filter>
          <And>
             <Prefix>prefix</Prefix> 
             <Tag><Key>key1</Key><Value>value1</Value></Tag>
             <Tag><Key>key2</Key><Value>value2</Value></Tag>
          </And>
        </Filter>
 
        <Status>status</Status> 
        <Expiration> 
            <Date>date</Date> 
        </Expiration> 
        <NoncurrentVersionExpiration> 
            <NoncurrentDays>days</NoncurrentDays> 
        </NoncurrentVersionExpiration> 
        <Transition>  
         <Days>date</Days>  
         <StorageClass>WARM</StorageClass>  
        </Transition>  
        <Transition>  
         <Date>date</Date>  
         <StorageClass>COLD</StorageClass>  
        </Transition>  
        <NoncurrentVersionTransition>  
         <NoncurrentDays>30</NoncurrentDays>  
         <StorageClass>WARM</StorageClass>  
        </NoncurrentVersionTransition>  
        <NoncurrentVersionTransition>  
         <NoncurrentDays>60</NoncurrentDays>  
         <StorageClass>COLD</StorageClass>  
        </NoncurrentVersionTransition> 
    </Rule> 
</LifecycleConfiguration>
```
#### 响应头 (Response Headers)
该请求的响应消息使用公共响应头，具体请参考[表1](https://support.huaweicloud.com/api-obs/obs_04_0013.html#ZH-CN_TOPIC_0173612084__d0e686)。
#### 响应体 (Response Body)
在此请求返回的响应消息体中包含的配置元素如下[表1]描述。
 表1生命周期配置元素 
| 参数                   | 参数类型         | 描述                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| LifecycleConfiguration | Container    | **参数解释：** 生命周期配置规则的Container。可以配置多条规则，LifecycleConfiguration是[Rule]的父节点。 **取值范围：** 不涉及 |
| Rule              | Container | **参数解释：** 具体某一条生命周期配置的Container。 **取值范围：** 请详见[Rule参数说明]。                       |
   
 表2Rule参数说明 
| 参数                            | 参数类型       | 描述                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|
| Transition                     | XML        | **参数解释：** 生命周期配置中表示转换时间和转换后对象存储级别的元素（仅针对对象的最新版本）。 **取值范围：** 请详见[Transition参数说明]。 **默认取值：** 不涉及      |
| Expiration                      | XML        | **参数解释：** 生命周期配置中表示过期时间的Container。 **取值范围：** 请详见[Expiration参数说明]。                                                                                                                     |
| NoncurrentVersionTransition     | XML       | **参数解释：** 生命周期配置中表示对象的历史版本转换时间和转换后对象存储级别的元素。 **取值范围：** 请详见[NoncurrentVersionTransition参数说明]。                                                                                       |
| NoncurrentVersionExpiration     | XML         | **参数解释：** 生命周期配置中表示历史版本过期时间的Container。您可以将该动作设置在已启用多版本（或暂停）的桶，让系统删除对象的满足特定生命周期的历史版本。 **取值范围：** 请详见[NoncurrentVersionExpiration参数说明]。                                              |
| AbortIncompleteMultipartUpload | XML        | **参数解释：** 生命周期配置中表示未合并的多段任务（碎片）的过期属性Container。 **取值范围：** 请详见[AbortIncompleteMultipartUpload参数说明]。                                                                                     |
| Filter                         | XML         | **参数解释：** 指定具体的匹配规则，生命周期将应用于桶内匹配到的对象。可以按照对象名前缀、对象标签或者二者的组合筛选对象。 **取值范围：** 请详见[Filter参数说明]。                                                                                             |
| ID                           | String     | **参数解释：** 一条规则的标识。 **取值范围：** 长度为0\~255的字符串。                                                                                                                                                                                           |
| Prefix                      | String | **参数解释：** 对象名前缀，用来标识哪些对象可以匹配到当前规则。当匹配规则只有一个前缀Prefix匹配规则时，Prefix可直接作为Rule的子节点，也可以作为Filter的子节点。 **取值范围：** 长度为0\~1024的字符串。                                                                                                                 |
| Status                       | String   | **参数解释：** 标识当前规则是否启用。 **取值范围：** - Enabled：启用规则。  - Disabled：停用规则。   |
   
 表3Transition参数说明 
| 参数          | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| Date           | String   | **参数解释：** 对修改时间早于该日期的对象执行生命周期规则。 **取值范围：** 日期格式必须为ISO8601的格式，并且为UTC的零点。 例如：2018-01-01T00:00:00.000Z，表示将最后修改时间早于2018-01-01T00:00:00.000Z的对象删除或转换成其他存储类型，等于或晚于这个时间的对象不会被删除或转储。                                                                                                                                                                       |
| Days         | Integer | **参数解释：** 指定在对象最后修改时间的多少天后执行生命周期规则（仅针对对象的最新版本）。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                    |
| StorageClass | String  | **参数解释：** 表示对象将被修改成的目标存储类别。 **取值范围：** - WARM：低频访问存储  - COLD：归档存储  - DEEP_ARCHIVE：深度归档存储   |
   
 表4Expiration参数说明 
| 参数                        | 参数类型  | 描述                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|
| Date                       | String | **参数解释：** 对修改时间早于该日期的对象执行生命周期规则。 **取值范围：** 日期格式必须为ISO8601的格式，并且为UTC的零点。 例如：2018-01-01T00:00:00.000Z，表示将最后修改时间早于2018-01-01T00:00:00.000Z的对象删除或转换成其他存储类型，等于或晚于这个时间的对象不会被删除或转储。                                                                      |
| Days                      | Integer | **参数解释：** 指定在对象最后修改时间的多少天后执行生命周期规则（仅针对对象的最新版本）。 **取值范围：** 不涉及                                                                                                                                                                                     |
| ExpiredObjectDeleteMarker | Boolean | **参数解释：** 表示是否删除过期删除标记。 **取值范围：** - true：过期删除标记被删除。  - false：过期删除标记不会被删除。   |
   
 表5NoncurrentVersionTransition参数说明 
| 参数           | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|
| NoncurrentDays | Integer | **参数解释：** 表示对象在成为历史版本之后第几天时规则生效。单位：天。 **取值范围：** - 仅设置一种转换：最少设置1天。  - 设置多种转换：后者时间要比前者时间最少长1天。  - 设置多种转换：针对同一个对象的历史版本转深度归档存储时间需要晚于转归档存储时间，转归档存储时间需要晚于转低频访问存储时间。   |
| StorageClass   | String   | **参数解释：** 表示对象将被修改成的目标存储类别。 **取值范围：** - WARM：低频访问存储  - COLD：归档存储  - DEEP_ARCHIVE：深度归档存储                                                                                                                                                                                                                                                                               |
   
 表6NoncurrentVersionExpiration参数说明 
| 参数            | 参数类型     | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|
| NoncurrentDays | Integer | **参数解释：** 表示对象在成为历史版本之后第几天时规则生效。单位：天。 **取值范围：** - 仅设置一种转换：最少设置1天。  - 设置多种转换：后者时间要比前者时间最少长1天。  - 设置多种转换：针对同一个对象的历史版本转深度归档存储时间需要晚于转归档存储时间，转归档存储时间需要晚于转低频访问存储时间。   |
   
 表7AbortIncompleteMultipartUpload参数说明 
| 参数                  | 参数类型    | 描述                                                                                                                                                                                                  |
|:---|:---|:---|
| DaysAfterInitiation | Integer | **参数解释：** 指定生命周期规则在碎片生成后多久执行过期删除操作。单位：天。 **取值范围：** 取值为1\~2147483647的数字。 |
   
 表8Filter参数说明 
| 参数     | 参数类型        | 描述                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|
| And   | XML       | **参数解释：** 表示当前多条匹配规则逻辑且的关系。用于对象名前缀和对象标签二者的组合或多个对象标签组合来匹配对象，此时And是Prefix和Tag的父节点。 **取值范围：** 请详见[And参数说明](https://support.huaweicloud.com/api-obs/obs_04_0034.html#ZH-CN_TOPIC_0100846746__table19527844518)。 |
| Tag  | Container | **参数解释：** 对象标签，用以标识带有该标签的对象，可以匹配到当前规则。 **取值范围：** 请详见[Tag参数说明]。                                                                                               |
| Prefix | String       | **参数解释：** 对象名前缀，用来标识哪些对象可以匹配到当前规则。 **取值范围：** 长度为0\~1024的字符串。                                                                                                                                                    |
   
 表9Tag参数说明 
| 参数 | 参数类型     | 描述                                                                                                                                                                                                                                             |
|:---|:---|:---|
| Key    | String  | **参数解释：** Tag的键名。 **取值范围：** 键名区分大小写且必须唯一，长度为1\~128的字符串，不能为空，同时不允许使用"\*"、"\<"、"\>"、"\\"、","、"\|"、"/"、"?"、"!"、";"等字符。 |
| Value | String | **参数解释：** Tag的键值。 **取值范围：** 键值区分大小写，长度为0\~255的字符串，可以为空，同时不允许使用"\*"、"\<"、"\>"、"\\"、","、"\|"、"?"、"!"、";"等字符。            |
   
#### 错误响应消息
此请求可能的特殊错误如下[表10]描述。
 表10特殊错误 
| 错误码                          | 描述         | HTTP状态码       |
|:---|:---|:---|
| NoSuchLifecycleConfiguration | 桶的生命周期配置不存在 | 404 Not Found |
   
其余错误已经包含在[错误码概述](https://support.huaweicloud.com/api-obs/obs_04_0115.html)中。
#### 请求示例
```
GET /?lifecycle HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.cn-north-4.myhuaweicloud.com
Accept: */*
Date: Wed, 01 Jul 2015 03:06:56 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:/Nof9FCNANfzIXDS0NDp1IfDu8I=
```
#### 响应示例
```
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: BF260000016436BA5684FF5A10370EDB
x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSEMKZSIeboCA1eAukgYOOAd7oX3ZONn
Content-Type: application/xml
Date: Wed, 01 Jul 2015 03:06:56 GMT
Content-Length: 919
<?xml version="1.0" encoding="utf-8"?>
<LifecycleConfiguration> 
  <Rule> 
    <ID>delete-2-days</ID> 
    <Filter>
      <Prefix>test/</Prefix> 
    </Filter> 
    <Status>Enabled</Status>  
    <Expiration> 
      <Days>2</Days> 
    </Expiration>  
    <NoncurrentVersionExpiration> 
      <NoncurrentDays>5</NoncurrentDays> 
    </NoncurrentVersionExpiration>
    <Transition> 
      <Days>30</Days>  
      <StorageClass>WARM</StorageClass> 
    </Transition>  
    <Transition> 
      <Days>60</Days>  
      <StorageClass>COLD</StorageClass> 
    </Transition>  
    <NoncurrentVersionTransition> 
      <NoncurrentDays>30</NoncurrentDays>  
      <StorageClass>WARM</StorageClass> 
    </NoncurrentVersionTransition>  
    <NoncurrentVersionTransition> 
      <NoncurrentDays>60</NoncurrentDays>  
      <StorageClass>COLD</StorageClass> 
    </NoncurrentVersionTransition> 
  </Rule>
</LifecycleConfiguration>
```
#### 使用SDK调用接口
建议您使用OBS SDK调用接口。SDK对API进行了封装以简化您的开发工作，直接调用SDK接口函数即可访问OBS，无需手动计算签名。
| [Java](https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_1103.html) | [Python](https://support.huaweicloud.com/sdk-python-devg-obs/obs_22_0822.html) | [C](https://support.huaweicloud.com/sdk-c-devg-obs/obs_20_0903.html) | [Go](https://support.huaweicloud.com/sdk-go-devg-obs/obs_33_0424.html) | [BrowserJS](https://support.huaweicloud.com/sdk-browserjs-devg-obs/obs_24_1003.html) | [.NET](https://support.huaweicloud.com/sdk-dotnet-devg-obs/obs_25_0903.html) | [Android](https://support.huaweicloud.com/sdk-android-devg-obs/obs_26_0903.html) | [iOS](https://support.huaweicloud.com/sdk-ios-devg-obs/obs_27_0903.html) | [PHP](https://support.huaweicloud.com/sdk-php-devg-obs/obs_28_0903.html) | [Node.js](https://support.huaweicloud.com/sdk-nodejs-devg-obs/obs_29_0903.html) | [Harmony](https://support.huaweicloud.com/sdk-harmony-devg-obs/obs_34_0322.html) |
|---|---|---|---|---|---|---|---|---|---|---|
   
#### 相关文档
- 使用obsutil获取桶的生命周期，请参见[获取桶的生命周期配置](https://support.huaweicloud.com/utiltg-obs/obs_11_0093.html)。
- 了解更多桶生命周期相关介绍，请参见[生命周期](https://support.huaweicloud.com/usermanual-obs/obs_41_0069.html)。
- API操作涉及的计费项参见[计费项](https://support.huaweicloud.com/price-obs/obs_42_0002.html)。
 
