www.alibabacloud.com/help/zh/doc…
主要包含三个步骤:
1.创建用户
2.创建权限策略
3.创建RAM角色并授权
上述步骤皆在阿里云文档可以完成
mavan导阿里云的sts 及 oss的依赖
<!-- 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(); } 复制代码