容器的 Azure 生命周期策略不起作用

标签 azure blob azure-blob-storage blobstorage

我已为容器配置了 azure 生命周期策略,如下所示,

{
  "rules": [
    {
      "enabled": true,
      "name": "name",
      "type": "Lifecycle",
      "definition": {
        "actions": {
          "baseBlob": {
            "delete": {
              "daysAfterModificationGreaterThan": 30
            }
          }
        },
        "filters": {
          "blobTypes": [
            "blockBlob"
          ],
          "prefixMatch": [
            "storageaccount/container"
          ]
        }
      }
    }
  ]
}

因此它将删除 30 天之前修改的 Blob。我将备份放入容器中,因此我想删除 30 天前的旧备份。

我在 2 天前配置了此策略。但旧的备份文件不会从容器中删除

我分析了一下,按照下面的链接,新政策配置后,新政策和政策更新需要24小时才能生效

引用:https://learn.microsoft.com/en-us/azure/storage/blobs/lifecycle-management-overview?tabs=azure-portal#faq

Lifecycle management policy not working on Azure Data Lake Gen 2

我也找不到很多关于这个问题的文档

我将防火墙和虚拟网络配置为“所有网络”。为什么我提到这一点是因为根据下面的文档他的解决方案有效,

https://learn.microsoft.com/en-us/answers/questions/107954/lifecycle-mangement-isn39t-doing-anything.html

但是容器中没有更新。那么有人知道这个问题的原因和解决方法吗? 谢谢!

最佳答案

请检查以下几点是否有帮助:

要检查的事项:

  1. 请检查是否有immutability policies configured for blob versions .

If version-level immutability support is enabled for a container and the container contains one or more blobs, then you must delete all blobs in the container before you can delete the container, even if there are no immutability policies in effect for the container or its blobs.

  • 请检查是否 last access time tracking已启用,因为 每次访问 blob 时,它们都会移动到热层,并且可能 更改其修改时间。您需要确保您使用的是 V2 存储帐户:optionally-enable-access-time-tracking
  • 解决方法:

    使用az cli添加生命周期策略,删除容器中最近修改时间超过30天的Blob。

    注意:(尝试简单地将容器名称指定为作为前缀匹配中的 blob 前缀容器名称,而不是存储帐户/容器)

    例如policy.json:

     "rules": [
        {
          "name": "expirationRule1",
          "enabled": true,
          "type": "Lifecycle",
          "definition": {
            "filters": {
              "blobTypes": [ "blockBlob" ],
              "prefixMatch": [ "containername" ]
            },
            "actions": {
              "baseBlob": {
                "delete": { "daysAfterModificationGreaterThan": 30 }
              }
            }
          }
        }
      ]
    }
    

    尝试使用 az cli command 创建此生命周期管理策略 (policy.son) :

    az storage account management-policy create --account-name youraccountname --policy @policy.json --resource-group myresourcegroup
    

    引用文献:

    1. lifecycle - Unable to add new rule in Storage Management Policy on Azure - Stack Overflow
    2. How to automatically delete old Azure Blob Storage containers - Stack Overflow

    关于容器的 Azure 生命周期策略不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71449736/

    相关文章:

    database - 如何在数据库 : BLOB or ARRAY? 中存储向量

    azure-devops - Azure 上 S3 的 Fluentd 守护程序集替代方案 (Blob)

    c# - 为什么 Azure 函数发送永无休止的 HTTP 请求?

    azure - 如何在 WebAPI 中实现 Azure 消息队列

    c# - 此 WCF 配置是否导致我的 400 错误请求?

    java - 尝试使用 java EventHubClient API 将事件发送到 Azure 事件中心时出现“连接中止”错误

    javascript - 如何将多个 WAV 音频 blob 合并为一个?

    javascript - 将 blob 设置为设备的 HTML 5 视频标签的 src 属性

    node.js - 在 azure blob 容器之间复制文件

    Python 按模式列出 Azure Blob