由于 AK/SK 信息存放在客户端有泄漏风险,在客户端上传的过程中,通常需要服务端配合生成上传签名或凭证,下发给客户端。您可参照以下方法生成临时 Token 用于客户端上传。
服务端根据账号的 AK/SK 信息和相关的 policy 生成临时的上传密钥下发给客户端,客户端根据临时密钥和上传参数自行计算签名并发送 OpenAPI 请求。
调用接口前,请先完成 Go SDK 的安装及初始化操作。
说明
若您在客户端的上传 SDK 中指定了上传文件的存储路径,那么请在获取服务端上传密钥时,请务必在以下示例中添加 imagex.WithUploadKeyPtn("*")
。
imagex.WithUploadPolicy()设置 sts 中的上传相关策略,具体策略参考策略说明。
package main import ( "fmt" "github.com/volcengine/volc-sdk-golang/base" imagex "github.com/volcengine/volc-sdk-golang/service/imagex/v2" ) // 获取 STS2 的上传密钥(离线的) func main_GetUploadAuth() { // 默认 ImageX 实例为 cn-north-1,如果您想使用其他区域的实例,请使用 imagex.NewInstanceWithRegion(区域名) 显式指定区域 instance := imagex.DefaultInstance instance.SetCredential(base.Credentials{ AccessKeyID: "ak", SecretAccessKey: "sk", }) serviceIds := []string{"service id"} // 欲授权的 Service ID // 默认超时时间为 1小时,如果有需要,请调用 imagex.GetUploadAuthWithExpire() 来设置超时时间 // 您可以使用 imagex.WithUploadKeyPtn("表达式") 来限制上传的存储名格式 // 如: "test/*" 表示上传的文件必须包含 "test/" 前缀 // 使用 imagex.WithUploadOverwrite() 来设置sts中「上传覆盖」选项 // 使用 imagex.WithUploadPolicy() 来设置sts中的上传相关策略 policy := &imagex.UploadPolicy{ ContentTypeBlackList: []string{"image/gif"}, //设置禁止上传的内容类型,此处以 GIF 图片为例 FileSizeUpLimit: "100000", //设置上传文件的大小上限 FileSizeBottomLimit: "500", //设置上传文件的大小下限 } token, err := instance.GetUploadAuth(serviceIds, imagex.WithUploadOverwrite(true), imagex.WithUploadKeyPtn("*"), imagex.WithUploadPolicy(policy)) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("token %+v", token) } }