最近更新时间:2023.09.01 17:36:39
首次发布时间:2021.02.23 10:42:29
由于 AK/SK 信息存放在客户端有泄漏风险,在客户端上传的过程中,通常需要服务端配合生成上传签名或凭证,下发给客户端。您可参考以下方法生成临时 Token 用于客户端上传。
服务端根据账号的 AK/SK 信息和相关的 policy 生成临时的上传密钥下发给客户端,客户端根据临时密钥和上传参数自行计算签名并发送 OpenAPI 请求。
设置 AK/SK 和地域,具体可参考初始化。
package com.volcengine.example.imagex; import com.alibaba.fastjson.JSON; import com.volcengine.model.sts2.SecurityToken2; import com.volcengine.service.imagex.IImageXService; import com.volcengine.service.imagex.impl.ImageXServiceImpl; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /** * 获取 STS2 的上传密钥(离线的) */ public class GetUploadSts2 { public static void main(String[] args) { // 默认 ImageX 实例为 `cn-north-1`,如果您想使用其他区域的实例,请使用 `ImageXServiceImpl.GetInstance(区域名)` 显式指定区域 IImageXService service = ImageXServiceImpl.getInstance(); service.setAccessKey("ak"); service.setSecretKey("sk"); List<String> serviceIds = new ArrayList<>(0); serviceIds.add("service id"); // 生成的 STS2 密钥可以用于哪些 ImageX 服务 try { // 默认超时时间为 1小时,如果有需要,请调用 imagex.getUploadSts2WithExpire() 来设置超时时间 // 您可以使用 imagex.getUploadSts2WithKeyPtn("表达式") 来限制上传的存储名格式 // 如: "test/*" 表示上传的文件必须包含 "test/" 前缀 HashMap<String, String> tag = new HashMap<>(); tag.put("UploadOverwrite", "False"); SecurityToken2 sts2 = service.getUploadSts2(serviceIds, tag); System.out.println(JSON.toJSONString(sts2)); } catch (Exception e) { e.printStackTrace(); } } }