全部產品
Search
文件中心

Object Storage Service:管理生命週期

更新時間:Aug 30, 2018

OSS支援設定生命週期(Lifecycle)規則,自動刪除過期的檔案和碎片,或將到期的檔案轉儲為低頻或Archive Storage類型,從而節省儲存費用。每條規則包含:

  • 規則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. }