object-tagging(对象标签)

OSS支持以标签的方式对存储的对象(Object)进行分类,方便您管理拥有相同标签的Object,例如通过生命周期规则为相同标签的Object指定过期天数或转换其存储类型。object-tagging命令用于添加、修改、获取和删除对象标签。

注意事项

  • 要添加或修改Object标签,您必须具有oss:PutObjectTagging权限;要获取Object标签信息,您必须具有oss:GetObjectTagging权限;要删除Object标签信息,您必须具有oss:DeleteObjectTagging权限。具体操作,请参见为RAM用户授权自定义的权限策略

  • 从ossutil 1.6.16版本开始,命令行中Binary名称支持直接使用ossutil,您无需根据系统刷新Binary名称。如果您的ossutil版本低于1.6.16,则需要根据系统刷新Binary名称。更多信息,请参见命令行工具ossutil命令参考

  • 关于对象标签的更多信息,请参见对象标签

  • 当您在OSS ON云盒中使用该命令时:

    1. 将配置文件中的Endpoint替换为云盒Endpoint。更多信息,请参见云盒Endpoint

    2. 在本文已有示例的基础上添加--sign-version--region以及--cloudbox-id选项。关于这三个选项的具体用法,请参见通用选项

命令格式

ossutil object-tagging oss://bucketname[/prefix][key#value]
--method <value>
[--encoding-type <value>]
[-r,--recursive]
[--payer <value>]
[--version-id <value>] 

参数及选项说明如下:

配置项

说明

bucketname

Bucket名称。

prefix

Bucket下的资源,例如目录、文件等。

key

对象标签使用一组键值对(Key-Value)标记对象。单个文件可设置最多10个标签,Key不可重复。设置Key时,需满足以下条件:

  • 每个Key长度不超过128字符,且区分大小写。

  • Key的合法字符集包括大小写字母、数字、空格和以下符号:

    +=._:/

value

设置Value时,需满足以下条件:

  • 每个Value长度不超过256字符,且区分大小写。

  • Value的合法字符集包括大小写字母、数字、空格和以下符号:

    +=._:/

--method

请求类型。取值如下:

  • put:添加或修改对象标签。

  • get:获取对象标签。

  • delete:删除对象标签。

--encoding-type

oss://bucket_name之后的prefix进行编码,取值为url。如果不指定该选项,则表示prefix未经过编码。

-r,--recursive

如果指定该选项时,ossutil将为Bucket下所有符合prefix条件的Object设置标签。如果不指定该选项,则ossutil只为指定Object设置标签。

--version-id

Object的指定版本。仅适用于已开启或暂停版本控制状态Bucket下的Object。

--payer

请求的支付方式。如果希望访问指定路径下的资源产生的流量、请求次数等费用由请求者支付,请将此选项的值设置为requester

添加或修改Object标签

只有Bucket拥有者以及被授予PutObjectTagging的RAM用户拥有设置或修改Object标签的权限。

添加或修改Object标签示例如下:

重要

若Object未设置标签,执行如下操作将为Object添加指定的标签;若Object已配置标签,执行如下操作将覆盖Object原有标签。

  • 为目标存储空间examplebucket下的exampleobject.txt文件设置key为tagkey,value为tagvalue的标签信息。

    ossutil object-tagging --method put oss://examplebucket/exampleobject.txt tagkey#tagvalue
  • 为目标存储空间examplebucket下的exampleobject.png文件设置两组标签信息。其中一组标签信息为tagkey1#tagvalue1,另一组标签信息为tagkey2#tagvalue2。

    ossutil object-tagging --method put oss://examplebucket/exampleobject.txt tagkey1#tagvalue1 tagkey2#tagvalue2
  • 为目标存储空间examplebucket下与前缀test匹配的多个文件设置三组标签信息,标签信息分别为tagkey3#tagvalue3、tagkey4#tagvalue4和tagkey5#tagvalue5。

    ossutil object-tagging --method put oss://examplebucket/test -r tagkey3#tagvalue3 tagkey4#tagvalue4 tagkey5#tagvalue5
  • 为已开启版本控制的存储空间examplebucket下的exampleobject.txt的指定版本设置key为tagkey6,value为tagvalue6的标签信息。

    ossutil object-tagging --method put oss://examplebucket/exampleobject.txt tagkey6#tagvalue6 --version-id CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3****

    关于获取Object所有版本的具体操作,请参见ls(列举账号级别下的资源)

  • 以上示例操作成功后,返回结果中将包含设置标签信息所用时长,示例如下:

    0.106852(s) elapsed

获取Object标签信息

只有Bucket拥有者以及被授予GetObjectTagging的RAM用户拥有获取Object标签信息的权限。

获取Object标签信息的示例如下:

  • 获取单个Object的标签信息

    获取目标存储空间examplebucket下exampleobject.txt的标签信息。

    ossutil object-tagging --method get oss://examplebucket/exampleobject.txt

    以下输出结果表明已成功获取exampleobject.txt的标签信息,标签信息的key为tagkey,value为tagvalue。

    object index   tag index      tag key   tag value       object
    ---------------------------------------------------------------------------
    1              0              "tagkey"  "tagvalue"      oss://examplebucket/exampleobject.txt
    
    0.068156(s) elapsed
  • 获取多个Object的标签信息

    获取目标存储空间examplebucket下与前缀test匹配的文件的标签信息。

    ossutil object-tagging --method get oss://examplebucket/test -r

    以下输出结果表明已成功获取与前缀test匹配的所有文件的标签信息,分别为tagkey3#tagvalue3、tagkey4#tagvalue4和tagkey5#tagvalue5。

    object index   tag index      tag key   tag value       object
    ---------------------------------------------------------------------------
    1              0              "tagkey3" "tagvalue3"     oss://examplebucket/test
    1              1              "tagkey4" "tagvalue4"     oss://examplebucket/test
    1              2              "tagkey5" "tagvalue5"     oss://examplebucket/test
    
    0.093040(s) elapsed

删除Object标签信息

只有Bucket拥有者以及被授予DeletetObjectTagging的RAM用户拥有删除Object标签信息的权限。

删除Object标签信息的示例如下:

  • 删除单个Object的标签信息

    删除目标存储空间examplebucket下exampleobject.txt的标签信息。

    ossutil object-tagging --method delete oss://examplebucket/exampleobject.txt
  • 删除多个Object的标签信息

    删除目标存储空间examplebucket下与前缀test匹配的所有文件的标签信息。

    ossutil object-tagging --method delete oss://examplebucket/test -r
  • 以上示例操作成功后,返回结果中将包含删除标签信息所用时长,示例如下:

    0.148970(s) elapsed

通用选项

当您需要通过命令行工具ossutil切换至另一个地域的Bucket时,可以通过-e选项指定该Bucket所属的Endpoint。当您需要通过命令行工具ossutil切换至另一个阿里云账号下的Bucket时,可以通过-i选项指定该账号的AccessKey ID,并通过-k选项指定该账号的AccessKey Secret。

例如您需要为另一个阿里云账号下,华东2(上海)地域下目标存储空间testbucket下的exampletest.png文件设置key为tagkey7、value为tagvalue7的标签信息,命令如下:

ossutil object-tagging --method put oss://testbucket/exampletest.png tagkey7#tagvalue7 -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA****  -k 67DLVBkH7EamOjy2W5RVAHUY9H****

关于此命令的其他通用选项的更多信息,请参见通用选项