package com.reyun.bpu.dmp.utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider; import software.amazon.awssdk.core.sync.RequestBody; import software.amazon.awssdk.core.sync.ResponseTransformer; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.GetObjectRequest; import software.amazon.awssdk.services.s3.model.PutObjectRequest; import java.io.IOException; import java.nio.MappedByteBuffer; import java.nio.file.Path; import java.nio.file.Paths; /** * @program: openapi_v1 * * @description: a * * @author: Leo * * @create: 2019-07-02 16:48 **/ public class S3FileUtil { private final Logger logger = LoggerFactory.getLogger(S3FileUtil.class); private String BUCKET = "test"; private String UPLOADPATH = "s3://reyunbpu/fox/liyanbin_1986.log"; /** * * @param buffer 本地文件流 * @param filePath 本地文件路径 * @return */ // public void uploadToS3(String filePath, MappedByteBuffer buffer) { // // try { // // logger.info(String.format("s3 put , bulid S3Client begin ... params:[bucket=%s,fileKey=%s,localFilePath=%s]", BUCKET, UPLOADPATH, filePath)); // // //上传S3文件 // S3Client s3 = S3Client.builder().credentialsProvider(InstanceProfileCredentialsProvider.builder().build()).build(); // // logger.info("s3 build S3Clent OK ! get path begin ... "); // // // 上传文件 // Path path = Paths.get(filePath); // // logger.info("s3 get path OK ! putObject begin ... "); // // //1、写文件:这种方式需要用上传的文件先写到本地,在从本地上传到S3,因此换一种流的方式直接写到S3 // /**s3.putObject(PutObjectRequest.builder().bucket(BUCKET).key(uploadPath).build(), path);*/ // //2、写流到s3 // s3.putObject(PutObjectRequest.builder().bucket(BUCKET).key(UPLOADPATH) // .build(), RequestBody.fromByteBuffer(buffer)); // logger.info("s3 putObject end ... "); // // } catch (Exception e) { // // e.printStackTrace(); // } // } // // /** // * // * @param filePath 本地文件路径及名称(/file/images/test.jpg) // * @param downLoadPath S3存放路径及名称(/yubin/image/aa.jpg) // * @throws IOException // */ // public void loadFromS3(String filePath, String downLoadPath) throws IOException { // //下载S3文件 // try { // S3Client s3 = S3Client.builder() // .credentialsProvider(InstanceProfileCredentialsProvider.builder().build()) // .build(); // // 下载文件 // Path path = Paths.get(filePath); // s3.getObject(GetObjectRequest.builder().bucket(BUCKET).key("/"+downLoadPath).build(), // ResponseTransformer.toFile(path)); // } catch (Exception e) { // e.printStackTrace(); // } // } }