如何向 Container 添加过滤器以删除虚拟文件夹中除某些 blob 之外的 blob?

How to add filter to Container for deleting blobs except some blobs in a virtual folder?

我在名为记录的容器(Azure 存储帐户)中有一组文件夹。一般来说,无论记录容器中存在什么 blob(文件夹),都会根据生命周期管理规则将其删除。

规则:如果 blob 存在超过 30 天,它将删除 blob。

但根据我的情况,所有 blob(文件夹)都应删除,除了一个 blob(文件夹),其中 blob(文件夹)名称在容器中为 Backup

有什么方法可以添加不删除特定 blob 的规则(在我的例子中是文件夹)? 因此备份文件夹不应在现有规则 运行.

时删除

例如使用 Azure 门户为特定 Blob 创建租约。租约阻止进程对 blob 做任何事情。这包括生命周期管理规则。

您还可以使用 rest api or one of the many storage SKDs.

获得或解除租约

另一种选择是不使用生命周期管理规则,而是编写一个预定的 Azure 函数,删除超过 30 天的 blob,但名称中包含 backup 的 blob 除外。

请注意:如果您启用了 "Hierarchical namespace" then you have the concept of directories, but those cannot be leased. If you did not then you should realise that folders are a virtual construct and as such cannot be leased as they are actually blobs. See the docs。因此,在那种情况下,您必须单独租用每个 blob 或编写一个执行一次的脚本。