全部产品
阿里云办公

管理生命周期

更新时间:2018-08-20 08:54:49

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

  • 规则ID。用于标识一条规则,同一存储空间内规则ID不能重复。
  • 策略。有以下两种设置方式。同一存储空间内仅支持一种设置方式。
    • 按前缀匹配。此种方式允许创建多条规则,前缀不能重复。
    • 配置到整个存储空间。此种方式只能创建一条规则。
  • 过期时间。有两种指定方式:
    • 指定距文件最后修改时间N天后过期。
    • 指定日期创建前的文件过期,之后的不过期。
  • 是否生效。

通过uploadPart方法上传的分片也支持设置生命周期规则。文件最后修改时间以初始化分片上传事件的时间为准。

更多关于生命周期的内容请参见开发指南中的管理对象生命周期。管理生命周期的完整代码请参见GitHub

设置生命周期规则

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

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func main() {
  8. // 创建OSSClient实例。
  9. client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
  10. if err != nil {
  11. fmt.Println("Error:", err)
  12. os.Exit(-1)
  13. }
  14. bucketName := "<yourBucketName>"
  15. // 生命周期规则1(id:"rule1", enable:true, prefix:"foo/", expiry:Days 3),表示前缀为foo的文件距最后修改时间3天后过期。
  16. rule1 := oss.BuildLifecycleRuleByDays("rule1", "foo/", true, 3)
  17. // 生命周期规则2(id:"rule2", enable:false, prefix:"bar/", expiry:Date 2016/1/1),表示在2016年1月1日之前创建的前缀为bar的文件过期。
  18. rule2 := oss.BuildLifecycleRuleByDate("rule2", "bar/", true, 2016, 1, 1)
  19. rules := []oss.LifecycleRule{rule1, rule2}
  20. // 设置生命周期规则。
  21. err = client.SetBucketLifecycle(bucketName, rules)
  22. if err != nil {
  23. fmt.Println("Error:", err)
  24. os.Exit(-1)
  25. }
  26. }

查看生命周期规则

以下代码用于查看生命周期规则:

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func main() {
  8. // 创建OSSClient实例。
  9. client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
  10. if err != nil {
  11. fmt.Println("Error:", err)
  12. os.Exit(-1)
  13. }
  14. bucketName := "<yourBucketName>"
  15. // 查看生命周期规则。
  16. lcRes, err := client.GetBucketLifecycle(bucketName)
  17. if err != nil {
  18. fmt.Println("Error:", err)
  19. os.Exit(-1)
  20. }
  21. fmt.Println("Lifecycle Rules:", lcRes.Rules
  22. }

清空生命周期规则

以下代码用于清空生命周期规则:

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func main() {
  8. // 创建OSSClient实例。
  9. client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
  10. if err != nil {
  11. fmt.Println("Error:", err)
  12. os.Exit(-1)
  13. }
  14. bucketName := "<yourBucketName>"
  15. // 清空生命周期规则。
  16. err = client.DeleteBucketLifecycle(bucketName)
  17. if err != nil {
  18. fmt.Println("Error:", err)
  19. os.Exit(-1)
  20. }
本文导读目录