简介
本文档提供关于生命周期的 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"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
// 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
},
})
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.000Z 和2007-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"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
// 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
},
})
_, _, 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"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
// 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
},
})
_, err := client.Bucket.DeleteLifecycle(context.Background())
if err != nil {
panic(err)
}
}