Azure Blob Storage:如何查看文件最后访问时间(非生命周期规则方式)
直接分析存储分析日志文件
你说Log Analytics成本高,但其实可以跳过它,直接读取存储账户里$logs容器的原始日志文件。只要开启了存储分析的读写日志,里面会记录所有Blob的Get、Head这类访问请求,每条日志都包含请求时间和Blob名称。写个简单的脚本(PowerShell、Python都行)批量扫描这些日志,就能提取出每个Blob的最后访问时间,成本比用Log Analytics低很多。应用层自定义记录访问时间
如果你的Blob都是通过自己的应用访问的,那在应用里加个逻辑就行:每次访问Blob时,更新它的自定义元数据,比如加个LastAccessedTime字段,把当前UTC时间存进去。这种方式没法覆盖Azure门户、存储资源管理器这类外部工具的访问,但能精准记录应用内的访问情况。用Azure SDK就能实现,比如Python的示例代码:from azure.storage.blob import BlobClient from datetime import datetime blob_client = BlobClient.from_connection_string("<你的连接字符串>", "<容器名>", "<Blob名>") current_meta = blob_client.get_blob_properties().metadata current_meta["LastAccessedTime"] = datetime.utcnow().isoformat() blob_client.set_blob_metadata(metadata=current_meta)用Event Grid实时追踪访问事件
给Blob存储配置Event Grid订阅,选择BlobAccessed事件,每次Blob被访问,事件就会推送到你指定的端点(比如Azure Function、存储队列)。然后在端点服务里记录每次访问的时间和Blob信息,最后汇总出每个Blob的最后访问时间。这种方式成本可控,比如用Azure Function的消耗计划,只有触发的时候才产生费用,适合实时追踪场景。别混淆Last-Modified属性
注意Blob的Last-Modified属性是记录内容或元数据最后修改的时间,不是访问时间,没法直接用来判断闲置状态。除非你的Blob一被访问就会修改内容或元数据,那它能当个间接参考,但绝对别靠它做归档决策。
补充一句:你提到的生命周期规则引擎启用的访问时间追踪,是Azure原生自动记录的,开启后会把最后访问时间作为Blob的系统属性存起来,不用额外开发。要是想手动查看,用Azure CLI就能查:
az storage blob show --account-name <存储账户名> --container-name <容器名> --name <Blob名> --query 'properties.lastAccessTime'
内容的提问来源于stack exchange,提问作者AvitanD

