控制台指南

最佳实践

开发者指南

API 文档

SDK 文档

生命周期

最近更新时间:2021-12-14 17:02:01

简介

本文档提供关于生命周期的 API 概览以及 SDK 示例代码。

API 操作名 操作描述
PUT Bucket lifecycle 设置生命周期 设置存储桶的生命周期管理的配置
GET Bucket lifecycle 查询生命周期 查询存储桶生命周期管理的配置
DELETE Bucket lifecycle 删除生命周期 删除存储桶生命周期管理的配置

设置生命周期

功能说明

设置指定存储桶的生命周期配置信息(PUT Bucket lifecycle)。

方法原型

func (s *BucketService) PutLifecycle(ctx context.Context, opt *BucketPutLifecycleOptions) (*Response, error)

请求示例

package main

import (
    "context"
    "github.com/tencentyun/cos-go-sdk-v5"
    "net/http"
    "net/url"
    "os"
)

func main() {
    // 存储桶名称,由bucketname-appid 组成,appid必须填入,可以在COS控制台查看存储桶名称。 https://console.cloud.tencent.com/cos5/bucket
    // 替换为用户的 region,存储桶region可以在COS控制台“存储桶概览”查看 https://console.cloud.tencent.com/ ,关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 。
    u, _ := url.Parse("https://examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com")
    b := &cos.BaseURL{BucketURL: u}
    client := cos.NewClient(b, &http.Client{
        Transport: &cos.AuthorizationTransport{
            // 通过环境变量获取密钥
            // 环境变量 SECRETID 表示用户的 SecretId,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
            SecretID: os.Getenv("SECRETID"),
            // 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
            SecretKey: os.Getenv("SECRETKEY"),
        },
    })
    lc := &cos.BucketPutLifecycleOptions{
        Rules: []cos.BucketLifecycleRule{
            {
                ID:     "1234",
                Filter: &cos.BucketLifecycleFilter{Prefix: "test"},
                Status: "Enabled",
                Transition: []cos.BucketLifecycleTransition{
                    {
                        Days:         10,
                        StorageClass: "Standard",
                    },
                },
            },
            {
                ID:     "123422",
                Filter: &cos.BucketLifecycleFilter{Prefix: "gg"},
                Status: "Disabled",
                Expiration: &cos.BucketLifecycleExpiration{
                    Days: 10,
                },
            },
        },
    }
    _, err := client.Bucket.PutLifecycle(context.Background(), lc)
    if err != nil {
        panic(err)
    }
}

参数说明

type BucketPutLifecycleOptions struct {
    XMLName xml.Name
    Rules   []BucketLifecycleRule
}
type BucketLifecycleRule struct {
    ID                             string
    Status                         string
    Filter                         *BucketLifecycleFilter
    Transition                     []BucketLifecycleTransition
    Expiration                     *BucketLifecycleExpiration
    AbortIncompleteMultipartUpload *BucketLifecycleAbortIncompleteMultipartUpload
    NoncurrentVersionTransition    []BucketLifecycleNoncurrentVersion
    NoncurrentVersionExpiration    *BucketLifecycleNoncurrentVersion
}
type BucketLifecycleFilter struct {
    Prefix string
    Tag    *BucketTaggingTag
    And    *BucketLifecycleAndOperator
}
type BucketLifecycleTransition struct {
    Date         string 
    Days         int    
    StorageClass string
}
type BucketLifecycleExpiration struct {
    Date                      string
    Days                      int
    ExpiredObjectDeleteMarker bool
}
type BucketLifecycleNoncurrentVersion struct {
    NoncurrentDays int
    StorageClass   string
}
type BucketLifecycleAbortIncompleteMultipartUpload struct {
    DaysAfterInitiation int 
}

参数名称 父节点 参数描述 类型 是否必选
LifecycleConfiguration 生命周期配置 Container
Rule LifecycleConfiguration 规则描述 Container
ID LifecycleConfiguration.Rule 用于唯一地标识规则,长度不能超过255个字符 String
Filter LifecycleConfiguration.Rule Filter 用于描述规则影响的 Object 集合 Container
And LifecycleConfiguration.Rule .Filter 对象筛选器中的一个子集,仅当需要指定多种筛选规则时才需要 此元素,例如:同时指定 Prefix 和 Tag 筛选,或同时指定多个 Tag 筛选。 Container
Prefix LifecycleConfiguration.Rule .Filter.And 指定规则所适用的前缀。匹配前缀的对象受该规则影响,Prefix 最多只能有一个 String
Tag LifecycleConfiguration.Rule .Filter.And 标签集合,最多支持10个标签 Container
Key LifecycleConfiguration.Rule .Filter.And.Tag 标签的 Key,长度不超过128字节,支持英文字母、数字、空格、加号、 减号、下划线、等号、点号、冒号、斜线 String
Value LifecycleConfiguration.Rule .Filter.And.Tag 标签的 Value,长度不超过256字节, 支持英文字母、数字、空格、加号、 减号、下划线、等号、点号、冒号、斜线 String
Status LifecycleConfiguration.Rule 指明规则是否启用,枚举值:Enabled,Disabled String
Expiration LifecycleConfiguration.Rule 规则过期属性 Container
Transition LifecycleConfiguration.Rule 规则转换属性,用于描述对象何时进行存储类型的转换和转换的存储类型 Container
Days LifecycleConfiguration.Rule .Transition 或 Expiration 指明规则对应的动作在对象最后的修改日期过后多少天操作: 如果是 Transition,该字段有效值是非负整数 如果是 Expiration,该字段有效值为正整数,最大支持3650天 Integer
Date LifecycleConfiguration.Rule .Transition 或 Expiration 指明规则对应的动作在何时操作,支持2007-12-01T12:00:00.000Z2007-12-01T00:00:00+08:00这两种格式 String
ExpiredObjectDeleteMarker LifecycleConfiguration.Rule .Expiration 删除过期对象删除标记,枚举值 true,false String
AbortIncompleteMultipartUpload LifecycleConfiguration.Rule 设置允许分片上传保持运行的最长时间 Container
DaysAfterInitiation LifecycleConfiguration.Rule .AbortIncompleteMultipartUpload 指明分片上传开始后多少天内必须完成上传 Integer
NoncurrentVersionExpiration LifecycleConfiguration.Rule 指明非当前版本对象何时过期 Container
NoncurrentVersionTransition LifecycleConfiguration.Rule 指明非当前版本对象何时进行存储类型的转换和转换的存储类型 Container
NoncurrentDays LifecycleConfiguration.Rule .NoncurrentVersionExpiration 或 NoncurrentVersionTransition 指明规则对应的动作在对象变成非当前版本多少天后执行 如果是 Transition,该字段有效值是非负整数 如果是 Expiration,该字段有效值为正整数,最大支持3650天 Integer
StorageClass LifecycleConfiguration.Rule .Transition 或 NoncurrentVersionTransition 指定 Object 沉降后的存储类型,枚举值: STANDARD_IA,MAZ_STANDARD_IA,INTELLIGENT_TIERING,MAZ_INTELLIGENT_TIERING,ARCHIVE,DEEP_ARCHIVE。关于存储类型的介绍,请参见 存储类型概述 String

