Bucket
上傳物件
Bucket 簡單說明及自身經驗
參考資料:官方文件
首先這邊主要的問題是aws-java-sdk
這包太大,這個問題還是要想辦法解決,目前在想辦法。
// 使用 AWS S3 SDK
// https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk
implementation 'com.amazonaws:aws-java-sdk:1.12.211'
Config
@Configuration
public class AWSS3Config {
@Value("${custom.aws.accessKey}")
private String accessKey;
@Value("${custom.aws.secretKey}")
private String secretKey;
@Value("${custom.aws.area}")
private String area;
@Bean
public AmazonS3 createAWSS3Client() {
AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
//set-up the client
AmazonS3 s3client = AmazonS3ClientBuilder
.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.withRegion(Regions.fromName(area))
.build();
return s3client;
}
}
Service
@Service
@RequiredArgsConstructor
public class AWSS3StorageService {
@Value("${custom.aws.bucketName}")
private String bucketName;
@Value("${custom.aws.baseFolder}")
private String baseFolder;
@Value("${custom.aws.area}")
private String area;
private final AmazonS3 s3client;
public String getObjectKey(String key){
return baseFolder + "/" + key;
}
public String getAWSPath(String key){
return "https://" + this.bucketName + ".s3." + area +".amazonaws.com/" + baseFolder + "/" + key;
}
//is bucket exist?
public boolean doesBucketExist(String bucketName) {
return s3client.doesBucketExistV2(bucketName);
}
//create a bucket
public Bucket createBucket(String bucketName) {
return s3client.createBucket(bucketName);
}
//list all buckets
public List<Bucket> listBuckets() {
return s3client.listBuckets();
}
//delete a bucket
public void deleteBucket(String bucketName) {
s3client.deleteBucket(bucketName);
}
//uploading object
public PutObjectResult putObject(String bucketName, String key, File file) {
return s3client.putObject(bucketName, baseFolder + "/" + key, file);
}
public PutObjectResult putObject(String key, File file) {
return s3client.putObject(this.bucketName, baseFolder + "/" + key, file);
}
//uploading object from inputStream
public PutObjectResult putObject(String key, InputStream input, String contentType) {
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType(contentType);
return s3client.putObject(this.bucketName, baseFolder + "/" + key, input, metadata);
}
//listing objects
public ObjectListing listObjects(String bucketName) {
return s3client.listObjects(bucketName);
}
//get an object
public S3Object getObject(String bucketName, String objectKey) {
return s3client.getObject(bucketName, baseFolder + "/" + objectKey);
}
//copying an object
public CopyObjectResult copyObject(String sourceBucketName, String sourceKey,
String destinationBucketName, String destinationKey) {
return s3client.copyObject(sourceBucketName, sourceKey,
destinationBucketName, destinationKey);
}
//deleting an object
public void deleteObject(String bucketName, String objectKey) {
s3client.deleteObject(bucketName, baseFolder + "/" + objectKey);
}
//deleting an object
public void deleteObject(String objectKey) {
deleteObject(this.bucketName, baseFolder + "/" + objectKey);
}
//deleting multiple Objects
public DeleteObjectsResult deleteObjects(DeleteObjectsRequest delObjReq) {
return s3client.deleteObjects(delObjReq);
}
}
Last updated