配置生命周期管理策略

Azure 存储生命周期管理可提供基于规则的策略,用于将 blob 数据转移到最适合的访问层,或在数据生命周期结束时使数据过期。 生命周期策略作用于基础 blob,并且可以选择作用于 blob 的版本还是快照。 有关生命周期管理策略的详细信息,请参阅通过自动管理数据生命周期来优化成本

生命周期管理策略由一个或多个规则组成,这些规则定义了一组需根据要满足的条件执行的操作。 对于基础 blob,可以选择检查以下条件之一:

  • 自创建 blob 以来经过的天数。
  • 自上次修改 blob 以来经过的天数。
  • 自上次访问 blob 以来经过的天数。 若要在操作中使用此条件,应当先启用上次访问时间跟踪(可选)

当所选条件为 true 时,管理策略将执行指定操作。 例如,如果已经定义一项操作(将 30 天内未经修改的 blob 从热层移至冷层),则生命周期管理策略将会在自上次对该 blob 执行写入操作过去 30 天后移动此 blob。

对于 blob 快照或版本,所要检查的条件是自创建快照或版本以来经过的天数。

启用访问时间跟踪(可选)

在配置生命周期管理策略之前,可以选择启用 blob 访问时间跟踪。 启用访问时间跟踪时,生命周期管理策略可能会根据上次通过读取或写入操作访问 blob 的时间加入一项操作。 为了尽量减少对读取访问延迟的影响,只有最近 24 小时的第一次读取会更新最后访问时间。 同一个 24 小时期间内的后续读取不会更新上次访问时间。 如果 Blob 在两次读取之间被修改,则上次访问时间是两个值中的较新值。

如果没有启用上次访问时间跟踪,则 daysAfterLastAccessTimeGreaterThan 将使用启用生命周期策略的日期,而不是使用 blob 的 LastAccessTime 属性。 当 LastAccessTime 属性为 null 值时,也将使用此日期。 有关使用上次访问时间跟踪的详细信息,请参阅基于上次访问时间移动数据

若要通过 Azure 门户启用上次访问时间跟踪,请执行以下步骤:

  1. 导航到 Azure 门户中的存储帐户。

  2. 在“数据管理”部分,选择“生命周期管理”。

  3. 选中“启用访问跟踪”复选框

    该屏幕截图显示了如何在 Azure 门户中启用上次访问跟踪。

使用 daysAfterLastAccessTimeGreaterThan 属性来指定应当在自上次访问经过多少天后,对 Blob 执行操作。

创建或管理策略

可以使用 Azure 门户、PowerShell、Azure CLI 或 Azure 资源管理器模板来添加、编辑或删除生命周期管理策略。

可以在 Azure 门户中通过两种方式添加策略。

列表视图

  1. 在 Azure 门户中导航到存储帐户。

  2. 在“数据管理”下,选择“生命周期管理”以查看或更改生命周期管理策略。

  3. 选择“列表视图”选项卡。

  4. 选择“添加规则”并在“详细信息”表单上为你的规则命名。 你还可以设置“规则范围”、“Blob 类型”和“Blob 子类型”值。 下面的示例设置筛选 Blob 的范围。 这将导致添加“筛选器集”选项卡。

Azure 门户中的“生命周期管理”>“添加规则”>“详细信息”页

  1. 选择“基础 Blob”以设置规则的条件。 在以下示例中,如果 Blob 有 30 天未修改,它们将转移到冷存储。

Azure 门户中的“生命周期管理”>“基础 Blob”页

仅当已启用访问时间跟踪,并且已选择“块 Blob”作为 Blob 类型时,“上次访问”选项才可用。 若要了解如何启用访问跟踪,请参阅启用访问时间跟踪(可选)

  1. 如果你在“详细信息”页上选择了“使用筛选器限制 Blob” ,请选择“筛选器集”来添加可选筛选器。 下方示例筛选的是 sample-container 容器中名称以 log 开头的 Blob。

Azure 门户中的生命周期管理筛选器集页

  1. 选择“添加”以添加新策略。

请注意,在删除与一个 Blob 关联的所有早期版本或快照之前,生命周期管理策略不会删除该 Blob 的当前版本。 如果存储帐户中的 Blob 具有以前的版本或快照,则应在将删除操作指定为策略的一部分时,在“Blob 子类型”部分中选择“基本 Blob”、“快照”和“版本”。

代码视图

  1. 在 Azure 门户中导航到存储帐户。
  2. 在“数据管理”下,选择“生命周期管理”以查看或更改生命周期管理策略。
  3. 选择“代码视图”选项卡。在此选项卡上,你可以定义 JSON 生命周期管理策略。

下方 JSON 示例定义了以下生命周期策略:将名称以 log 开头的块 Blob 移动到冷层,但前提是该 Blob 已有超过 30 天时间未经修改。

{
  "rules": [
    {
      "enabled": true,
      "name": "move-to-cool",
      "type": "Lifecycle",
      "definition": {
        "actions": {
          "baseBlob": {
            "tierToCool": {
              "daysAfterModificationGreaterThan": 30
            }
          }
        },
        "filters": {
          "blobTypes": [
            "blockBlob"
          ],
          "prefixMatch": [
            "sample-container/log"
          ]
        }
      }
    }
  ]
}

另请参阅