文档中心 > 生命周期
生命周期

最近更新时间:2022-07-25

本文介绍如何管理生命周期。


生命周期规则介绍

UOS支持设置生命周期(Lifecycle)规则,自动删除过期的文件和碎片,或将到期的文件转储为低频或归档存储类型,从而节省存储费用。每条规则包含:

  • 规则ID。用于标识一条规则,同一桶内规则ID不能重复。

  • 策略。有以下两种设置方式。同一桶内仅支持一种设置方式。

    • 按前缀匹配。此种方式允许创建多条规则,前缀不能重复。

    • 配置到整个桶。此种方式只能创建一条规则。

  • 过期时间。有两种指定方式:

    • 指定一个过期天数N,文件会在其最近更新时间点的N天后过期。

    • 指定一个过期时间点,最近更新时间在该时间点之前的文件全部过期。

  • 是否生效。


设置和获取生命周期规则

以下代码用于设置生命周期规则:

package sample


import (
       "fmt"
       "github.com/journeymidnight/Yig-S3-SDK-Go/s3lib"
       "github.com/journeymidnight/aws-sdk-go/aws"
       "github.com/journeymidnight/aws-sdk-go/service/s3"
)

func BucketLifecycleSample() {
       DeleteTestBucketAndObject()
       defer DeleteTestBucketAndObject()

       sc := s3lib.NewS3(endpoint, accessKey, secretKey)
       err := sc.MakeBucket(bucketName)
       if err != nil {
               HandleError(err)
      }

       //put bucket lifeCycle
       rules := &s3.LifecycleConfiguration{
               Rules: []*s3.Rule{
                      {
                               Expiration: &s3.LifecycleExpiration{
                                       Days: aws.Int64(3650),
                              },
                               Prefix: aws.String("documents/"),
                               ID:     aws.String("TestOnly"),
                               Status: aws.String("Enabled"),
                               Transition: &s3.Transition{
                                       Days:         aws.Int64(365),
                                       StorageClass: aws.String("GLACIER"),
                              },
                      },
              },
      }

       err = sc.PutBucketLifeCycle(bucketName, rules)
       if err != nil {
               HandleError(err)
      }

       //get bucket lifeCycle
       out, err := sc.GetBucketLifeCycle(bucketName)
       if err != nil {
               HandleError(err)
      }
       fmt.Println("Get Bucket Life Cycle", out)

       //Delete bucket lifeCycle
       err = sc.DeleteBucketLifeCycle(bucketName)
       if err != nil {
               HandleError(err)
      }
   
       fmt.Printf("BucketLifecycleSample Run Success !\n\n")
}