创建向量桶策略

最近更新时间:2026-04-01 15:41:32

我的收藏

简介

本文档提供关于对象存储(COS)向量存储桶服务中创建向量桶策略(PutVectorBucketPolicy)API 的 Go SDK 使用说明和示例代码。

功能说明

PutVectorBucketPolicy 接口用于为指定的向量存储桶配置访问策略。通过设置桶策略,您可以精细控制其他用户对向量桶及其内部资源的访问权限。
注意:如果当前向量桶已经配置了策略,调用此接口将会覆盖原有的策略配置。

方法原型

func (s *VectorService) PutVectorBucketPolicy(ctx context.Context, opt *PutVectorBucketPolicyOptions) (*Response, error)

请求参数说明

PutVectorBucketPolicyOptions 结构体字段说明:
参数
描述
类型
是否必填
VectorBucketName
向量桶名称,格式为 <BucketName-APPID>,例如 examplebucket-1250000000
支持小写字母、数字和 -,长度限制为3-63个字符。
string
Policy
策略内容,JSON 格式的策略信息序列化后的字符串。
string

返回结果说明

调用成功后,将返回 (*Response, error) 两个值。本方法无特殊的业务返回字段,当 error == nil 时表示设置成功。
返回值
描述
类型
resp
响应头信息,包含 HTTP 响应的详细对象等。
*cos.Response
err
错误信息。如果请求成功,返回 nil
error
如果请求失败,将返回非 nilerror。向量检索相关的业务错误会封装为 *cos.VectorErrorResponse 结构,您可以通过 cos.IsVectorError() 辅助函数判断并获取详细错误信息。详细的错误处理方式、VectorErrorResponse 结构体说明及服务端错误码列表请参见 异常处理 文档。

使用案例

package main

import (
"context"
"fmt"
"net/http"
"os"

cos "github.com/tencentyun/cos-go-sdk-v5"
)

func main() {
// 生成 Vector 基础 URL,第二个参数控制是否使用 HTTPS,建议为 true
vectorURL, _ := cos.NewVectorURL("ap-guangzhou", true)

// 初始化 Client,设置 VectorURL 及鉴权
client := cos.NewClient(&cos.BaseURL{VectorURL: vectorURL}, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: os.Getenv("COS_VECTORS_SECRET_ID"),
SecretKey: os.Getenv("COS_VECTORS_SECRET_KEY"),
},
})

// 向量桶名称格式必须为:BucketName-APPID
bucketName := "examplebucket-1250000000"

// 构造策略内容(JSON 字符串)
// 以下示例授予子账号 700001234567 对该向量桶的 GetVectorBucket 和 ListVectors 权限
policy := `{
"Version": "2.0",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"qcs": [
"qcs::cam::uin/700000000000:uin/700001234567"
]
},
"Action": [
"name/cos:GetVectorBucket",
"name/cos:ListVectors"
],
"Resource": [
"qcs::cosvector:ap-guangzhou:uid/1250000000:bucket/examplebucket-1250000000/*"
]
}
]
}`

opt := &cos.PutVectorBucketPolicyOptions{
VectorBucketName: bucketName,
Policy: policy,
}

// 调用创建向量桶策略方法
_, err := client.Vector.PutVectorBucketPolicy(context.Background(), opt)
if err != nil {
if vecErr, ok := cos.IsVectorError(err); ok {
fmt.Printf("向量服务错误,错误码: %s, 错误信息: %s, 请求ID: %s\\n",
vecErr.Code, vecErr.Message, vecErr.RequestID)
} else {
fmt.Printf("请求失败: %v\\n", err)
}
return
}

fmt.Println("向量桶策略设置成功")
}