www.alibabacloud.com/help/zh/doc…html
主要包含三个步骤:
1.建立用户
2.建立权限策略
3.建立RAM角色并受权java
上述步骤皆在阿里云文档能够完成git
mavan导阿里云的sts 及 oss的依赖github
<!-- aliyun sts begin-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.8.3</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-sts</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.4.6</version>
</dependency>
<!-- aliyun sts end-->
复制代码
//调用部分
Map<String,Object> stsMap = getSTS(ALIYUN__AK,ALIYUN__SK,role);
getFileToLocal(stsMap,bucket);
upload(stsMap,bucket);
private Map<String,Object> getSTS(String aliyunAk, String aliyunSk, String aliyunUrn) {
Map<String, Object> jsonMap = new HashMap<>();
jsonMap.put("success", false);
try {
IClientProfile profile = DefaultProfile.getProfile("", aliyunAk, aliyunSk);
// 用 profile 构造 client
DefaultAcsClient client = new DefaultAcsClient(profile);
final AssumeRoleRequest request = new AssumeRoleRequest();
request.setSysMethod(MethodType.POST);
request.setRoleArn(aliyunUrn);
request.setRoleSessionName(ALIYUN_LINGXU_SESSIONNAME);
request.setSysEndpoint(ALIYUN_LINGXU_ENDPOINT);
//request.setDurationSeconds(3600L);
final AssumeRoleResponse response = client.getAcsResponse(request);
jsonMap.put("success", true);
jsonMap.put("Expiration", response.getCredentials().getExpiration());
jsonMap.put("Access Key Id", response.getCredentials().getAccessKeyId());
jsonMap.put("Access Key Secret", response.getCredentials().getAccessKeySecret());
jsonMap.put("Security Token", response.getCredentials().getSecurityToken());
jsonMap.put("RequestId", response.getRequestId());
} catch (ClientException e) {
jsonMap.put("message", e.getErrMsg());
jsonMap.put("RequestId", e.getRequestId());
}
return jsonMap;
}
}
复制代码
//上传
private void upload(Map<String, Object> stsMap, String bucketName) {
String filename = "E:\\road_status.sql";
// Endpoint以杭州为例,其它Region请按实际状况填写。
String endpoint = "http://oss-cn-beijing.aliyuncs.com";
// 阿里云主帐号AccessKey拥有全部API的访问权限,风险很高。强烈建议您建立并使用RAM帐号进行API访问或平常运维,请登陆 https://ram.console.aliyun.com 建立RAM帐号。
String accessKeyId = stsMap.get("Access Key Id").toString();
String accessKeySecret = stsMap.get("Access Key Secret").toString();
String securityToken = stsMap.get("Security Token").toString();
String objectName = "1126ywwtest2";
// 用户拿到STS临时凭证后,经过其中的安全令牌(SecurityToken)和临时访问密钥(AccessKeyId和AccessKeySecret)生成OSSClient。
// 建立OSSClient实例。
// OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret, securityToken);
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret, securityToken);
ossClient.putObject(bucketName, objectName, new File(filename));
ossClient.shutdown();
}
//下载
private void getFileToLocal(Map<String, Object> stsMap, String bucket) {
String filename = "student_data.csv";
// Endpoint以杭州为例,其它Region请按实际状况填写。
String endpoint = "http://oss-cn-beijing.aliyuncs.com";
// 阿里云主帐号AccessKey拥有全部API的访问权限,风险很高。强烈建议您建立并使用RAM帐号进行API访问或平常运维,请登陆 https://ram.console.aliyun.com 建立RAM帐号。
String accessKeyId = stsMap.get("Access Key Id").toString();
String accessKeySecret = stsMap.get("Access Key Secret").toString();
String securityToken = stsMap.get("Security Token").toString();
String bucketName = bucket;
String objectName = filename;
// 用户拿到STS临时凭证后,经过其中的安全令牌(SecurityToken)和临时访问密钥(AccessKeyId和AccessKeySecret)生成OSSClient。
// 建立OSSClient实例。
//OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret, securityToken);
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret, securityToken);
// OSS相关操做。例如上传、下载文件等。
// 上传文件。
// ossClient.putObject(putObjectRequest);
// 下载OSS文件到本地文件。若是指定的本地文件存在会覆盖,不存在则新建。
ossClient.getObject(new GetObjectRequest(bucketName, objectName), new File("F:\\1126.csv"));
// 关闭OSSClient。
ossClient.shutdown();
}
复制代码