更新时间:2026-07-01 GMT+08:00

获取对象标签(Java SDK)

功能介绍

可通过本接口获取对象的标签信息。了解更多对象标签相关信息,请参考对象标签

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

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

开发过程中,您有任何问题可以在github上提交issue

接口约束

  • 对象标签功能目前在公测阶段,免费使用;公测结束后,将收取费用。
  • 用户读写对象标签必须拥有对应标签操作权限,当前可通过设置桶策略授权给其他用户。默认情况下只有对象的所有者可以执行此操作。
  • 暂不支持CRR,即跨区域复制时,源对象标签不会被复制到目标桶。
  • 并行文件系统不支持给文件添加标签。
  • 每个对象最多能设置10个标签。
  • 标签的键值约束:

    键名(Key)区分大小写且必须唯一,不能为空且不能超过128个字符,不允许使用,/|<>=*\字符。

    键值(Value)区分大小写且可以为空,不能超过255个字符,不允许使用,/|<>=*\字符。

方法定义

ObjectTagResult getObjectTagging(ObjectTaggingRequest request)

请求参数说明

表1 请求参数列表

参数名称

参数类型

是否必选

描述

request

ObjectTaggingRequest

必选

参数解释

要获取标签的对象属性相关参数,详见ObjectTaggingRequest

返回结果说明

表2 返回结果如下

方法名称

返回值类型

说明

getObjectTagging(ObjectTaggingRequest request)

ObjectTagResult

用于获取对象标签。

表3 ObjectTagResult

参数名称

参数类型

描述

tagSet

TagSet

参数解释:

对象标签,用以标识哪些对象可以匹配到当前这条规则。详见TagSet

默认取值:

statusCode

int

参数解释:

HTTP状态码。

取值范围:

状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。

完整的状态码列表请参见状态码

默认取值:

responseHeaders

Map<String, Object>

参数解释:

HTTP响应消息头列表,由多个元组构成。元组中String代表响应消息头的名称,Object代表响应消息头的值。

默认取值:

表4 TagSet

参数名称

参数类型

描述

tags

List<Tag>

参数解释:

对象标签列表,详见Tag

表5 Tag

参数名称

参数类型

描述

key

String

参数解释:

标签的名字。

默认取值:

value

String

参数解释:

标签的值。

默认取值:

示例代码

本示例用于获取examplebucketname桶中exampleObjectKey对象的对象标签。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import com.obs.services.ObsClient;
import com.obs.services.exception.ObsException;
import com.obs.services.model.BucketTagInfo.TagSet;
import com.obs.services.model.ObjectTagResult;
import com.obs.services.model.ObjectTaggingRequest;
import java.util.List;
public class GetObjectTagging001 {
    public static void main(String[] args) {
        // 您可以通过环境变量获取访问密钥AK/SK,也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。
        // 您可以登录访问管理控制台获取访问密钥AK/SK
        String ak = System.getenv("ACCESS_KEY_ID");
        String sk = System.getenv("SECRET_ACCESS_KEY_ID");
        // 【可选】如果使用临时AK/SK和SecurityToken访问OBS,同样建议您尽量避免使用硬编码,以降低信息泄露风险。
        // 您可以通过环境变量获取访问密钥AK/SK/SecurityToken,也可以使用其他外部引入方式传入。
        String securityToken = System.getenv("SECURITY_TOKEN");
        // endpoint填写桶所在的endpoint, 此处以中国-香港为例,其他地区请按实际情况填写。
        String endPoint = "https://obs.ap-southeast-1.myhuaweicloud.com";
        // 您可以通过环境变量获取endPoint,也可以使用其他外部引入方式传入。
        //String endPoint = System.getenv("ENDPOINT")
        // 创建ObsClient实例
        try (ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint)) {
            // 获取对象标签
            String bucketName = "examplebucketname";
            String objectKey = "exampleObjectKey";
            String objectVersionId = "";
            ObjectTaggingRequest objectTaggingRequest =
                    new ObjectTaggingRequest(bucketName, objectKey, objectVersionId, null);
            ObjectTagResult objectTagResult = obsClient.getObjectTagging(objectTaggingRequest);
            System.out.println("tags of " + objectKey + ":");
            List<TagSet.Tag> tags = objectTagResult.getTagSet().getTags();
            for (TagSet.Tag tag : tags) {
                System.out.println("tag key:" + tag.getKey() + ", tag value:" + tag.getValue());
            }
            System.out.println("GetObjectTagging successfully");
        } catch (ObsException e) {
            System.out.println("GetObjectTagging failed");
            // 请求失败,打印http状态码
            System.out.println("HTTP Code:" + e.getResponseCode());
            // 请求失败,打印服务端错误码
            System.out.println("Error Code:" + e.getErrorCode());
            // 请求失败,打印详细错误信息
            System.out.println("Error Message:" + e.getErrorMessage());
            // 请求失败,打印请求id
            System.out.println("Request ID:" + e.getErrorRequestId());
            System.out.println("Host ID:" + e.getErrorHostId());
            e.printStackTrace();
        } catch (Exception e) {
            System.out.println("GetObjectTagging failed");
            // 其他异常信息打印
            e.printStackTrace();
        }
    }
}