桶(Bucket)是 TOS 的全局唯一的命名空间,相当于数据的容器,用来储存对象(Object)数据。本文介绍如何设置桶的存储类型。
桶(Bucket)是 TOS 的全局唯一的命名空间,相当于数据的容器,用来储存对象(Object)数据。TOS提供了多种桶存储类型,可适用于各种应用场景,关于存储类型的更多信息,请参见存储类型,本文介绍如何设置桶的存储类型。桶存储类型包含以下几类:。
存储类型 | 描述 | 对应枚举值 |
---|---|---|
标准存储 | 高可用、高可靠、高性能存储类型,适用于频繁被访问的数据 | enum.StorageClassStandard |
低频存储 | 适用于不频繁被访问的数据,最少存储 30 天。 | enum.StorageClassIa |
归档闪回存储 | 需要长期保存且不太访问的业务场景,例如档案资料等,最少存储 90 天。 | enum.StorageClassArchiveFr |
智能分层存储 | 适用于访问频率不确定的数据,可根据访问频率转换访问层,降低存储费用。 | enum.StorageClassIntelligentTiering |
冷归档存储 | 属于冷数据类型,适用于极少访问、需要长期保存数据的业务场景。最少需要存储 180 天;访问冷归档数据前需要先恢复数据。 | enum.StorageClassColdArchive |
注意
以下代码用于设置存储桶的存储类型。
package main import ( "context" "fmt" "github.com/volcengine/ve-tos-golang-sdk/v2/tos" "github.com/volcengine/ve-tos-golang-sdk/v2/tos/enum" ) func checkErr(err error) { if err != nil { if serverErr, ok := err.(*tos.TosServerError); ok { fmt.Println("Error:", serverErr.Error()) fmt.Println("Request ID:", serverErr.RequestID) fmt.Println("Response Status Code:", serverErr.StatusCode) fmt.Println("Response Header:", serverErr.Header) fmt.Println("Response Err Code:", serverErr.Code) fmt.Println("Response Err Msg:", serverErr.Message) } else if clientErr, ok := err.(*tos.TosClientError); ok { fmt.Println("Error:", clientErr.Error()) fmt.Println("Client Cause Err:", clientErr.Cause.Error()) } else { fmt.Println("Error:", err) } panic(err) } } func main() { var ( accessKey = os.Getenv("TOS_ACCESS_KEY") secretKey = os.Getenv("TOS_SECRET_KEY") // Bucket 对应的 Endpoint,以华北2(北京)为例:https://tos-cn-beijing.volces.com endpoint = "https://tos-cn-beijing.volces.com" region = "cn-beijing" // 填写 BucketName bucketName = "*** Provide your bucket name ***" ctx = context.Background() ) // 初始化客户端 client, err := tos.NewClientV2(endpoint, tos.WithRegion(region), tos.WithCredentials(tos.NewStaticCredentials(accessKey, secretKey))) checkErr(err) // 设置存储类型为低频存储 storageClass := enum.StorageClassIa // 设置桶的存储类型 output, err := client.PutBucketStorageClass(ctx, &tos.PutBucketStorageClassInput{ Bucket: bucketName, StorageClass: storageClass, }) checkErr(err) fmt.Println("PutBucketStorageClass Request ID:", output.RequestID) }
注意
默认只有桶拥有者具有获取桶存储类型的权限。
以下代码用于获取存储桶的存储类型。
package main import ( "context" "fmt" "github.com/volcengine/ve-tos-golang-sdk/v2/tos" "github.com/volcengine/ve-tos-golang-sdk/v2/tos/enum" ) func checkErr(err error) { if err != nil { if serverErr, ok := err.(*tos.TosServerError); ok { fmt.Println("Error:", serverErr.Error()) fmt.Println("Request ID:", serverErr.RequestID) fmt.Println("Response Status Code:", serverErr.StatusCode) fmt.Println("Response Header:", serverErr.Header) fmt.Println("Response Err Code:", serverErr.Code) fmt.Println("Response Err Msg:", serverErr.Message) } else if clientErr, ok := err.(*tos.TosClientError); ok { fmt.Println("Error:", clientErr.Error()) fmt.Println("Client Cause Err:", clientErr.Cause.Error()) } else { fmt.Println("Error:", err) } panic(err) } } func main() { var ( accessKey = os.Getenv("TOS_ACCESS_KEY") secretKey = os.Getenv("TOS_SECRET_KEY") // Bucket 对应的 Endpoint,以华北2(北京)为例:https://tos-cn-beijing.volces.com endpoint = "https://tos-cn-beijing.volces.com" region = "cn-beijing" // 填写 BucketName bucketName = "*** Provide your bucket name ***" ctx = context.Background() ) // 初始化客户端 client, err := tos.NewClientV2(endpoint, tos.WithRegion(region), tos.WithCredentials(tos.NewStaticCredentials(accessKey, secretKey))) checkErr(err) // 查看存储类型 headOutput, err := client.HeadBucket(ctx, &tos.HeadBucketInput{Bucket: bucketName}) checkErr(err) fmt.Println("Bucket Storage Class:", headOutput.StorageClass) }
关于存储类型的更多信息,请参见存储类型。