是否可以以编程方式删除批量中的Azure blob对象? 逐个删除对象有时需要几天时间。
我们在Azure Blob存储上放置了大量新文件以及我们要删除的所有过时文件,以避免产生不必要的费用。
我已经通过网络/ MSDN / Stack Overflow搜索,并且在2014年MSDN上只发现一个主题,指的是微软网站上的创建功能请求。
答案 0 :(得分:6)
是否可以以编程方式删除批量中的Azure blob对象?
没有。您需要逐个删除blob。
您可以采取的措施是创建不同的容器(比如每年/每月组合的容器)并将相关的blob放在那里。当您需要删除该月/年的blob时,只需删除该容器即可。
答案 1 :(得分:1)
当然可以(即使用Powershell)
$Ctx = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
Get-AzureStorageBlob -Container "container-name" -Context $Ctx -Blob TellMeWhatToDelete* | Remove-AzureStorageBlob
即:这会删除文档容器中的每个Powerpoint Presentation
Get-AzureStorageBlob -Container "documents" -Context $Ctx -Blob *.pptx | Remove-AzureStorageBlob
或者您可以删除过去30天内未更改的每个docx文件
Get-AzureStorageBlob -Container "documents" -Context $Ctx -Blob *.docx
| where {$_.LastModified -le (get-date).AddDays(-30) } | Remove-AzureStorageBlob
答案 2 :(得分:0)
你可以批量删除blob。这将是一个 1 呼叫。
您只需要:
在返回中,如果删除 blob 有任何问题,异常会为您提供详细信息。
<块引用> BlobServiceClient service = new BlobServiceClient(connectionStringForStorageAccount);
BlobBatchClient batchClient = service.GetBlobBatchClient();
try
{
//dont forget to add the include snapshots :)
await batchClient.DeleteBlobsAsync(listofURIforBlobs,
Azure.Storage.Blobs.Models.DeleteSnapshotsOption.IncludeSnapshots);
}
catch (Exception ex)
{
return (false, ex.Message);
}