以编程方式删除批量中的Azure blob存储对象

时间:2016-09-13 13:21:56

标签: powershell azure azure-storage-blobs bulk

是否可以以编程方式删除批量中的Azure blob对象? 逐个删除对象有时需要几天时间。

我们在Azure Blob存储上放置了大量新文件以及我们要删除的所有过时文件,以避免产生不必要的费用。

我已经通过网络/ MSDN / Stack Overflow搜索,并且在2014年MSDN上只发现一个主题,指的是微软网站上的创建功能请求。

3 个答案:

答案 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 呼叫。

您只需要:

  1. Blob 的 URI 列表。
  2. 连接到您的存储帐户
  3. 从包管理器添加使用 Azure.Storage.Blobs

在返回中,如果删除 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);
            }