You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们
导航

生成上传凭证

最近更新时间2023.07.28 16:33:56

首次发布时间2021.02.23 10:42:27

由于 AK/SK 信息存放在客户端有泄漏风险,在客户端上传的过程中,通常需要服务端配合生成上传签名或凭证,下发给客户端。您可参照以下方法生成临时 Token 用于客户端上传

背景说明

服务端根据账号的 AK/SK 信息和相关的 policy 生成临时的上传密钥下发给客户端,客户端根据临时密钥和上传参数自行计算签名并发送 OpenAPI 请求。

  • 服务端仅生成临时密钥,具体签名计算过程在客户端进行;
  • OpenAPI 的所有请求参数均可参与签名过程;
  • 根据临时密钥无法反推出账号 AK/SK,泄漏风险低。

初始化

设置 AK/SK 和地域,具体可参考初始化

生成临时上传密钥

package main

import (
	"fmt"
	"github.com/volcengine/volc-sdk-golang/base"
	"github.com/volcengine/volc-sdk-golang/service/imagex"
)

// 获取 STS2 的上传密钥(离线的)
func main() {
	// 默认 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中「上传覆盖」选项
	token, err := instance.GetUploadAuth(serviceIds, imagex.WithUploadOverwrite(false))
	if err != nil {
		fmt.Printf("error %v", err)
	} else {
		fmt.Printf("token %+v", token)
	}
}