Azure Storage Blobs 12.16.0中BlobRetentionPolicy的使用方法咨询
实现Azure Blob容器文件自动删除的C#方案(12.16.0版本)
你找到的BlobRetentionPolicy是用于不可变存储容器的保留策略,作用是强制数据在指定天数内无法被删除或修改,并非实现自动删除的功能。要让容器中的文件自动删除,需要配置Blob生命周期管理规则,以下是具体实现步骤:
核心实现代码
using Azure.Storage.Blobs; using Azure.Storage.Blobs.Models; // 初始化存储账户客户端 var connectionString = "你的存储账户连接字符串"; var serviceClient = new BlobServiceClient(connectionString); // 定义自动删除规则:删除15天前修改的块Blob(针对指定容器) var autoDeleteRule = new BlobManagementPolicyRule( name: "AutoDeleteOldBlobs", definition: new BlobManagementPolicyDefinition( actions: new BlobManagementPolicyActions( baseBlob: new BlobBaseBlobManagementPolicyActions( delete: new BlobDeleteAction( daysAfterModificationGreaterThan: 15 ) ) ), filters: new BlobManagementPolicyFilters( blobTypes: new List<string> { "blockBlob" }, prefixMatch: new List<string> { "你的容器名称/" } // 指定目标容器,作用于所有容器可移除该配置 ) ) ); // 组装生命周期策略 var policy = new BlobManagementPolicy(rules: new List<BlobManagementPolicyRule> { autoDeleteRule }); // 将策略应用到存储账户 await serviceClient.SetBlobManagementPolicyAsync(policy);
关键说明
- 如果需要对所有容器生效,删除
filters中的prefixMatch配置即可。 - 规则中的
daysAfterModificationGreaterThan参数表示Blob最后修改时间超过指定天数后触发删除。 - 该策略是账户级配置,设置后Azure会自动后台执行清理操作。
补充:BlobRetentionPolicy的正确用途
如果你的需求是设置不可变存储(强制Blob在15天内不能被修改或删除),而非自动删除,可通过以下代码配置容器的不可变策略:
var containerClient = serviceClient.GetBlobContainerClient("你的容器名称"); var immutabilityPolicy = new BlobContainerImmutabilityPolicy( new BlobRetentionPolicy { Days = 15, Enabled = true } ); await containerClient.SetImmutabilityPolicyAsync(immutabilityPolicy);
内容的提问来源于stack exchange,提问作者Kanasi
相关产品推荐
相关产品推荐

