桶(Bucket)是 TOS 的全局唯一的命名空间,相当于数据的容器,用来储存对象(Object)数据。TOS 提供了多种桶级别的存储类型,分别适用于不同的应用场景。本文介绍如何通过 TOS Java SDK 管理桶的存储类型。
TOS 提供的桶存储类型包含以下几类。
存储类型 | 描述 | 访问权限值 |
---|---|---|
标准存储 | 桶默认存储类型,适用于各种社交、分享类的图片、音视频应用、大型网站、大数据分析等业务场景,例如程序下载、移动应用等。 | StorageClassType.STORAGE_CLASS_STANDARD |
低频存储 | 适用于较低访问频率(平均每月访问频率 1 到 2 次)的业务场景,例如热备数据、监控视频数据等。 | StorageClassType.STORAGE_CLASS_IA |
归档闪回存储 | 需要长期保存且不太访问的业务场景,例如档案资料等。 | StorageClassType.STORAGE_CLASS_ARCHIVE_FR |
智能分层存储 | 适用于访问频率不确定的数据,可根据访问频率转换访问层,降低存储费用。 | StorageClassType.STORAGE_CLASS_INTELLIGENT_TIERING |
冷归档存储 | 属于冷数据类型,适用于极少访问、需要长期保存数据的业务场景。最少需要存储 180 天;访问冷归档数据前需要先恢复数据。 | StorageClassType.COLD_ARCHIVE |
您可以通过 TOS Java SDK 的 putBucketStorageClass
接口设置指定桶的存储类型。
注意
以下代码展示如何设置桶的存储类型。
import com.volcengine.tos.TOSV2; import com.volcengine.tos.TOSV2ClientBuilder; import com.volcengine.tos.TosClientException; import com.volcengine.tos.TosServerException; import com.volcengine.tos.comm.common.StorageClassType; import com.volcengine.tos.model.bucket.PutBucketStorageClassInput; import com.volcengine.tos.model.bucket.PutBucketStorageClassOutput; public class PutBucketStorageClassExample { public static void main(String[] args) { String endpoint = "your endpoint"; String region = "your region"; String accessKey = System.getenv("TOS_ACCESS_KEY"); String secretKey = System.getenv("TOS_SECRET_KEY"); String bucketName = "your bucket name"; TOSV2 tos = new TOSV2ClientBuilder().build(region, endpoint, accessKey, secretKey); try{ StorageClassType storageClass = StorageClassType.STORAGE_CLASS_IA; PutBucketStorageClassInput input = new PutBucketStorageClassInput().setBucket(bucketName) .setStorageClass(storageClass); PutBucketStorageClassOutput output = tos.putBucketStorageClass(input); System.out.println("putBucketStorageClass succeed"); } catch (TosClientException e) { // 操作失败,捕获客户端异常,一般情况是请求参数错误,此时请求并未发送 System.out.println("putBucketStorageClass failed"); System.out.println("Message: " + e.getMessage()); if (e.getCause() != null) { e.getCause().printStackTrace(); } } catch (TosServerException e) { // 操作失败,捕获服务端异常,可以获取到从服务端返回的详细错误信息 System.out.println("putBucketStorageClass failed"); System.out.println("StatusCode: " + e.getStatusCode()); System.out.println("Code: " + e.getCode()); System.out.println("Message: " + e.getMessage()); System.out.println("RequestID: " + e.getRequestID()); } catch (Throwable t) { // 作为兜底捕获其他异常,一般不会执行到这里 System.out.println("putBucketStorageClass failed"); System.out.println("unexpected exception, message: " + t.getMessage()); } } }
您可以通过 TOS Java SDK 的 headBucket
接口获取指定桶当前配置的存储类型。
关于 headBucket
接口的相关说明和示例代码,请见获取桶元数据。
关于存储类型的更多信息,请参见存储类型。