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();
}
複製代碼