存储空间标签
您可以通过存储空间(Bucket)的标签功能, 对Bucket进行分类管理,如ListBucket时只显示带有指定标签的Bucket。
说明
- 只有Bucket的拥有者及授权子账户才能为Bucket设置用户标签,否则返回403 Forbidden错误,错误码:AccessDenied。
- 最多可设置20对Bucket用户标签(Key-Value对)。
- Key最大长度为64字节,不能以
http ://
、https://
、Aliyun
为前缀,且不能为空。 - Value最大长度为128字节,可以为空。
- Key和Value必须为UTF-8编码。
- PutBucketTagging是覆盖语义,即新设置的标签会完全覆盖已有的标签。
设置Bucket标签
以下代码用于设置Bucket标签:
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 创建OSSClient实例。
client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 初始化标签。
tag1 := oss.Tag{
Key: "key1",
Value: "value1",
}
tag2 := oss.Tag{
Key: "key2",
Value: "value2",
}
tagging := oss.Tagging{
Tags: []oss.Tag{tag1, tag2},
}
// 设置存储空间的标签。
err = client.SetBucketTagging("yourBucketName", tagging)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}
获取Bucket标签
以下代码用于获取Bucket标签:
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 创建OSSClient实例。
client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 获取存储空间的标签。
ret, err := client.GetBucketTagging("yourBucketName")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 打印标签个数。
fmt.Println("Tag length: ", len(ret.Tags))
}
列举带指定标签的Bucket
以下代码用于列举带指定标签的Bucket:
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 创建OSSClient实例。
client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 根据TagKey来查找Bucket。
ret, err := client.ListBuckets(oss.TagKey("yourTaggingKey"))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 打印Bucket信息。
for _, bucket := range ret.Buckets{
fmt.Println("bucket:", bucket)
}
// 根据TagKey和TagValue一起来查找Bucket。
// TagValue参数必须和TagKey一起使用,可以不设定。不设定时,不过滤TagValue信息。
res, err := client.ListBuckets(oss.TagKey("yourTaggingKey"), oss.TagValue("yourTaggingValue"))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 打印Bucket信息。
for _, b := range res.Buckets{
fmt.Println("bucket:", b)
}
}
删除Bucket标签
以下代码用于删除Bucket标签:
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 创建OSSClient实例。
client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 删除标签。
err = client.DeleteBucketTagging("yourBucketName")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论