Updated on 2022-02-10 GMT+08:00

PUT Bucket lifecycle

API Description

You can use this API to set lifecycle rules for a bucket, to periodically transit storage classes of objects and delete objects in the bucket.

Method Definition

func (obsClient ObsClient) SetBucketLifecycleConfiguration(input *SetBucketLifecycleConfigurationInput) (output *BaseModel, err error)

Method Definition If a Signed URL Is Used

func (obsClient ObsClient) SetBucketLifecycleConfigurationWithSignedUrl(signedUrl string, actualSignedRequestHeaders http.Header, data io.Reader) (output *BaseModel, err error)

Request Parameter

Field

Type

Optional or Mandatory

input

*SetBucketLifecycleConfigurationInput

Mandatory

Returned Result

Field

Type

output

*BaseModel

err

error

Sample Code

func main() {
       input := &obs.SetBucketLifecycleConfigurationInput{}
       input.Bucket = "bucketname"

       var lifecycleRules [2]obs.LifecycleRule
       lifecycleRule0 := obs.LifecycleRule{}
       lifecycleRule0.ID = "rule0"
       lifecycleRule0.Prefix = "prefix0"
       lifecycleRule0.Status = obs.RuleStatusEnabled

       var transitions [2]obs.Transition
       transitions[0] = obs.Transition{}
       transitions[0].Days = 30
       transitions[0].StorageClass = obs.StorageClassWarm

       transitions[1] = obs.Transition{}
       transitions[1].Days = 60
       transitions[1].StorageClass = obs.StorageClassCold
       lifecycleRule0.Transitions = transitions[:]

       lifecycleRule0.Expiration.Days = 100
       lifecycleRule0.NoncurrentVersionExpiration.NoncurrentDays = 20

       lifecycleRules[0] = lifecycleRule0

       lifecycleRule1 := obs.LifecycleRule{}
       lifecycleRule1.Status = obs.RuleStatusEnabled
       lifecycleRule1.ID = "rule1"
       lifecycleRule1.Prefix = "prefix1"
       lifecycleRule1.Expiration.Date = time.Now().Add(time.Duration(24) * time.Hour)

       var noncurrentTransitions [2]obs.NoncurrentVersionTransition
       noncurrentTransitions[0] = obs.NoncurrentVersionTransition{}
       noncurrentTransitions[0].NoncurrentDays = 30
       noncurrentTransitions[0].StorageClass = obs.StorageClassWarm

       noncurrentTransitions[1] = obs.NoncurrentVersionTransition{}
       noncurrentTransitions[1].NoncurrentDays = 60
       noncurrentTransitions[1].StorageClass = obs.StorageClassCold
       lifecycleRule1.NoncurrentVersionTransitions = noncurrentTransitions[:]
       lifecycleRules[1] = lifecycleRule1

       input.LifecycleRules = lifecycleRules[:]

       output, err := obsClient.SetBucketLifecycleConfiguration(input)
       if err == nil {
              fmt.Printf("RequestId:%s\n", output.RequestId)
       } else {
              if obsError, ok := err.(obs.ObsError); ok {
                     fmt.Println(obsError.Code)
                     fmt.Println(obsError.Message)
              } else {
                     fmt.Println(err)
              }
       }
}