initial commit
All checks were successful
Locusworks Team/aws-s3-sync/pipeline/head This commit looks good

This commit is contained in:
2020-11-01 23:24:20 -06:00
commit b2a8a83988
11 changed files with 949 additions and 0 deletions

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