You need to enable JavaScript to run this app.
导航

生成上传凭证

最近更新时间2024.04.23 19:11:41

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

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

背景说明

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

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

前提条件

调用接口前,请先完成 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)
        }
}