解冻归档文件(C++ SDK V2)

更新时间:
复制为 MD 格式

归档类型和冷归档类型的文件需要解冻后才能读取。本文介绍如何使用 OSS C++ SDK V2 解冻归档文件。

注意事项

  • 运行示例代码前,请将代码中的 <region> 替换为实际的地域,如 cn-hangzhou

  • 本文示例代码使用环境变量获取访问凭证。

  • 解冻归档文件需要拥有 oss:RestoreObject 权限。

  • RestoreObject 仅适用于归档类型(Archive)和冷归档类型(ColdArchive)的文件。

重要

归档类型文件的解冻时间约为 1 分钟,冷归档类型文件的解冻时间根据数据大小和解冻优先级不同,取回时间也不同。解冻完成后,文件进入可读取状态。

示例代码

解冻归档文件

以下代码演示如何解冻归档类型的文件:

#include <iostream>
#include "alibabacloud/oss2/ClientConfiguration.h"
#include "alibabacloud/oss2/OSSClient.h"
#include "alibabacloud/oss2/credentials/CredentialsProvider.h"

namespace oss = alibabacloud::oss2;

int main() {
    auto conf = oss::ClientConfiguration::loadDefault();
    conf.region = "<region>";
    conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();

    oss::OSSClient client(conf);

    oss::models::RestoreRequest restoreReq;
    restoreReq.days = 1;
    restoreReq.jobParameters = oss::models::JobParameters().setTier("Standard");

    auto outcome = client.restoreObject(
        oss::models::RestoreObjectRequest()
            .setBucket("examplebucket")
            .setKey("exampleobject.txt")
            .setRestoreRequest(restoreReq));

    if (!outcome.has_value()) {
        auto& e = outcome.error();
        std::cerr << "解冻归档文件失败"
                  << ", code: " << e.getCode()
                  << ", message: " << e.getMessage()
                  << ", requestId: " << e.getRequestId() << std::endl;
        return 1;
    }

    auto& result = outcome.value();
    std::cout << "解冻归档文件成功"
              << ", status: " << result.getStatusCode()
              << ", requestId: " << result.getRequestId() << std::endl;
    return 0;
}
          

清除解冻状态

以下代码演示如何清除已解冻的归档文件的解冻状态,使其恢复为冻结状态:

#include <iostream>
#include "alibabacloud/oss2/ClientConfiguration.h"
#include "alibabacloud/oss2/OSSClient.h"
#include "alibabacloud/oss2/credentials/CredentialsProvider.h"

namespace oss = alibabacloud::oss2;

int main() {
    auto conf = oss::ClientConfiguration::loadDefault();
    conf.region = "<region>";
    conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();

    oss::OSSClient client(conf);

    auto outcome = client.cleanRestoredObject(
        oss::models::CleanRestoredObjectRequest()
            .setBucket("examplebucket")
            .setKey("exampleobject.txt"));

    if (!outcome.has_value()) {
        auto& e = outcome.error();
        std::cerr << "清除解冻状态失败"
                  << ", code: " << e.getCode()
                  << ", message: " << e.getMessage()
                  << ", requestId: " << e.getRequestId() << std::endl;
        return 1;
    }

    auto& result = outcome.value();
    std::cout << "清除解冻状态成功"
              << ", status: " << result.getStatusCode()
              << ", requestId: " << result.getRequestId() << std::endl;
    return 0;
}
          

相关文档