【问题标题】:Azure BLOB storage Life Cycle Management - Append Blob vs Block blobAzure BLOB 存储生命周期管理 - 追加 Blob 与块 Blob
【发布时间】:2020-08-02 21:32:56
【问题描述】:

我意识到 Azure Blob 存储生命周期管理仅支持块​​ blob。它不支持 Append 或 Page blob。

我们正在考虑的一种解决方案是——采用粗略的方式——从逻辑应用或函数应用中枚举每个容器中的 blob,并根据类似于 Azure 的存储生命周期管理的某些规则进行删除,例如修改日期已经 n 天了。

有没有人遇到过类似的清理存储要求?任何人都可以提出更好的实现方式吗?

非常感谢。

谢谢 阿萨杜

【问题讨论】:

  • 我们知道如何明智地进行编码。我的问题与做任何不同于枚举和删除的事情有关——就像我提到的——粗略/直接的方式。感谢您的回复。谢谢阿萨杜
  • 我真的明白这个问题。正如我在答案中提到的,除了生命周期管理之外,唯一的方法是枚举然后删除。我也相信即使生命周期管理本身在后端使用相同的逻辑。此外,生命周期管理计划在 2020 年晚些时候支持附加 blob,请参阅github issue
  • 该功能现在可用于删除附加 blob。页面 blob 已积压
  • @Emmie 感谢您的更新 - 将查找为 Append blob 添加的支持。

标签: azure azure-storage azure-blob-storage


【解决方案1】:

我能想到的唯一方法和你提到的一样,创建一个计时器触发功能应用程序或 webjob。

示例如下:

Blob 存储包:Microsoft.Azure.Storage.Blob, version 11.1.3

示例代码:

    static void Main(string[] args)
    {
        var connection_str = "xxxxx";
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connection_str);
        CloudBlobClient cloudBlobClient=storageAccount.CreateCloudBlobClient();

        //list all the containers
        var containers = cloudBlobClient.ListContainers();


        foreach (var container in containers)
        {
            Console.WriteLine(container.Name);

            //find blobs whose type is CloudAppendBlob
            var blobs = container.ListBlobs("", useFlatBlobListing: true).OfType<CloudAppendBlob>();


            if (blobs.ToList().Count() <=0) continue;

            foreach (var blob in blobs)
            {
                Console.WriteLine($"blob name is {blob.Name}");

                //add your own logic here
                //if condition use blob.Properties.LastModified

                blob.Delete();
            }
        }

   }

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2020-04-27
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 2018-08-13
    • 2021-11-29
    • 2021-07-04
    相关资源
    最近更新 更多