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

现在可以使用 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 批量框架。批量是自动化操作的一种强大方法。自动化是规模化的关键推动因素。客户对批量过期、批量复制 和 批量密钥轮换 的反馈告诉我们,每个人都喜欢自动化 - 而且希望更多地使用它。