You need to enable JavaScript to run this app.
导航

管理桶存储类型(Go SDK)

最近更新时间2024.02.04 18:31:01

首次发布时间2023.01.18 16:55:21

桶(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)
}

相关文档

关于存储类型的更多信息,请参见存储类型