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" ] } } } ] }