# Obtaining Bucket Lifecycle Configuration

#### Functions

This operation obtains the bucket lifecycle configuration.

To perform this operation, you must have the GetLifecycleConfiguration permission. By default, only the bucket owner can perform this operation. The bucket owner can grant the permission to other users by configuring the bucket policy or user policy.

#### Request Syntax

    1
    2
    3
    4

    GET /?lifecycle HTTP/1.1
    Host: bucketname.obs.region.example.com
    Date: date
    Authorization: authorization

#### Request Parameters

This request contains no parameter.

#### Request Headers

This request uses common headers. For details, see Table 3.

#### Request Elements

This request involves no elements.

#### Response Syntax

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39

    HTTP/1.1 status_code
    Date: date
    Content-Type: application/xml
    Date: date
    Content-Length: length

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <LifecycleConfiguration xmlns="http://obs.region.example.com/doc/2015-06-30/">
        <Rule>
            <ID>id</ID>
            <Prefix>prefix</Prefix>
            <Status>status</Status>
            <Expiration>
                <Date>date</Date>
            </Expiration>
            <NoncurrentVersionExpiration>
                <NoncurrentDays>days</NoncurrentDays>
            </NoncurrentVersionExpiration>
            <Transition>
             <Date>date</Date>
             <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>
            <AbortIncompleteMultipartUpload>
                <DaysAfterInitiation>10</DaysAfterInitiation>
            </AbortIncompleteMultipartUpload>
        </Rule>
    </LifecycleConfiguration>

#### Response Headers

The response to the request uses common headers. For details, see Table 1.

#### Response Elements

This response contains elements to detail the configuration. Table 1 describes the elements.

Table 1 Response elements for lifecycle configuration
Element | Description
--- | ---

Date

Specifies that OBS executes lifecycle rules for objects before the specified date. The date must be compliant with the ISO8601 format, and the time must be compliant with the UTC format of 00:00:00. For example: 2018-01-01T00:00:00.000Z, which indicates that objects whose last modification time is earlier than 2018-01-01T00:00:00.000Z are deleted or transitioned to other storage classes. Objects whose last modification time is equal to or later than the specified time are not deleted or dumped.

Type: string

Ancestor node: Expiration, Transition

Days | Specifies the number of days (since the latest update to the latest object version) after which the lifecycle rule is executed. Type: positive integer Ancestor node: Expiration, Transition
StorageClass | The storage class to which the object is transitioned. Type: string WARM or COLD Ancestor node: Transition, NoncurrentVersionTransition
Transition | Transition time and the object storage class after transition (valid only for the latest object version). Type: XML Children node: Date or Days Ancestor node: Rule
Expiration | Container for the object expiration rule. Type: XML Children node: Date or Days Ancestor node: Rule
ID | Unique identifier of a rule. The value can contain a maximum of 255 characters. Type: string Ancestor node: Rule
LifecycleConfiguration | Container for lifecycle rules. You can add multiple rules. The total size of the rules cannot exceed 20 KB. Type: XML Children node: Rule Ancestor node: none
NoncurrentDays | Number of days when the specified rule takes effect after the object becomes a historical version. Type: positive integer Ancestor node: NoncurrentVersionExpiration, NoncurrentVersionTransition
NoncurrentVersionTransition | Transition time of historical object versions and the object storage class after transition. Type: XML Children node: NoncurrentDays, StorageClass Ancestor node: Rule
NoncurrentVersionExpiration | Container for the expiration time of objects' historical versions. If versioning is enabled or suspended for a bucket, you can set NoncurrentVersionExpiration to delete objects whose life cycles have expired. Type: XML Children node: NoncurrentDays Ancestor node: Rule
AbortIncompleteMultipartUpload | Container for specifying when the not merged parts (fragments) in an incomplete upload will be deleted. Type: XML Children node: DaysAfterInitiation Ancestor node: Rule
DaysAfterInitiation | Specifies the number of days since the initiation of an incomplete multipart upload that OBS will wait before deleting the not merged parts (fragments) of the upload. Type: positive integer Ancestor node: AbortIncompleteMultipartUpload
Prefix | Object name prefix identifying one or more objects to which the rule applies. Type: string Ancestor node: Rule
Rule | Container for a specific lifecycle rule. Type: container Ancestor node: LifecycleConfiguration
Status | Indicates whether the rule is enabled. Type: string Ancestor node: Rule Value options: Enabled, Disabled

#### Error Responses

Table 2 describes possible special errors in the request.

Table 2 Special error
Error Code | Description | HTTP Status Code
--- | --- | ---
NoSuchLifecycleConfiguration | The bucket lifecycle configuration does not exist. | 404 Not Found

For other errors, see Table 2.

#### Sample Request

    1
    2
    3
    4
    5
    6

    GET /?lifecycle HTTP/1.1
    User-Agent: curl/7.29.0
    Host: examplebucket.obs.region.example.com
    Accept: */*
    Date: WED, 01 Jul 2015 03:06:56 GMT
    Authorization: OBS H4IPJX0TQTHTHEBQQCEC:/Nof9FCNANfzIXDS0NDp1IfDu8I=

#### Sample Response

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41

    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>
        <Prefix>test/</Prefix>
        <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>
        <AbortIncompleteMultipartUpload>
            <DaysAfterInitiation>10</DaysAfterInitiation>
        </AbortIncompleteMultipartUpload>
      </Rule>
    </LifecycleConfiguration>

Parent topic: Advanced Bucket Settings