集成框架 -- OSS

时间:2024-04-30 14:48:54
public static void main(String[] args) { String regionId = "cn-hangzhou"; String endpoint = "sts.cn-hangzhou.aliyuncs.com"; String accessKeyId = "accessKeyId"; //用户提供 String accessKeySecret = "accessKeySecret";//用户提供 String roleArn = "acs:ram::roleArn:role/ramoss";//角色提供 String roleSessionName = "roleSessionName";// 自定义 String bucket = "bucket"; // 对应创建buket 前端上传记得开跨域 String policy = "{\n" + " \"Version\": \"1\", \n" + " \"Statement\": [\n" + " {\n" + " \"Action\": [\n" + " \"oss:PutObject\"\n" + " ], \n" + " \"Resource\": [\n" + " \"acs:oss:*:*:sc-sale-servcie/test/*\" \n" + " ], \n" + " \"Effect\": \"Allow\"\n" + " }\n" + " ]\n" + "}"; Long durationSeconds = 3600L; try { DefaultProfile.addEndpoint("", regionId, "Sts", endpoint); IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret); // 构造client。 DefaultAcsClient client = new DefaultAcsClient(profile); final AssumeRoleRequest request = new AssumeRoleRequest(); request.setMethod(MethodType.POST); request.setRoleArn(roleArn); request.setRoleSessionName(roleSessionName); //request.setPolicy(policy); request.setDurationSeconds(durationSeconds); // 如果前端上传这个给前端 把跨域打开 final AssumeRoleResponse response = client.getAcsResponse(request); System.out.println("Expiration: " + response.getCredentials().getExpiration()); System.out.println("Access Key Id: " + response.getCredentials().getAccessKeyId()); System.out.println("Access Key Secret: " + response.getCredentials().getAccessKeySecret()); System.out.println("Security Token: " + response.getCredentials().getSecurityToken()); System.out.println("RequestId: " + response.getRequestId()); // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build("https://oss-cn-hangzhou.aliyuncs.com", response.getCredentials().getAccessKeyId(), response.getCredentials().getAccessKeySecret(), response.getCredentials().getSecurityToken()); PutObjectRequest putObjectRequest = new PutObjectRequest("reformer", "1/reformer.sql", new File("/Users/xushouchun/IdeaProjects/REformer-boot/fromer-start/src/main/resources/database/reformer.sql")); try { // 上传文件。 PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest); System.out.println("putObjectResult = " + JSON.toJSONString(putObjectResult)); // copy CopyObjectRequest copyObjectRequest = new CopyObjectRequest(bucket, "1/reformer.sql", bucket, "1/sql.reformer"); ossClient.copyObject(copyObjectRequest); // 生成下载URL Date expirationDate = new Date(new Date().getTime() + durationSeconds); // URL 的有效期 GeneratePresignedUrlRequest requests = new GeneratePresignedUrlRequest(bucket, "1/reformer.sql"); requests.setExpiration(expirationDate); ossClient.generatePresignedUrl(requests); } catch (OSSException oe) { System.out.println("Caught an OSSException, which means your request made it to OSS, " + "but was rejected with an error response for some reason."); System.out.println("Error Message:" + oe.getErrorMessage()); System.out.println("Error Code:" + oe.getErrorCode()); System.out.println("Request ID:" + oe.getRequestId()); System.out.println("Host ID:" + oe.getHostId()); } finally { if (ossClient != null) { ossClient.shutdown(); } } } catch (ClientException e) { System.out.println("Failed:"); System.out.println("Error code: " + e.getErrCode()); System.out.println("Error message: " + e.getErrMsg()); System.out.println("RequestId: " + e.getRequestId()); } }