文档

批量过期

新功能,版本 MinIO: RELEASE.2023-12-02T10-51-33Z

MinIO 批量框架允许您使用 YAML 格式的作业定义文件(“批量文件”)创建、管理、监控和执行作业。批量作业直接在 MinIO 部署上运行,以利用服务器端的处理能力,而无需您运行 MinIO 客户端 的本地计算机的限制。

expire 批量作业将 自动对象过期 行为应用于单个存储桶。该作业根据提供的配置确定过期资格,与任何配置的过期规则无关。

行为

对象的立即过期

批量过期作为批量作业的一部分立即发生,与 基于被动扫描程序的过期规则应用 相比。具体来说,批量过期不会屈服于应用程序 I/O,并且可能会影响部署上常规读/写操作的性能。

批量运行时确定过期资格

批量过期按存储桶工作,并且仅运行一次以完成。该作业在作业运行时确定过期资格,并且不会定期重新扫描或重新检查新对象。

要捕获任何符合过期条件的新对象,请重新运行批量作业。

过期规则仅检查最新对象

批量过期作业仅针对每个批量过期规则检查每个对象的最新或“当前”版本。

过期批量作业参考

字段

描述

expire

必需

过期作业类型的顶层字段。

apiVersion

必需

设置为 v1

bucket

必需

指定作业运行的存储桶的名称。

prefix

可选

指定作业运行的存储桶前缀。

rules

必需

一个或多个过期规则的数组,应用于指定 bucketprefix(如果有)中的对象。

rules.[n].type

必需

支持以下两种值之一

  • object - 仅适用于没有 DeleteMarker 作为当前版本的对象。

  • deleted - 仅适用于 DeleteMarker 作为当前版本的对象。

有关 DeleteMarker 或版本化存储桶中的删除操作的更完整文档,请参见 对象删除

rules.[n].name

可选

指定用于过滤对象的匹配字符串。

支持 glob 样式的通配符 (*, ?)。

rules.[n].olderThan

可选

指定对象的年龄以过滤对象。该规则仅适用于比指定时间单位更旧的对象。

例如,72h3d 选择比三天更旧的对象。

rules.[n].createdBefore

可选

指定用于过滤对象的 ISO-8601 时间戳。

该规则仅适用于在指定时间戳之前创建的对象。

rules.[n].tags

可选

指定描述用于过滤对象的键值对数组。 value 条目支持 glob 样式的通配符 (*, ?)。

例如,以下过滤器将规则过滤到仅包含匹配标签的对象。

tags:
  - key: archive
    value: True

此键与 rules.[n].type: deleted 不兼容。

rules.[n].metadata

可选

指定一个键值对数组,用于描述用于过滤对象的元数据。 value 键支持 glob 样式通配符 (*?)。

例如,以下过滤器将规则过滤到仅包含匹配元数据的对象。

metadata:
  - key: content-type
    value: image/*

此键与 rules.[n].type: deleted 不兼容。

rules.[n].size

可选

指定用于过滤对象的范围对象大小。

  • lessThan - 匹配大小小于指定数量的对象(例如 MiBGiB)。

  • greaterThan - 匹配大小大于指定数量的对象(例如 MiBGiB)。

rules.[n].purge.retainVersions

可选

指定在应用过期时要保留的对象版本数。

默认值为 0,用于删除所有对象版本(最快)。

notify.endpoint

可选

用于发送通知事件的预定义端点。

notify.token

可选

一个可选的 JSON Web 令牌 (JWT),用于访问 notify.endpoint

retry.attempts

可选

在放弃之前完成批处理作业的尝试次数。

retry.delay

可选

每次尝试之间等待的时间量 (ms)。

expire 作业类型的示例 YAML 描述

使用 mc batch generate 创建一个基本的 expire 批处理作业以进行进一步自定义。

expire:
  apiVersion: v1
  bucket: mybucket # Bucket where this job will expire matching objects from
  prefix: myprefix # (Optional) Prefix under which this job will expire objects matching the rules below.
  rules:
    - type: object  # objects with zero ore more older versions
      name: NAME # match object names that satisfy the wildcard expression.
      olderThan: 70h # match objects older than this value
      createdBefore: "2006-01-02T15:04:05.00Z" # match objects created before "date"
      tags:
        - key: name
          value: pick* # match objects with tag 'name', all values starting with 'pick'
      metadata:
        - key: content-type
          value: image/* # match objects with 'content-type', all values starting with 'image/'
      size:
        lessThan: 10MiB # match objects with size less than this value (e.g. 10MiB)
        greaterThan: 1MiB # match objects with size greater than this value (e.g. 1MiB)
      purge:
          # retainVersions: 0 # (default) delete all versions of the object. This option is the fastest.
          # retainVersions: 5 # keep the latest 5 versions of the object.

    - type: deleted # objects with delete marker as their latest version
      name: NAME # match object names that satisfy the wildcard expression.
      olderThan: 10h # match objects older than this value (e.g. 7d10h31s)
      createdBefore: "2006-01-02T15:04:05.00Z" # match objects created before "date"
      purge:
          # retainVersions: 0 # (default) delete all versions of the object. This option is the fastest.
          # retainVersions: 5 # keep the latest 5 versions of the object including delete markers.

  notify:
    endpoint: https://notify.endpoint # notification endpoint to receive job completion status
    token: Bearer xxxxx # optional authentication token for the notification endpoint

  retry:
    attempts: 10 # number of retries for the job before giving up
    delay: 500ms # least amount of delay between each retry