initial commit
All checks were successful
Locusworks Team/aws-s3-sync/pipeline/head This commit looks good
All checks were successful
Locusworks Team/aws-s3-sync/pipeline/head This commit looks good
This commit is contained in:
76
src/main/java/net/locusworks/s3sync/client/S3Client.java
Normal file
76
src/main/java/net/locusworks/s3sync/client/S3Client.java
Normal file
@@ -0,0 +1,76 @@
|
||||
package net.locusworks.s3sync.client;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import com.amazonaws.AmazonServiceException;
|
||||
import com.amazonaws.client.builder.ExecutorFactory;
|
||||
import com.amazonaws.regions.Regions;
|
||||
import com.amazonaws.services.s3.AmazonS3;
|
||||
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
|
||||
import com.amazonaws.services.s3.model.Bucket;
|
||||
import com.amazonaws.services.s3.transfer.MultipleFileUpload;
|
||||
import com.amazonaws.services.s3.transfer.TransferManager;
|
||||
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
|
||||
import com.amazonaws.services.s3.transfer.Upload;
|
||||
import net.locusworks.logger.ApplicationLogger;
|
||||
import net.locusworks.logger.ApplicationLoggerFactory;
|
||||
import net.locusworks.s3sync.conf.ConfigurationManager;
|
||||
|
||||
public class S3Client {
|
||||
|
||||
private ApplicationLogger logger = ApplicationLoggerFactory.getLogger(S3Client.class);
|
||||
|
||||
private AmazonS3 s3Client;
|
||||
private String bucket;
|
||||
private Path synchFolder;
|
||||
|
||||
public S3Client(ConfigurationManager conf) {
|
||||
String region = conf.getRegion();
|
||||
this.s3Client = AmazonS3ClientBuilder.standard().withRegion(Regions.fromName(region)).build();
|
||||
Bucket bucket = s3Client.listBuckets().stream()
|
||||
.filter(b -> b.getName().equals(conf.getBucketName())).findFirst().orElse(null);
|
||||
|
||||
if (bucket == null) {
|
||||
logger.error("Unable to find bucket with name: %s%nExiting", conf.getBucketName());
|
||||
System.exit(-1);
|
||||
}
|
||||
logger.info("Found Bucket: %s", bucket);
|
||||
this.bucket = conf.getBucketName();
|
||||
this.synchFolder = conf.getSyncFolder();
|
||||
}
|
||||
|
||||
public void uploadFile(Path file) {
|
||||
logger.info("Uploading file: %s", file);
|
||||
TransferManager xferMgr = TransferManagerBuilder.standard().withS3Client(s3Client).build();
|
||||
try {
|
||||
Upload xfer = xferMgr.upload(bucket, file.getFileName().toString(), file.toFile());
|
||||
// loop with Transfer.isDone()
|
||||
XferMgrProgress.showTransferProgress(xfer);
|
||||
// or block with Transfer.waitForCompletion()
|
||||
XferMgrProgress.waitForCompletion(xfer);
|
||||
logger.info("Done uploading %s", file);
|
||||
} catch (AmazonServiceException e) {
|
||||
logger.error(e.getErrorMessage());
|
||||
System.exit(1);
|
||||
}
|
||||
xferMgr.shutdownNow();
|
||||
}
|
||||
|
||||
public void syncFolder() {
|
||||
|
||||
|
||||
TransferManager xferMgr = TransferManagerBuilder.standard()
|
||||
.withS3Client(s3Client)
|
||||
.build();
|
||||
|
||||
MultipleFileUpload xfer = xferMgr.uploadDirectory(bucket, null, synchFolder.toFile(), true);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user