进入OSS控制台创建桶,配置需求根据实际修改,地域选择理你近的
去RAM控制台创建角色
创建用户,记得打开OpenAPI调用,记得保存AccessKey和AccessKey Secret
创建导入STS权限
给创建好的用户添加权限
创建角色并授权与用户一样的权限
引入依赖
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-sts</artifactId>
<version>3.1.2</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>sts20150401</artifactId>
<version>1.1.4</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.6.0</version>
</dependency>
阿里云配置类
@Configuration
public class ALiYunOSSConfig {
// accesskeyid
public static final String ACCESSKEYID = "LTAI...";
// accesskeysecret
public static final String ACCESSKEYSECRET = "xwe...";
// 地区
public static final String REGIONID = "cn-shenzhen";
// 角色 Arn
public static final String ROLEARN = "acs:ram...";
@Bean
public IAcsClient client() {
DefaultProfile profile = DefaultProfile.getProfile(REGIONID, ACCESSKEYID, ACCESSKEYSECRET);
return new DefaultAcsClient(profile);
}
}
@Autowired
private IAcsClient client;
public Map<String, Object> aliyunCertificate() {
AssumeRoleRequest request = new AssumeRoleRequest();
request.setRoleArn(ALiYunOSSConfig.ROLEARN);
request.setRoleSessionName(UUIDGenerator.generate());
AssumeRoleResponse response = null;
try {
response = client.getAcsResponse(request);
} catch (ClientException e) {
throw new RuntimeException(e);
}
Map<String, Object> map = new HashMap<>();
map.put("securityToken", response.getCredentials().getSecurityToken());
map.put("expiration", response.getCredentials().getExpiration());
map.put("accessKeySecret", response.getCredentials().getAccessKeySecret());
map.put("accessKeyId", response.getCredentials().getAccessKeyId());
map.put("regionid", ALiYunOSSConfig.REGIONID);
return map;
}
使用临时凭证上传文件
@GetMapping("/temp-upload")
public Result<?> temCertificate() {
String tempSecretId = "STS.NU...";
String tempSecretKey = "B6oGWqX...";
String sessionToken = "CAIS0wJ1q6Ft5B2yfSjIr5bN...";
String regionid = "cn-shenzhen";
String endpoint = "https://oss-" + regionid + ".aliyuncs.com";
String bucket = "桶的名称"
OSS ossClient = new OSSClientBuilder().build(endpoint, tempSecretId, tempSecretKey, sessionToken);
PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, "1.png", new File("C:\\Users\\pc\\Desktop\\1.png"));
ossClient.putObject(putObjectRequest);
return Result.ok();
}