这篇文章主要讲解了“SpringBoot整合aws的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“springBoot整合aws的方法是什么”吧!引入依赖 &
这篇文章主要讲解了“SpringBoot整合aws的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“springBoot整合aws的方法是什么”吧!
<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-sqs</artifactId> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>sns</artifactId> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-cloudfront</artifactId> </dependency>
private S3Client createClient() { AwsCredentialsProvider credentialsProvider = StaticCredentialsProvider.create(AwsBasicCredentials.create(miNIOAccessKey, miniOSecreTKEy)); S3Client s3 = S3Client.builder() .region(Region.CN_NORTHWEST_1) .credentialsProvider(credentialsProvider) .endpointOverride(URI.create(minIoUrl)) .build(); return s3; }
public class MinioOperate { private String minIoAccessKey; private String minIoSecretKey; private String minIoUrl; public MinioOperate() { } public MinioOperate(String minIoAccessKey, String minIoSecretKey, String minIoUrl) { this.minIoAccessKey = minIoAccessKey; this.minIoSecretKey = minIoSecretKey; this.minIoUrl = minIoUrl; }#创建aws的客户端 private S3Client createClient() { AwsCredentialsProvider credentialsProvider = StaticCredentialsProvider.create(AwsBasicCredentials.create(minIoAccessKey, minIoSecretKey)); S3Client s3 = S3Client.builder() .region(Region.CN_NORTHWEST_1) .credentialsProvider(credentialsProvider) .endpointOverride(URI.create(minIoUrl)) .build(); return s3; }// public String generatePresignedUrl(String bucketName, String objectKey, String acl) {// URL url = null;// try {// AWSStaticCredentialsProvider credentialsProvider =// new AWSStaticCredentialsProvider(// new BasicAWSCredentials(minIoAccessKey, minIoSecretKey));//// AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard();// builder.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(minIoUrl, Regions.CN_NORTHWEST_1.getName()));//// AmazonS3 s3Client = builder// .withPathStyleAccessEnabled(true)// .withCredentials(credentialsProvider)// .build();//// // Set the presigned URL to expire after one hour.// Date expiration = new Date();// long expTimeMillis = expiration.getTime();// expTimeMillis += 1000 * 60 * 60 * 4;// expiration.setTime(expTimeMillis);//// // Generate the presigned URL.// GeneratePresignedUrlRequest generatePresignedUrlRequest =// new GeneratePresignedUrlRequest(bucketName, objectKey)// .withMethod(HttpMethod.GET)// .withExpiration(expiration);//// // set acl// if (!StringUtils.isEmpty(acl)) {// generatePresignedUrlRequest.withMethod(HttpMethod.PUT);// generatePresignedUrlRequest.addRequestParameter(Headers.S3_CANNED_ACL, acl);// }//// url = s3Client.generatePresignedUrl(generatePresignedUrlRequest);//// } catch (AmazonServiceException e) {// // The call was transmitted successfully, but Amazon S3 couldn't process// // it, so it returned an error response.// e.printStackTrace();// } catch (SdkClientException e) {// // Amazon S3 couldn't be contacted for a response, or the client// // couldn't parse the response from Amazon S3.// e.printStackTrace();// }//// if (StringUtils.isEmpty(url)) {// return null;// }// return url.toString();// } #获取所有的对象(根据桶和前缀) public List<S3Object> ListObjects(String bucket, String prefix) { S3Client s3Client = this.createClient(); List<S3Object> contents = null; try { ListObjectsV2Request request = ListObjectsV2Request.builder().bucket(bucket).prefix(prefix).build(); ListObjectsV2Response listObjectsV2Response = s3Client.listObjectsV2(request); contents = listObjectsV2Response.contents(); } finally { this.closeClient(s3Client); } return contents; } #上传对象 public void putObject(String bucket, String key, String content) { S3Client s3Client = this.createClient(); try { ByteBuffer byteBuffer = ByteBuffer.wrap(content.getBytes(StandardCharsets.UTF_8)); PutObjectResponse putObjectResponse = s3.putObject(PutObjectRequest.builder().bucket(bucket).key(key) .build(), RequestBody.fromByteBuffer(byteBuffer)); } finally { this.closeClient(s3); } }#上传文件 public void putFile(String filePath, String key, String bucket) { S3Client s3Client = this.createClient(); File tempFile = new File(filePath); try { PutObjectResponse putObjectResponse = s3Client.putObject(PutObjectRequest.builder().bucket(bucket).key(key) .build(), RequestBody.fromFile(tempFile)); } catch (Exception e) { e.printStackTrace(); } finally { this.closeClient(s3Client); } }#获取对象大小 @Override public long getS3ObjectLength(String bucket, String key) { S3Client s3Client = this.createClient(); long size = 0; try { List<S3Object> s3Objects = this.ListObjects(s3, bucket, key); size = s3Objects.get(0).size(); }catch (Exception e){ e.printStackTrace(); }finally { this.closeClient(s3); } return size; } # 获取对象 public String getObject(String bucket, String key) { S3Client s3Client = this.createClient(); try { ResponseBytes<GetObjectResponse> responseResponseBytes = s3.getObject(GetObjectRequest.builder().bucket(bucket).key(key).build(), ResponseTransfORMer.toBytes()); # ResponseTransformer.toBytes()将响应转换为二进制流 return this.decode(responseResponseBytes.asByteBuffer()); } finally { this.closeClient(s3); } }# 获取对象的流 @Override public InputStream getInputStream(String bucket, String key) { S3Client s3Client = this.createClient(); try { ResponseBytes<GetObjectResponse> responseResponseBytes = s3.getObject(GetObjectRequest.builder().bucket(bucket).key(key).build(), ResponseTransformer.toBytes()); return responseResponseBytes.asInputStream(); } finally { this.closeClient(s3); } }#删除对象 public void deleteObject(String bucket, String key) { S3Client s3Client = this.createClient(); try { DeleteObjectRequest deleteObjectRequest = DeleteObjectRequest.builder().bucket(bucket).key(key).build(); DeleteObjectResponse deleteObjectResponse = s3.deleteObject(deleteObjectRequest); } catch (Exception e) { e.printStackTrace(); } finally { this.closeClient(s3); } }#批量删除对象 public void deleteObjects(List<String> buckets, String key) { S3Client s3Client = this.createClient(); try { String prefix = key.substring(0, key.lastIndexOf(File.separator)); for (String bucket : buckets) { ListObjectsRequest listObjectsRequest = ListObjectsRequest.builder().bucket(bucket).prefix(prefix).build(); ListObjectsResponse listObjectsResponse = s3.listObjects(listObjectsRequest); List<S3Object> contents = listObjectsResponse.contents(); for (S3Object content : contents) { String objectKey = content.key(); this.deleteObject(s3, bucket, objectKey); } this.deleteObject(s3, bucket, prefix); } } finally { this.closeClient(s3); } }} public String decode(ByteBuffer byteBuffer) { Charset charset = StandardCharsets.UTF_8; return charset.decode(byteBuffer).toString(); }
其中 minIoAccessKey,minIoSecretKey, minIoUrl;分别对应账号、密码、请求地址。需要对应自己的相关信息。
感谢各位的阅读,以上就是“SpringBoot整合aws的方法是什么”的内容了,经过本文的学习后,相信大家对SpringBoot整合aws的方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!
--结束END--
本文标题: SpringBoot整合aws的方法是什么
本文链接: https://www.lsjlt.com/news/301038.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0