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

管理桶存储(C++ SDK)

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

首次发布时间2023.01.29 15:35:46

桶(Bucket)是 TOS 的全局唯一的命名空间,相当于数据的容器,用来储存对象(Object)数据。TOS提供了多种桶存储类型,可适用于各种应用场景,本文介绍如何设置桶的存储类型。

存储类型说明

桶存储类型包含以下几类,关于存储类型的更多信息,请参见存储类型

存储类型

描述

对应枚举值

标准存储

桶默认存储类型,高可用、高可靠、高性能存储类型,适用于频繁被访问的数据。

StorageClassType::STANDARD

低频存储

适用于较低访问频率(平均每月访问频率 1 到 2 次)的业务场景,最少存储 30 天。

StorageClassType::IA

归档闪回存储

需要长期保存且不太访问的业务场景,最少存储 90 天。

StorageClassType::ARCHIVE_FR

智能分层存储

适用于访问频率不确定的数据,可根据访问频率转换访问层,降低存储费用。

StorageClassType::INTELLIGENT_TIERING

冷归档存储

属于冷数据类型,适用于极少访问、需要长期保存数据的业务场景。最少需要存储 180 天;访问冷归档数据前需要先恢复数据。

StorageClassType::COLD_ARCHIVE

设置存储类型

注意

  • 设置桶存储类型,默认只有桶拥有者具备此权限。
  • 设置了桶存储类型后,若上传对象、复制对象和初始化分片上传任务时,未指定对象存储类型。则该对象继承桶的存储类型。
  • 创建桶时,若未指定桶存储类型,默认存储类型为标准存储。

示例代码

以下代码用于设置 examplebucket 桶的存储类型。

#include "TosClientV2.h"
using namespace VolcengineTos;

int main(void){
    // 初始化 TOS 账号信息
    // Your Region 填写 Bucket 所在 Region
    std::string region = "Your Region";
    std::string accessKey = std::getenv("TOS_ACCESS_KEY");
    std::string secretKey = std::getenv("TOS_SECRET_KEY");
    // 填写 Bucket 名称,例如 examplebucket
    std::string bucketName = "examplebucket";
    
    // 初始化网络等资源
    InitializeClient();
    // 创建交互的 client
    TosClientV2 client(region, accessKey, secretKey);
    
    // 设置桶的存储类型为 IA
    PutBucketStorageClassInput input(bucketName, StorageClassType::IA);
    auto output = client.putBucketStorageClass(input);
    if (!output.isSuccess()) {
        // 异常处理
        std::cout << "PutBucketStorageClass failed." << output.error().String() << std::endl;
        // 释放网络等资源
        CloseClient();
        return -1;
    }
    std::cout << "PutBucketStorageClass success." << std::endl;

    // 释放网络等资源
    CloseClient();
    return 0;
}

获取桶存储类型

以下代码用于获取桶 examplebucket 的存储类型。

#include "TosClientV2.h"
using namespace VolcengineTos;

int main(void){
    // 初始化 TOS 账号信息
    // Your Region 填写 Bucket 所在 Region
    std::string region = "Your Region";
    std::string accessKey = std::getenv("TOS_ACCESS_KEY");
    std::string secretKey = std::getenv("TOS_SECRET_KEY");
    // 填写 Bucket 名称,例如 examplebucket
    std::string bucketName = "examplebucket";
    
    // 初始化网络等资源
    InitializeClient();
    // 创建交互的 client
    TosClientV2 client(region, accessKey, secretKey);
    
    // 获取桶元数据
    HeadBucketV2Input input(bucketName);
    auto output = client.headBucket(input);
    if (!output.isSuccess()) {
        // 异常处理
        std::cout << "GetBucketStorageClass failed." << output.error().String() << std::endl;
        // 释放网络等资源
        CloseClient();
        return -1;
    }
    // 打印桶的存储类型信息
    std::cout << "GetBucketStorageClass success, the bucket storage class is:" << output.result().getStringFormatStorageClass() << std::endl;
    
    // 释放网络等资源
    CloseClient();
    return 0;
}

相关文档

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