MinIO 批量框架添加了对过期时间的支持

MinIO Batch Framework Adds Support for Expiry

现在可以使用 MinIO 批量框架执行 S3 删除操作,只需一个 API 请求即可删除大量对象。MinIO 批量框架让您能够快速轻松地执行重复性或批量操作,例如 批量复制批量密钥轮换,跨越您的 MinIO 部署。MinIO 批量框架处理所有手动工作,包括管理重试和报告进度。 

批量过期提供基于指定条件的高性能过期和永久删除。这是一个分布式服务器端删除操作,可以并行执行批量删除。 

MinIO 批量框架消除了对用户干预的需求,可以安排在非工作时间或系统利用率较低时运行。 对象 Lambda 通知 在批量处理完成后发出。批量作业使用 YAML 定义,然后定期运行。  

添加批量删除功能的理由

信息生命周期管理 (ILM) 旨在管理对象,使其在生命周期内得到有效存储。这包括根据一组过滤器(条件)过期和分层对象。对于过期,ILM 在与 3 个月到 1 年范围内的过期计划一起使用时最有效。但是,当过期时间非常短时会发生反模式。 

ILM 在作为后台进程运行的扫描程序上运行。扫描程序会根据负载自动向上和向下调整速度,因此不会干扰典型的 S3 API 调用,例如 PUT 和 GET。扫描程序针对时间敏感的操作(如响应应用程序)进行了优化。 

批量过期执行并行删除操作,确保操作快速高效地完成。使用条件格式选择对象,以根据对象和元数据标签进行过滤。    

批量过期的入门

下载并安装 MinIO。记录访问密钥和私钥。 

下载并安装 MinIO 客户端。可选,创建 别名 以简化对 MinIO 服务器的访问。 

创建一个桶并启用版本控制。 

mc mb myminio/test
mc version enable myminio/test

将一些文件复制到刚创建的桶中。文件的内容无关紧要,我们只是学习如何使用批量删除。

创建并定义批量删除(将“test”替换为您的桶的名称)

mc batch generate myminio/test expire

这将创建一个 expiry.yaml 文件,您可以编辑该文件以配置复制作业。

此文件(如下所示)包含桶名称、前缀名称、过滤器/标志、通知和重试规则配置。您可以设置规则以根据类型、名称(包括通配符)、年龄、大小等更多条件过期对象,请参阅下面的输出。

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

如您所见,文件中列出的参数支持各种用例。将 YAML 从您的终端复制到文本编辑器并进行自定义,然后在下一步中启动它。每个规则定义了过期条件和清除操作。注释使文件易于理解。

例如,要删除桶中所有超过一周的对象

...
rules:
    - type: object  # objects with zero ore more older versions
      name: NAME # match object names that satisfy the wildcard expression.
      olderThan: 7d # match objects older than this value
...       	

请注意,此教程未配置通知端点。配置后,批量过期完成后,通知将可在此端点获取。

要过期所有以字母 C 开头的对象

...
rules:
    - type: object  # objects with zero ore more older versions
      name: C*.* # match object names that satisfy the wildcard expression.
      olderThan: 7d # match objects older than this value
...       	

您可以同时创建和运行多个批量作业;没有预定义的限制。

使用以下命令启动批量过期

mc batch start myminio/ ./expiry.yaml
Successfully started 'expire' job `TEu3LMDvdAhAFZKQ3QtSHr:-1` on '2023-12-28 22:50:05.540096697 +0000 UTC'

您将看到一条消息,指示过期作业已成功启动以及时间。

您也可以检查批量作业的状态(我运行的作业很快完成了)

mc batch status myminio/ TEu3LMDvdAhAFZKQ3QtSHr:-1
mc: Unable to find an active job, attempting to list from previously run jobs
✔ ✔ ✔
JobType:        expire
Objects:        0
FailedObjects:  0
CurrObjName:

批量过期完成后,您可以列出桶内容以验证操作是否成功。 

mc ls myminio/test

有关更多信息,请参阅 文档

MinIO 批量过期 

我们继续使用批量过期构建 MinIO 批量框架。批量是自动化操作的一种强大方法。自动化是规模化的关键推动因素。客户对批量过期、批量复制批量密钥轮换 的反馈告诉我们,每个人都喜欢自动化 - 而且希望更多地使用它。

下载 MinIO 并亲身体验 MinIO 批量框架。有任何问题?请在 Slack 上联系我们。