标签是分类存储到 MinIO 的对象的宝贵方式。每个标签都是一个键值对。您可以在将对象保存到 MinIO 时为其分配标签,也可以将其添加到现有对象。
您可能会认为按桶进行组织是有意义的,有时确实如此,但这只会为您提供桶及其前缀来利用组织数据。是的,对象键名称前缀可以实现数据的排序和分类,但只能在一个维度上。请考虑以下示例
projects/project1/plan.pdf
projects/project2/estimate.pdf
scans/diagram1.jpg
这些键名具有前缀projects/project1/
、projects/project2/
和scans/
。前缀下的所有内容都属于一类;与在文件系统中使用目录一样,一维且不灵活。无法将diagram1.jpg
包含在任何项目中。
对象标签为您提供了更大的功能。您现在可以最多按十个维度进行分类。如果要将图表添加到项目中,则只需适当地对其进行标记即可。
例如,您可以通过项目名称标记与每个项目相关的对象
Project=Project1
Project=Project2
您可以为一个对象添加多个标签,从而可以彻底地对您的数据进行分类和组织,以至于近藤麻理惠都会感到嫉妒。
Project=Project 1
Classification=Confidential
DocType=Estimate
标记不仅可以帮助您对内容进行分类。您可以将标签用于细粒度的访问控制和生命周期管理。如上例所示,您可以使用标签标记包含机密信息的对象。您甚至可以更细化,并根据对象包含的机密信息类型对对象进行标记,例如 Classification=PII
。
标记和对象生命周期管理
MinIO 对象生命周期管理用于创建对象转换和对象过期规则。这在每个桶的基础上进行配置,您可以指定一个过滤器来选择要应用规则的对象子集。
假设您有一个 Web 服务,该服务存储照片并允许用户编辑它们。您将照片标记为
type=raw
or
type=editing
or
type=finished
您可以使用一个生命周期规则,该规则带有一个过滤器,将原始照片转换为更便宜的存储介质的暖层,以及另一个规则,在对象的标签更新为“已完成”时转换对象。

有关生命周期管理规则的更多详细信息,请参阅mc ilm rule add — MinIO 对象存储(适用于 Linux)。
标记和访问控制策略
MinIO 使用 AWS 风格的IAM 和 PBAC 来规范对桶和对象的访问。对象标签支持细粒度的访问控制,用于管理权限。您可以根据对象标签授予条件权限,但您无法创建授予或拒绝用户删除或覆盖对象的权限的策略。条件键可用于限制您要允许的标签键和值。
您可以允许用户仅读取具有特定标签和键值的那些对象。提醒一下,mc admin policy
是创建和管理策略的命令。MinIO 支持针对特定操作的基于标签的策略条件。例如,要将用户限制为仅读取桶中具有deployment: production
标签键和值的那些对象,请在策略的Condition
语句中使用s3:ExistingObjectTag/<key>
。有关更多详细信息,请参阅访问管理 — MinIO 对象存储(适用于 Linux)。
对象标记事件通知
您可以设置 MinIO 事件通知来监视对象标签。这样,当从对象添加或删除对象标签时,您将收到通知。在对象上 PUT 标签或更新现有标签时,将发出通知。这有助于跟踪对象状态。在上例中,了解照片何时从编辑状态变为已完成状态可能很有帮助。
您可以使用标签过滤对象 Lambda触发器 - 当具有某些标签的对象保存到桶时,将调用 Lambda 函数。这为您提供了比针对整个桶编写 Lambda 函数更大的特异性。您可以使用类似于使用 Apache Kafka 和 MinIO 编排复杂工作流 的工作流,并使用标签让某些照片调整为一种尺寸,而其他照片调整为另一种尺寸。
如何标记
每个对象最多可以有十个标签,每个标签都有一个唯一的标签键。请记住,标签键和值区分大小写。
在 MinIO 控制台中管理标签只需浏览到某个桶并选择一个对象,然后在“操作”下选择“编辑标签”即可。单击“保存”后,您将立即看到该标签已添加到指定的对象。

您可以使用MinIO 客户端应用标签。mc tag set
命令在桶或对象上设置一个或多个标签。这非常简单,就像我们在 MinIO 中构建的所有内容一样,可以从命令行配置标签。标签作为以 & 分隔的键值对列表添加。可以选择性地递归应用标签,使用回溯(--rewind)仅在指定时间存在的对象版本上设置标签,或在桶中的所有版本或特定版本上设置标签。
# example mc tag set ALIAS/PATH "TAGS"
mc tag set myminio/mydata "tag1=value1&tag2=value2"
您可以使用MinIO SDK处理标签,以获取、设置和删除对象和桶上的标签。
使用标签处理数据是使用对象存储而不是文件或块存储的直接结果。能够创建丰富的标签集并使用它们进行过滤而无需额外的延迟,证明了 MinIO 的集成元数据架构的价值。MinIO 将元数据与数据一起保存,无需查询其他数据库即可处理标签。
标签是用于对桶和对象进行分类和处理的宝贵工具。按标签过滤比按桶或路径过滤更灵活、更具描述性和更具体。云原生对象存储使应用程序能够按标签过滤,从而大规模处理数据。
MinIO 行业领先的S3 兼容性让您的开发人员可以放心地使用标签等功能,并确信他们构建的应用程序将在 MinIO 上正确且一致地运行。S3 API 是云原生应用程序处理存储的事实标准。任何 AWS S3 替代方案都必须流畅地使用 API,才能在公共/私有云、本地和边缘有效地用作对象存储。
标记,轮到你了!下载 MinIO 并立即开始标记。加入我们的Slack 社区,提出问题并了解如何使用 MinIO 作为云原生应用程序堆栈的基础。