你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在不同层级之间转换 Blob 的生命周期管理策略

可以使用生命周期管理策略根据 Blob 的使用模式将 Blob 转换为经济高效的访问层。 本文包含用于在层之间转换 Blob 的策略定义示例。

有关 Azure 存储生命周期管理策略的一般信息,请参阅 Azure Blob 存储生命周期管理概述

将陈旧的数据移到冷层

此示例演示如何转移前缀为 sample-container/blob1container2/blob2 的块 Blob。 该策略将 30 天以上未修改的 Blob 转移到冷存储,并将 90 天未修改的 Blob 转移到存档层:

{
  "rules": [
    {
      "name": "agingRule",
      "enabled": true,
      "type": "Lifecycle",
      "definition": {
        "filters": {
          "blobTypes": [ "blockBlob" ],
          "prefixMatch": [ "sample-container/blob1", "container2/blob2" ]
        },
        "actions": {
          "baseBlob": {
            "tierToCool": { "daysAfterModificationGreaterThan": 30 },
            "tierToArchive": { "daysAfterModificationGreaterThan": 90 }
          }
        }
      }
    }
  ]
}

注释

生命周期管理策略中的 baseBlob 元素是指 blob 的当前版本。

根据上次访问的时间移动数据

在以下示例中,如果 Blob 在 30 天内未被访问,则会将其移到冷存储。 enableAutoTierToHotFromCool 属性是一个布尔值,用于指示当某个 Blob 在被分层到冷层后再次被访问时,是否应自动将其从冷层恢复到热层。

小窍门

如果一个 Blob 移动到冷层,然后在 30 天内自动移回,则将收取提前删除费用。 在设置 enableAutoTierToHotFromCool 属性之前,确保分析数据的访问模式,以便降低意外费用。 Blob 访问后,从冷层到热层的自动分层限制为每 30 天只能发生一次。 此安全措施已生效,可帮助你避免因冷层多次提前删除而产生的罚金。 如果对象的层级由于策略重新变为冷层,则 Blob 上的任何操作都按冷层价格收费。 如果需要在 30 天内多次自动更新 Blob,则将其保留在热层中比较经济高效。

启用enableAutoTierToHotFromCool规则仅适用于根据此规则降级的对象。 无法为已在冷层中的 Blob 启用 enableAutoTierToHotFromCool 属性。 因此,当访问这些 Blob 时,这些 blob 的访问层不会自动更改为热层。

{
  "enabled": true,
  "name": "last-accessed-thirty-days-ago",
  "type": "Lifecycle",
  "definition": {
    "actions": {
      "baseBlob": {
        "enableAutoTierToHotFromCool": true,
        "tierToCool": {
          "daysAfterLastAccessTimeGreaterThan": 30
        }
      }
    },
    "filters": {
      "blobTypes": [
        "blockBlob"
      ],
      "prefixMatch": [
        "mylifecyclecontainer/log"
      ]
    }
  }
}

引入数据后对其进行存档

某些数据在云中处于空闲状态,并且很少(如果有)被访问。 以下生命周期策略已配置为在引入数据后立即对其进行存档。 此示例将容器中名为 archivecontainer 的块 Blob 转换为存档层。 通过在上次修改时间后 0 天对 blob 执行操作来完成转换。

重要

如需将数据集设置为可读,则请不要设置将 Blob 移动到存档层的策略。 若要读取存档层中的 Blob,必须先对其进行重新水合过程,该过程可能既耗时又昂贵。 有关详细信息,请参阅存档层中的 blob 解除冻结概述。 如果需要经常读取数据集,请不要设置将 Blob 移动到温存层或冷层的策略,因为这可能会导致更高的事务成本。

{
  "rules": [
    {
      "name": "archiveRule",
      "enabled": true,
      "type": "Lifecycle",
      "definition": {
        "filters": {
          "blobTypes": [ "blockBlob" ],
          "prefixMatch": [ "archivecontainer" ]
        },
        "actions": {
          "baseBlob": {
              "tierToArchive": { 
                "daysAfterModificationGreaterThan": 0
              }
          }
        }
      }
    }
  ]
}

注释

Microsoft 建议直接将 Blob 上传到存档层,以提高效率。 可以在 Put BlobPut Block List 操作中,通过 x-ms-access-tier 标头指定存档层。 REST 版本 2018-11-09 及更高版本,或最新的 Blob 存储客户端库支持“x-ms-access-tier”标头。

管理以前的版本

对于在其整个生存期内定期修改和访问的数据,你可以启用 Blob 存储版本控制来自动维护对象的早期版本。 可以创建策略来对以前的版本进行分层。 可通过评估版本创建时间来确定版本的陈旧程度。 此策略规则会将容器 activedata 中创建于 90 天或更早的旧版本移到冷层。

{
  "rules": [
    {
      "enabled": true,
      "name": "versionrule",
      "type": "Lifecycle",
      "definition": {
        "actions": {
          "version": {
            "tierToCool": {
              "daysAfterCreationGreaterThan": 90
            },
          }
        },
        "filters": {
          "blobTypes": [
            "blockBlob"
          ],
          "prefixMatch": [
            "activedata/"
          ]
        }
      }
    }
  ]
}

注释

生命周期管理策略中的 版本 元素是指以前的版本。

另请参阅