千家信息网

SpringBoot整合aws的方法是什么

发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要讲解了"SpringBoot整合aws的方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SpringBoot整合aws的方法是什么
千家信息网最后更新 2025年11月13日SpringBoot整合aws的方法是什么

这篇文章主要讲解了"SpringBoot整合aws的方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SpringBoot整合aws的方法是什么"吧!

引入依赖

             software.amazon.awssdk           s3                                  com.amazonaws           aws-java-sdk-s3                                com.amazonaws           aws-java-sdk-sqs                                software.amazon.awssdk           sns                                com.amazonaws           aws-java-sdk-cloudfront       

创建client

 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;   }

aws工具类

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 ListObjects(String bucket, String prefix) {   S3Client s3Client = this.createClient();    List 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 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 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 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 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 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的方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0