如何通过编程方式设置Azure Blob Storage文件X天后自动删除
实现Azure Blob Storage文件上传时设置自动删除(无需函数/存储策略)
自定义元数据RetensionDays无法被Azure Storage自动识别执行,必须利用Blob原生的**过期时间(ExpiryTime)**属性,才能实现文件在指定天数后自动删除,无需额外Azure函数或存储生命周期策略。
核心逻辑
直接为单个Blob设置过期时间,当时间到达后,Azure Storage会自动删除该Blob,全程无需额外运维操作。
代码实现示例
.NET SDK(Azure.Storage.Blobs)
using Azure.Storage.Blobs; using Azure.Storage.Blobs.Models; using System; using System.IO; var storageConnString = "你的存储账户连接字符串"; var containerName = "目标容器名称"; var blobFileName = "待上传的文件名"; var retentionDays = 7; // 自定义保留天数 // 初始化Blob客户端 var blobServiceClient = new BlobServiceClient(storageConnString); var containerClient = blobServiceClient.GetBlobContainerClient(containerName); var blobClient = containerClient.GetBlobClient(blobFileName); // 上传文件并设置过期时间 using var fileStream = File.OpenRead("本地文件路径"); var uploadOpts = new BlobUploadOptions { // 计算过期时间:当前UTC时间 + 保留天数 ExpiresOn = DateTimeOffset.UtcNow.AddDays(retentionDays) }; await blobClient.UploadAsync(fileStream, uploadOpts);
Python SDK(azure-storage-blob)
from azure.storage.blob import BlobServiceClient from datetime import datetime, timedelta storage_conn_string = "你的存储账户连接字符串" container_name = "目标容器名称" blob_file_name = "待上传的文件名" retention_days = 7 # 初始化客户端 blob_service_client = BlobServiceClient.from_connection_string(storage_conn_string) container_client = blob_service_client.get_container_client(container_name) blob_client = container_client.get_blob_client(blob_file_name) # 计算UTC过期时间 expiry_time = datetime.utcnow() + timedelta(days=retention_days) # 上传并设置过期属性 with open("本地文件路径", "rb") as file_data: blob_client.upload_blob( data=file_data, overwrite=True, expires_on=expiry_time )
关键注意事项
- 过期时间必须使用UTC时间,避免时区差异导致删除时间偏差
- 该设置仅对当前Blob生效,不会批量影响容器内其他文件
- 已上传的Blob可通过对应SDK的修改接口调整过期时间(例如.NET的
SetExpiresOnAsync方法)
内容的提问来源于stack exchange,提问作者OpenStack
相关产品推荐
相关产品推荐

