OSS支持使用对象标签(Object Tagging)对存储的对象(Object)进行分类,您可以针对同标签的Object设置生命周期规则、访问权限等。

说明 使用对象标签会收取一定的费用,详情请参见 OSS产品定价
对象标签使用一组键值对(Key-Value)标记对象,您可以在上传文件时添加标签,也可以为现有文件添加标签。
  • 单个文件最多可设置10个标签,Key不可重复。
  • 每个Key长度不超过128字符,每个Value长度不超过256字符。
  • Key和Value区分大小写。
  • 标签合法字符集包括大小写字母、数字、空格和以下符号:

    +?=._:/

  • 只有Bucket拥有者和授权用户拥有读写对象标签的权限,该权限?受对象ACL控制。
  • 跨区域复制时,对象标签也会复制到目的端。

使用场景

对象标签不受文件目录限制,您可以批量操作拥有指定标签的对象,例如:
  • 设置针对指定标签的生命周期规则。例如,周期性生成的非长期保存的文件,可以在上传时设置指定的标签,之后通过生命周期规则,将拥有这个标签的文件定期删除。
  • 设置RAM权限,允许访问拥有指定标签的Object。

操作方式

操作方式 说明
控制台 Web应用程序,直观易用
命令行工具ossutil 命令行工具,性能好
Java SDK 丰富、完整的各类语言SDK demo
Python SDK
Go SDK
C++ SDK

使用说明

  • 对象标签涉及的API接口
    • PutObjectTagging:设置对象的标签。若对象已有标签,则覆盖原标签。
    • GetObjectTagging:读取对象的标签。
    • DeleteObjectTagging:删除某个对象关联的标签。
    • PutObject:用户可在上传对象时通过x?oss?tagging请求头指定对象标签。
    • InitiateMultipartUpload:用户可在初始化分片上传时,通过x?oss?tagging请求头指定对象标签。
    • CopyObject:复制对象时可通过x-oss-tagging-directive请求头指定是否复制源对象标签,通过x?oss?tagging请求头指定目标对象标签。
    • GetObject:当用户拥有读取对象标签的权限时,响应头中会带有x?oss?tagging?count标识对象的标签个数。
    • HeadObject:当用户拥有读取对象标签的权限时,响应头中会带有x?oss?tagging?count标识对象的标签个数。
  • 权限说明
    能够进行Tag相关操作的用户、角色、服务,必须具有如下相关权限:
    • GetObjectTagging:获取对象标签的权限。拥有此权限,可以查看到文件的已有标签。
    • PutObjectTagging:设置对象标签的权限。拥有此权限,可以为文件设置标签。
    • DeleteObjectTagging:删除对象标签的权限。拥有此权限,可以删除文件的标签。

对象标签和生命周期管理

在生命周期规则配置中,您可以指定生命周期规则生效的条件。生命周期规则可针对前缀或对象标签生效,您也可以同时指定两者作为条件。
  • Tag条件中,标签的Key和Value必须同时匹配。
  • 同一个规则中,若同时配置?前缀和多个对象标签,则对象需满足前缀且同时匹配规则中所有对象标签,才视为适用于该规则。
示例:
<LifecycleConfiguration>
<Rule>
<ID>r1</ID>
<Prefix>rule1</Prefix>
<Tag><Key>xx</Key><Value>1</Value></Tag>
<Tag><Key>yy</Key><Value>2</Value></Tag>
<Status>Enabled</Status>
<Expiration>
<Days>30</Days>
</Expiration>
</Rule>
<Rule>
<ID>r2</ID>
<Prefix>rule2</Prefix>
<Tag><Key>xx</Key><Value>1</Value></Tag>
<Status>Enabled</Status>
<Transition>
<Days>60</Days>
<StorageClass>Archive</StorageClass>
</Transition>
</Rule>
</LifecycleConfiguration>
以上规则中:
  • 以rule1为前缀且同时拥有标签xx=1和yy=2的对象在30天后被删除。
  • 以rule2为前缀且拥有标签xx=1的对象在60天后被转换为Archive(归档存储)。
说明 更多信息请参见 生命周期规则介绍

对象标签和RAM Policy

您可以授权您的RAM用户拥有管理对象标签权限,也可以授权RAM用户管理拥有指定对象标签的Object的权限。

  • 授予RAM用户管理对象标签的权限
    您可以授予RAM用户操作所有对象标签的权限,也可以授予RAM用户仅可以操作指定对象标签的权限。例如,授予用户A可以设置的对象标签为allow=yes,则该用户仅可以给对象增加allow=yes的标签, RAM策略如下。
    {
      "Version": "1",
      "Statement": [
        {
          "Action": "oss:PutObjectTagging",
          "Effect": "Allow",
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "oss:RequestObjectTag/allow": [
                "yes"
              ]
            }
          }
        }
      ]
    }
    注意 授予RAM用户可以设置指定对象标签后,该用户仅可针对已有对象设置指定标签,无法在上传对象时设置指定标签。
  • 授予RAM用户管理拥有指定标签的对象
    您可以授权RAM用户操作所有拥有指定标签的Object。例如,授予用户A可以访问对象标签为allow=yes的所有Object,RAM策略如下。
    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "oss:GetObject",
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "oss:ExistingObjectTag/allow": [
                "yes"
              ]
            }
          }
        }
      ]
    }