You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure归档层Blob文件Java覆盖失败解决方案求助

归档层Blob覆盖解决方案

归档层(Archive Tier)的Blob处于离线状态,不支持直接覆盖,必须先完成解冻操作,再执行覆盖。以下是Java SDK的实现步骤:

核心流程

  • 检查Blob当前访问层,若为归档层则发起解冻请求
  • 等待解冻完成(异步操作需轮询状态)
  • 解冻完成后执行覆盖操作
  • 可选:覆盖完成后将Blob重新设置回归档层

代码示例

// 初始化Blob客户端
BlobClient blobClient = new BlobClientBuilder()
        .connectionString("你的存储账户连接字符串")
        .containerName("目标容器名称")
        .blobName("归档层Blob名称")
        .buildClient();

// 获取Blob属性,判断是否处于归档层
BlobProperties properties = blobClient.getProperties();
if (AccessTier.ARCHIVE.equals(properties.getAccessTier())) {
    // 发起解冻请求:目标访问层设为HOT,优先级可选STANDARD/ HIGH
    blobClient.setAccessTierWithResponse(
            AccessTier.HOT,
            RehydratePriority.STANDARD,
            null,
            null,
            Context.NONE
    );

    // 轮询等待解冻完成(可根据Blob大小调整等待间隔)
    while (true) {
        properties = blobClient.getProperties();
        // 解冻完成标志:访问层变为目标层,且rehydrateStatus为空
        if (AccessTier.HOT.equals(properties.getAccessTier()) && properties.getRehydrateStatus() == null) {
            break;
        }
        Thread.sleep(60000); // 每1分钟查询一次状态
    }
}

// 执行覆盖操作(第二个参数true表示覆盖已有Blob)
blobClient.uploadFromFile("本地文件路径", true);

// 可选:覆盖完成后将Blob重新设置回归档层
blobClient.setAccessTier(AccessTier.ARCHIVE);

关键说明

  • 解冻耗时:标准优先级通常需数小时,高优先级约1小时内完成,具体取决于Blob大小和Azure服务负载
  • 费用:解冻会产生数据检索费用,高优先级的检索成本更高
  • Portal手动覆盖逻辑:Azure后台自动完成了解冻+覆盖的流程,SDK需显式实现这两步

内容的提问来源于stack exchange,提问作者Vicente Montoro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:19:58