生命周期规则可针对前缀或对象标签生效,您也可以同时指定两者作为生命周期规则生效的条件。

说明 标签条件中标签的Key和Value必须同时匹配。同一个规则中,如果同时配置了前缀和多个对象标签,则只有同时满足前缀且匹配规则中所有对象标签的对象(Object),才视为适用于该规则。

注意事项

  • 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见访问域名和数据中心
  • 本文以OSS域名新建OSSClient为例。如果您希望通过自定义域名、STS等方式新建OSSClient,请参见Go初始化

生命周期规则中添加标签匹配规则

以下代码用于生命周期规则中添加标签匹配规则:
package main

import (
  "fmt"
  "os"

  "github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
  // 创建OSSClient实例。
  // yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
  // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
  client, err := oss.New("yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret")
  if err != nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
  }

  // 设置lifecycle的规则id为"rule1",应用在前缀为"one"的object上。
  // 该前缀的object将在3天后转为IA的存储类型,30天后转为archive存储类型。
  transitionIA := oss.LifecycleTransition{
    Days: 3,
    StorageClass: oss.StorageIA,
  }
  transitionArch := oss.LifecycleTransition{
    Days: 30,
    StorageClass: oss.StorageArchive,
  }

  // 设置Tagging。 
  tag1 := oss.Tag{
    Key:   "key1",
    Value: "value1",
  }
  tag2 := oss.Tag{
    Key:   "key2",
    Value: "value2",
  }

  // 设置bucket的lifecycle,其中lifecycle规则中包含设置的tagging信息。
  rule1 := oss.LifecycleRule{
    ID: "rule1",
    Prefix: "one",
    Status: "Enabled",
    Transitions: []oss.LifecycleTransition{transitionIA, transitionArch},
    Tags:[]oss.Tag{tag1,tag2},
  }
  rules := []oss.LifecycleRule{rule1}
  err = client.SetBucketLifecycle("yourBucketName", 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实例。
  // yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
  // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
  client, err := oss.New("yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret")
  if err != nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
  }

  // 获取Bucket的lifecycle。
  // yourBucketName填写存储空间名称。
  lc, err := client.GetBucketLifecycle("yourBucketName")
  if err != nil {
    fmt.Println("Error:", err)
    os.Exit(-1)
  }

  // 打印lifecycle信息,其中包含tagging信息。
  for i, v := range lc.Rules {
    fmt.Printf("Bucket %d Lifecycle: %v", i, v)
    if  v.Expiration != nil {
      fmt.Printf(", Expiration:%v", *v.Expiration)
    }
    fmt.Printf("\n")
  }
}

相关文档

  • 关于对象标签和生命周期管理的完整示例代码,请参见GitHub示例
  • 关于设置生命周期规则的API接口说明,请参见PutBucketLifecycle
  • 关于查看生命周期规则的API接口说明,请参见GetBucketLifecycle