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

如何通过Azure Java API查询Azure Blob Storage占用的磁盘存储空间

你之前尝试读取CloudBlobContainer元数据、属性的方式确实无法获取容量统计数据,Blob的容量统计属于Azure平台侧预计算的监控数据,不会存放在容器本身的属性中。你不需要递归遍历所有Blob统计容量,以下是两种高效的实现方案:

实现方案

方案1:调用Azure Monitor指标API(推荐,实时性较好)

Azure存储服务会自动上报容量相关的指标到Azure Monitor,你可以直接查询这些预计算的指标,支持存储账户级别、单个容器级别的已用容量统计,不需要自己遍历Blob,指标延迟通常为5~15分钟,完全满足绝大多数场景的统计需求。
你需要用到的核心指标如下:

  • 存储账户总Blob已用容量:指标名BlobCapacity,单位为字节,统计整个Blob存储服务的已用容量
  • 单个容器已用容量:指标名ContainerCapacity,单位为字节,可通过筛选条件指定查询某个容器的已用容量
  • 存储账户总配额:指标名AccountQuota,单位为字节,若你设置了存储账户配额可以直接获取,用来计算可用容量和使用率,刚好匹配你要的df命令输出需求。

Java实现可以使用Azure Monitor官方Java SDK,核心代码示例如下:

// 需引入azure-mgmt-monitor依赖
MetricsClient metricsClient = new MetricsClientBuilder()
        .credential(new DefaultAzureCredentialBuilder().build())
        .buildClient();

// 构造指标查询请求,范围参数填你的存储账户资源ID
Response<MetricListResult> response = metricsClient.listWithResponse(
        "/subscriptions/<你的订阅ID>/resourceGroups/<资源组名>/providers/Microsoft.Storage/storageAccounts/<存储账户名>",
        "BlobCapacity,AccountQuota",
        null,
        "PT1H", // 时间粒度,可根据需求调整
        null,
        "Average",
        null,
        null,
        Context.NONE);

// 解析返回结果即可得到已用容量、总配额,进一步计算可用容量=总配额-已用容量、使用率=已用容量/总配额*100%

方案2:启用Blob库存功能

如果你的需求对实时性要求不高,可以在存储账户上启用Blob库存功能,Azure会按你配置的频率(每天/每周)自动生成CSV或Parquet格式的库存报告,报告中会直接包含容器总大小、总Blob数等统计字段,你只需要定期读取最新的库存报告即可,不需要自己做任何统计计算。

注意事项

  • 上述两种方案仅支持标准v2、高级块Blob存储账户,旧的经典存储账户不支持
  • 仅当你需要秒级的精确容量统计时,才需要考虑遍历容器内所有Blob的方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:27:04