设置对象标签
- PutObjectTagging
PutObjectTagging操作可以为对象设置标签,标签是一个键值对,每个对象最多可以有10个标签。bucket的拥有者默认拥有给bucket中的对象设置标签的权限,并且可以将权限授予其他用户。
每次执行PutObjectTagging操作会覆盖对象已有的标签信息。每个对象最多可以设置10个标签,标签Key和Value区分大小写,并且Key不可重复。每个标签的Key长度不超过128字节,Value长度不超过256字节。通过HTTP header的方式设置标签且标签中包含任意字符时,需要对标签的Key和Value做URL编码。设置对象标签信息不回更新对象的最新更改时间。
代码示例:
// 添加对象标签
func PutObjectTagging(svc *s3.S3) {
putObjectTaggingInput := &s3.PutObjectTaggingInput{
Bucket: aws.String("exampleBucket"),
Key: aws.String("exampleKey"),
Tagging: &s3.Tagging{
TagSet: []*s3.Tag{
{
Key: aws.String("Key1"),
Value: aws.String("Value1"),
},
{
Key: aws.String("Key2"),
Value: aws.String("Value2"),
},
},
},
}
putObjectTaggingOutput, err := svc.PutObjectTagging(putObjectTaggingInput)
if err != nil {
fmt.Printf("fail to put object tagging. %v\n", err)
return
}
fmt.Println(putObjectTaggingOutput)
}
PutObjectTaggingInput可设置的参数如下:
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | *string | 执行本操作的桶名称。 | 是 |
Key | *string | 设置标签信息的对象的key。 | 是 |
Tagging | *Tagging | 设置的标签信息,包含了一个Tag结构体的数组,每个Tag以Key-Value的形式说明了标签的内容。 | 是 |
VersionId | *string | 设置标签信息的对象的版本Id | 否 |
- PutObjectTaggingRequest
PutObjectTaggingRequest操作首先生成一个"request.Request"对象,该对象是一个执行PutObjectTaggingRequest操作的请求。通过调用Request对象的Send方法来设置对象的标签信息。该方法可以生成定制化的请求,例如自定义请求头部请求超时重试设置。
代码示例:
func PutObjectTaggingRequest(svc *s3.S3) {
putObjectTaggingInput := &s3.PutObjectTaggingInput{
Bucket: aws.String("exampleBucket"),
Key: aws.String("exampleKey"),
Tagging: &s3.Tagging{
TagSet: []*s3.Tag{
{
Key: aws.String("Key1"),
Value: aws.String("Value1"),
},
{
Key: aws.String("Key2"),
Value: aws.String("Value2"),
},
},
},
}
req, resp := svc.PutObjectTaggingRequest(putObjectTaggingInput)
err := req.Send()
if err != nil {
fmt.Printf("fail to put object tagging. %v\n", err)
} else {
fmt.Println(resp)
}
}
响应结果:
HTTP状态 | 响应码 | 描述 |
---|---|---|
200 | Success | 操作成功。 |
400 | InvalidBucketName | 请求中设置桶的名字不合法。 |
400 | InvalidObjectName | 请求中设置对象的名字不合法 |
400 | InvalidTag | 设置标签数量太多或者标签内容长度超出限制。 |
400 | MalformedXML | 设置标签的内容非法,例如key存在重复的情况。 |
403 | AccessDenied | 用户没有权限执行操作。 |
404 | NoSuchBucket | 请求参数中设置的桶不存在。 |
404 | NoSuchKey | 请求参数中设置的对象key或者版本Id不存在。 |