文档

批处理过期

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

可选

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

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