查询生命周期

功能说明

查询存储桶的生命周期管理配置(GET Bucket lifecycle)。

方法原型

func (s *BucketService) GetLifecycle(ctx context.Context) (*BucketGetLifecycleResult, *Response, error)

请求示例

package main

import (
    "context"
    "github.com/tencentyun/cos-go-sdk-v5"
    "net/http"
    "net/url"
    "os"
)

func main() {
    // 存储桶名称,由bucketname-appid 组成,appid必须填入,可以在COS控制台查看存储桶名称。 https://console.cloud.tencent.com/cos5/bucket
    // 替换为用户的 region,存储桶region可以在COS控制台“存储桶概览”查看 https://console.cloud.tencent.com/ ,关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 。
    u, _ := url.Parse("https://examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com")
    b := &cos.BaseURL{BucketURL: u}
    client := cos.NewClient(b, &http.Client{
        Transport: &cos.AuthorizationTransport{
            // 通过环境变量获取密钥
            // 环境变量 SECRETID 表示用户的 SecretId,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
            SecretID: os.Getenv("SECRETID"),
            // 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
            SecretKey: os.Getenv("SECRETKEY"),
        },
    })
    _, _, err := client.Bucket.GetLifecycle(context.Background())
    if err != nil {
        panic(err)
    }
}

返回结果说明

通过 GetBucketLifecycleResult 返回请求结果。

type BucketLifecycleRule struct {
    ID                             string
    Status                         string
    Filter                         *BucketLifecycleFilter
    Transition                     *BucketLifecycleTransition
    Expiration                     *BucketLifecycleExpiration
    AbortIncompleteMultipartUpload  *BucketLifecycleAbortIncompleteMultipartUpload 
}
type BucketLifecycleFilter struct {
    Prefix       string 
}
type BucketLifecycleTransition struct {
    Date         string 
    Days         int    
    StorageClass string
}
type BucketLifecycleExpiration struct {
    Date string 
    Days int    
}
type BucketLifecycleAbortIncompleteMultipartUpload struct {
    DaysAfterInitiation string 
}

参数名称 参数描述 类型 是否必填
BucketLifecycleRule 设置对应的规则,包括 ID,Filter,Status,Expiration,Transition,AbortIncompleteMultipartUpload List
ID 规则的唯一 ID String
Status 设置 Rule 是否启用,可选值为 Enabled 或者 Disabled String
Filter 用于描述规则影响的 Object 集合,如需设置 Bucket 中的所有 objects,请设置 Prefix 为空 Struct
Transition 设置 Object 转换存储类型规则,可以指定天数 Days 或者指定日期 Date,Date 的格式必须是 GMT ISO 8601。StorageClass 可选 Standard_IA,Archive,可以同时设置多条此类规则 struct
Expiration 设置 Object 过期规则,可以指定天数 Days 或者指定日期 Date,Date 的格式必须是 GMT ISO 8601 Struct
AbortIncompleteMultipartUpload 指明分块上传开始后多少天内必须完成上传 Struct

删除生命周期

功能说明

删除存储桶生命周期管理的配置(DELETE Bucket lifecycle)。

方法原型

func (s *BucketService) DeleteLifecycle(ctx context.Context) (*Response, error)

请求示例

package main

import (
    "context"
    "github.com/tencentyun/cos-go-sdk-v5"
    "net/http"
    "net/url"
    "os"
)

func main() {
    // 存储桶名称,由bucketname-appid 组成,appid必须填入,可以在COS控制台查看存储桶名称。 https://console.cloud.tencent.com/cos5/bucket
    // 替换为用户的 region,存储桶region可以在COS控制台“存储桶概览”查看 https://console.cloud.tencent.com/ ,关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 。
    u, _ := url.Parse("https://examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com")
    b := &cos.BaseURL{BucketURL: u}
    client := cos.NewClient(b, &http.Client{
        Transport: &cos.AuthorizationTransport{
            // 通过环境变量获取密钥
            // 环境变量 SECRETID 表示用户的 SecretId,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
            SecretID: os.Getenv("SECRETID"),
            // 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
            SecretKey: os.Getenv("SECRETKEY"),
        },
    })
    _, err := client.Bucket.DeleteLifecycle(context.Background())
    if err != nil {
        panic(err)
    }
}

目录