更新时间:2024-07-30 GMT+08:00
分享

设置对象标签

功能介绍

用户可以通过本接口设置或更新对象(Object)的标签信息。对象标签使用一组键值对(Key-Value)标记对象。

如果请求中不携带版本号(versionId),需要确保执行者有PutObjectTagging权限。如果请求中携带版本号(versionId),需要确保执行者有PutObjectTagging+PutObjectVersionTagging权限。缺省情况下只有对象的所有者可以执行此操作,也可以通过设置桶策略或用户策略给其他用户。

默认设置Object当前版本的标签信息。可以通过指定versionId参数来设置指定Object版本的标签信息。如果对应版本为删除标记(Delete Marker),则OBS将返回404 Not Found。

  • 并行文件系统不支持给文件设置标签。
  • 每个对象最多能设置10个标签。
  • 标签的键值约束:

    键名(Key)的最大长度为36个字符,不能包含=*<>\,|/,且首尾字符不能为空格,区分大小写,不可重复,不能为空。

    标签的键值(Value)的最大长度为43个字符,不能包含=*<>\,|/,且首尾字符不能为空格,区分大小写,可以为空。

请求消息样式

PUT /objectname?tagging&versionId=versionid HTTP/1.1
Host: bucketname.obs.cn-north-4.myhuaweicloud.com 
Date: date
Authorization: authorization string
Content-MD5: md5
<?xml version="1.0" encoding="UTF-8">
<Tagging>
    <TagSet>
        <Tag>
            <Key>Key</Key>
            <Value>Value</Value>
        </Tag>
     </TagSet> 
</Tagging>

请求消息参数

该请求使用的消息参数如下表1 请求消息参数所示。

表1 请求消息参数

参数名称

描述

是否必选

tagging

标识当前请求是对象标签请求。

类型:String

versionId

对象版本号。标识设置指定版本的对象标签。对应的附加响应消息头为x-obs-version-id。

类型:String

请求消息头

该请求使用的消息头如下表2 请求消息头所示。

表2 请求消息头

消息头名称

描述

是否必选

Content-MD5

按照RFC 1864标准计算出消息体的MD5摘要字符串,即消息体128-bit MD5值经过base64编码后得到的字符串。也支持设置Content-SHA256头域,其值为消息体256-bit SHA256值经过base64编码后得到的字符串,Content-MD5和Content-SHA256二选一。

类型:String

示例:n58IG6hfM7vqI4K0vnWpog==

请求消息元素

在此请求中,需要在请求的消息体中配置对象的标签。标签的配置信息以XML格式上传。具体的配置元素如下表3 对象的标签配置元素所示。

表3 对象的标签配置元素

消息头名称

描述

是否必选

Tagging

TagSet和Tag的根元素

类型:Container

父元素:无

TagSet

Tag的集合元素

类型:Container

父元素:Tagging

Tag

Tag的信息元素

类型:Container

父元素:TagSet

Key

Tag的名字

类型:String

父元素:Tag

Value

Tag的值

类型:String

父元素:Tag

响应消息样式

1
2
3
4
5
HTTP/1.1 status_code
x-obs-request-id: request id
x-obs-id-2: id
Content-Length: length
Date: date

响应消息头

该请求的响应消息使用公共消息头,具体请参考3.3-表 公共响应消息头

响应消息元素

该请求的响应消息中不带有响应元素。

错误响应消息

除了公共的错误码外,此接口还会返回一些其他的错误码。下表中列出本接口的一些常见错误,以及可能原因。如下表4 配置对象标签错误码列表

表4 配置对象标签错误码列表

错误码

描述

HTTP状态码

InvalidTag

配置对象标签时,提供了无效的Tag

400

BadRequest

对象标签个数超过上限

400

MalformedXML

配置对象标签时,提供的xml格式错误

400

EntityTooLarge

请求body体超长

400

AccessDenied

用户无权限设置对象标签

403

MethodNotAllowed

不允许使用该方法(特性开关未开启)

405

请求示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
PUT /objectname?tagging&versionId=G001018455096CE600005306000000DD HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.cn-north-4.myhuaweicloud.com
Accept: */*
Date: Wed, 27 Jun 2018 13:22:50 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:Pf1ZyGvVYg2BzOjokZ/BAeR1mEQ=
Content-MD5: MnAEvkfQIGnBpchOE2U6Og==
Content-Length: 182
<Tagging xmlns="http://obs.cn-north-4.myhuaweicloud.com/doc/2015-06-30/">
  <TagSet>
    <Tag>
      <Key>TagName1</Key>
      <Value>TageSetVaule1</Value>
    </Tag>
  </TagSet>
</Tagging>

响应示例

1
2
3
4
5
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: BF26000001643FEBA09B1ED46932CD07
x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSEZp87iEirC6DggPB5cN49pSvHBWClg
Date: Wed, 27 Jun 2018 13:22:50 GMT

相关文档