本文介绍如何管理生命周期。
OSS支持设置生命周期(Lifecycle)规则,自动删除过期的文件和碎片,或将到期的文件转储为低频或归档存储类型,从而节省存储费用。每条规则包含:
- 规则ID。用于标识一条规则,同一存储空间内规则ID不能重复。
- 策略。有以下两种设置方式。同一存储空间内仅支持一种设置方式。
- 按前缀匹配。此种方式允许创建多条规则,前缀不能重复。
- 配置到整个存储空间。此种方式只能创建一条规则。
- 过期时间。有两种指定方式:
- 指定一个过期天数N,文件会在其最近更新时间点的N天后过期。
- 指定一个过期时间点,最近更新时间在该时间点之前的文件全部过期。
- 是否生效。
通过uploadPart方法上传的分片也支持设置生命周期规则。文件最后修改时间以初始化分片上传事件的时间为准。
更多关于生命周期的内容请参见管理对象生命周期。管理生命周期的完整代码请参见GitHub。
设置生命周期规则
以下代码用于设置生命周期规则:
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 创建OSSClient实例。
client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 生命周期规则1(id:"rule1", enable:true, prefix:"foo/", expiry:Days 3),表示前缀为foo的文件距最后修改时间3天后过期。
rule1 := oss.BuildLifecycleRuleByDays("rule1", "foo/", true, 3)
rules := []oss.LifecycleRule{rule1}
// 设置生命周期规则。
bucketName := "<yourBucketName>"
err = client.SetBucketLifecycle(bucketName, rules)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}
查看生命周期规则
以下代码用于查看生命周期规则:
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 创建OSSClient实例。
client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
bucketName := "<yourBucketName>"
// 查看生命周期规则。
lcRes, err := client.GetBucketLifecycle(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println("Lifecycle Rules:", lcRes.Rules
}
清空生命周期规则
以下代码用于清空生命周期规则:
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 创建OSSClient实例。
client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
bucketName := "<yourBucketName>"
// 清空生命周期规则。
err = client.DeleteBucketLifecycle(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}