This operation configures lifecycle rules that can delete or migrate objects from a bucket at a specified time. Typical application scenarios:
You can perform this operation to create or update the lifecycle configuration of a bucket.
To perform this operation, you must have the PutLifecycleConfiguration 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.
The lifecycle configuration enables OBS to delete objects and transition object storage classes at a scheduled time. To prevent a user from doing so, the following permissions granted to the user must be revoked:
If you want to forbid a user to set the bucket lifecycle configuration, revoke the PutLifecycleConfiguration permission from the user.
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 | PUT /?lifecycle HTTP/1.1 Host: bucketname.obs.region.example.com Content-Length: length Date: date Authorization: authorization Content-MD5: MD5 <?xml version="1.0" encoding="UTF-8"?> <LifecycleConfiguration> <Rule> <ID>id</ID> <Prefix>prefix</Prefix> <Status>status</Status> <Expiration> <Days>days</Days> </Expiration> <NoncurrentVersionExpiration> <NoncurrentDays>days</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> |
This request contains no parameters.
Table 1 lists the request header.
In this request body, you need to specify the lifecycle configuration in XML format. Table 2 describes the specific configuration elements.
If the latest object version is not a delete marker, a new delete marker will be inserted for the object.
If the latest object version is a delete marker and is the only version of the object, this latest version will be deleted.
If the object of the latest version has the DeleteMarker and the object has other versions, all versions of the object remain unchanged.
If the latest version of the object does not have the DeleteMarker and is not the null version, the object generates a new DeleteMarker for the null version.
If the latest version of the object does not have the DeleteMarker but is the null version, this null version is overwritten by a new DeleteMarker generated for the null version.
If the latest object version is a delete marker and is the only version of the object, this latest version will be deleted.
If the object of the latest version has the DeleteMarker and the object has other versions, all versions of the object remain unchanged.
Name |
Description |
Mandatory |
---|---|---|
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 indicates that objects whose last modification time is earlier than 2018-01-01T00:00:00.000Z are deleted or transitioned to another storage class. Objects whose last modification time is equal to or later than the specified time are not deleted or transitioned to another storage class. Type: string Parent: Expiration, Transition |
Required if the Days element is absent. |
Days |
Specifies the number of days (since the latest update to the latest object version) after which the lifecycle rule takes effect. Type: integer Parent: Expiration, Transition |
Required if the Date element is absent. |
StorageClass |
The storage class to which the object is transitioned. Type: string Value options: WARM, COLD Parent: Transition, NoncurrentVersionTransition |
Required if the Transition or NoncurrentVersionTransition element is present. |
Transition |
Transition time and the object storage class after transition (valid only for the latest object version). Type: XML Child: Date or Days, StorageClass Parent: Rule |
Required if the NoncurrentVersionTransition, Expiration, AbortIncompleteMultipartUpload, or NoncurrentVersionExpiration element is absent. |
Expiration |
Container for the object expiration rule (only applicable to the latest versions of objects). Type: XML Child: Date or Days Parent: Rule |
Required if Transition, NoncurrentVersionTransition, AbortIncompleteMultipartUpload, or NoncurrentVersionExpiration is absent. |
ID |
Unique identifier of a rule. The value can contain a maximum of 255 characters. Type: string Parent: Rule |
No |
LifecycleConfiguration |
Container for lifecycle rules. You can add multiple rules. The total size of the rules cannot exceed 20 KB. Type: XML Child: Rule Parent: none |
Yes |
NoncurrentDays |
Number of days when the specified rule takes effect after the object becomes a historical version (only applicable to an object's historical version). Type: integer Parent: NoncurrentVersionExpiration, NoncurrentVersionTransition |
Required if the NoncurrentVersionExpiration or NoncurrentVersionTransition element is present. |
NoncurrentVersionTransition |
Transition time of historical object versions and the object storage class after transition. Type: XML Child: NoncurrentDays, StorageClass Parent: Rule |
Required if the Transition, Expiration, AbortIncompleteMultipartUpload, or NoncurrentVersionExpiration element is absent. |
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 historical versions of objects that match the lifecycle rule (only applicable to the historical versions of objects). Type: XML Child: NoncurrentDays Parent: Rule |
No |
AbortIncompleteMultipartUpload |
Container for specifying when the not merged parts (fragments) in an incomplete upload will be deleted. Type: XML Child: DaysAfterInitiation Parent: Rule |
Required if the Transition, Expiration, NoncurrentVersionExpiration, or NoncurrentVersionTransition element is absent. |
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: integer Parent: AbortIncompleteMultipartUpload |
Required if the AbortIncompleteMultipartUpload element is present. |
Prefix |
Object name prefix that identifies one or more objects to which the rule applies. Type: string Parent: Rule Constraints:
|
Yes |
Rule |
Container for a specific lifecycle rule. Type: container Parent: LifecycleConfiguration |
Yes |
Status |
Indicates whether the rule is enabled. Type: string Parent: Rule Value options: Enabled, Disabled |
Yes |
1 2 3 | HTTP/1.1 status_code Date: date Content-Length: length |
The response to the request uses common headers. For details, see Table 1.
This response contains no elements.
No special error responses are returned. For details about error responses, see Table 2.
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 42 | PUT /?lifecycle HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.example.com Accept: */* Date: WED, 01 Jul 2015 03:05:34 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:DpSAlmLX/BTdjxU5HOEwflhM0WI= Content-MD5: ujCZn5p3fmczNiQQxdsGaQ== 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>70</Days> </Expiration> <NoncurrentVersionExpiration> <NoncurrentDays>70</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> |
1 2 3 4 5 6 | HTTP/1.1 200 OK Server: OBS x-obs-request-id: BF26000001643670AC06E7B9A7767921 x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSvK6z8HV6nrJh49gsB5vqzpgtohkiFm Date: WED, 01 Jul 2015 03:05:34 GMT Content-Length: 0 |