华为云对象存储OBS设置桶标签(Java SDK)_云淘科技

功能介绍

为桶添加标签后,该桶上所有请求产生的计费话单里都会带上这些标签,从而可以针对话单报表做分类筛选,进行更详细的成本分析。例如:某个应用程序在运行过程会往桶里上传数据,我们可以用应用名称作为标签,设置到被使用的桶上。在分析话单时,就可以通过应用名的标签来分析此应用的成本。

调用设置桶标签接口,您可为指定桶添加标签。

开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。

接口约束

每个桶最多能设置10个标签。
您必须是桶拥有者或拥有设置桶标签的权限,才能设置桶标签。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:PutBucketTagging权限,如果使用桶策略则需授予PutBucketTagging权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。
OBS支持的region以及region与endPoint的对应关系,详细信息请参见地区与终端节点。

方法定义

obsClient.setBucketTagging(final SetBucketTaggingRequest request)

请求参数说明

表1 请求参数列表

参数名称

参数类型

是否必选

描述

request

SetBucketTaggingRequest

必选

参数解释

设置桶标签请求参数,详见SetBucketTaggingRequest。

表2 SetBucketTaggingRequest

参数名称

参数类型

是否必选

描述

bucketName

String

必选

参数解释

桶名。

约束限制:

桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。
桶命名规则如下:

3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。
禁止使用IP地址。
禁止以“-”或“.”开头及结尾。
禁止两个“.”相邻(如:“my..bucket”)。
禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。

同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。

默认取值:

bucketTagInfo

BucketTagInfo

必选

参数解释

桶标签信息,详见BucketTagInfo。

表3 BucketTagInfo

参数名称

参数类型

是否必选

描述

tagSet

TagSet

必选

参数解释

标签集,详见TagSet。

表4 TagSet

参数名称

参数类型

是否必选

描述

tags

List

必选

参数解释

标签列表,标签信息详见Tag。

表5 Tag

参数名称

参数类型

是否必选

描述

key

String

必选

参数解释:

标签的键。

约束限制:

同一个桶标签的键不能重复。
可以自定义,也可以选择预先在标签管理服务(TMS)创建好的标签。
长度范围为1-36个字符。
支持Unicode。
不能以空格开头或结尾,不能包含字符“,”、“*”、“|”、“/”、“”、“=”、“\”以及ASCII码0x00–0x1F这些控制字符。
区分大小写。

默认取值:

value

String

必选

参数解释:

标签的值。

约束限制:

标签的值可以重复,并且可以为空。
长度范围为0-43个字符。
支持Unicode。
不能包含字符“,”、“*”、“|”、“/”、“”、“=”、“\”以及ASCII码0x00–0x1F这些控制字符。
区分大小写。

默认取值:

返回结果说明

表6 返回结果HeaderResponse(SDK公共响应结果)各项属性说明

参数名称

参数类型

描述

statusCode

int

参数解释:

HTTP状态码。

取值范围:

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

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

默认取值:

responseHeaders

Map

参数解释:

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

默认取值:

代码示例

本示例用于通过ObsClient.setBucketTagging设置examplebucket桶的桶标签。代码展示如下:

 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
import com.obs.services.ObsClient;
import com.obs.services.exception.ObsException;
import com.obs.services.model.BucketTagInfo;
public class SetBucketTagging001
{
    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.cn-north-4.myhuaweicloud.com";
        // 您可以通过环境变量获取endPoint,也可以使用其他外部引入方式传入。
        //String endPoint = System.getenv("ENDPOINT");
        
        // 创建ObsClient实例
        // 使用永久AK/SK初始化客户端
        ObsClient obsClient = new ObsClient(ak, sk,endPoint);
        // 使用临时AK/SK和SecurityToken初始化客户端
        // ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint);

        try {
            // 设置桶标签
            BucketTagInfo bucketTagInfo = new BucketTagInfo();
            BucketTagInfo.TagSet tagSet = new BucketTagInfo.TagSet();
            tagSet.addTag("tag1", "value1");
            tagSet.addTag("tag2", "value2");
            bucketTagInfo.setTagSet(tagSet);
            obsClient.setBucketTagging("examplebucket", bucketTagInfo);
            System.out.println("setBucketTagging successfully");
        } catch (ObsException e) {
            System.out.println("setBucketTagging 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("setBucketTagging failed");
            // 其他异常信息打印
            e.printStackTrace();
        }
    }
}

相关链接

关于设置桶标签的API说明,请参见设置桶标签。
更多关于设置桶标签的示例代码,请参见Github示例。
设置桶标签过程中返回的错误码含义、问题原因及处理措施可参考OBS错误码。
标签相关常见问题请参见标签相关常见问题。

父主题: 桶标签管理(Java SDK)

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家