One of the reasons I joined my employer was that I would get some experience with AWS and S3. But so far the ride is a roller coaster ride and I have been working on something totally different and first we created our own S3 like system and then uploading to S3 and AWS was handled by another rockstar friend in the team :). Now it almost seems like I wont get a chance to work on it so I was like let me anyway write a simple program, so I signed up for AWS and tried this. Its a simple thing and took me only 2-3 hours but its worth spending it because for past 3 weeks I am working on cleaning technical debt accumulated over years and that doesnt give that much joy. Doing this give me some joy.
On that note one of the team mate shared this today to me
http://www
public class S3StorageService {
private static final AppLogger logger = AppLogger.getLogger(S3StorageService.class);
private String bucketName;
private String accessId;
private String secretKey;
private String tempFolder;
@Override
public String uploadObject(String guid, InputStream in) {
File file = getTempStoragePath(guid);
try {
saveToTempFile(in, file);
String key = getObjectKey(guid);
AmazonS3 s3Client = getS3Client();
s3Client.putObject(new PutObjectRequest(bucketName, key, file));
return key;
} finally {
FileUtils.deleteQuietly(file);
}
}
private File getTempStoragePath(String guid) {
File baseDir = new File(tempFolder);
File hashedPath = new File(new File(new File(baseDir, guid.substring(0, 2)), guid.substring(2, 4)),
guid.substring(4, 6));
hashedPath.mkdirs();
return new File(hashedPath, guid);
}
@Override
public void deleteObject(String guid) {
String key = getObjectKey(guid);
AmazonS3 s3Client = getS3Client();
s3Client.deleteObject(new DeleteObjectRequest(bucketName, key));
}
@Override
public void downloadObject(String guid, OutputStream out) throws StorageServiceException {
String key = getObjectKey(guid);
AmazonS3 s3Client = getS3Client();
S3Object object = s3Client.getObject(new GetObjectRequest(bucketName, key));
InputStream objectData = null;
try {
objectData = object.getObjectContent();
IOUtils.copy(objectData, out);
} catch (IOException e) {
throw new StorageServiceException(e);
} finally {
StreamUtils.closeQuietly(objectData);
}
}
private String getObjectKey(String guid) {
return "Files/" + guid;
}
private AmazonS3 getS3Client() {
AWSCredentials awsCredentials = new BasicAWSCredentials(accessId, secretKey);
AmazonS3 s3Client = new AmazonS3Client(awsCredentials);
return s3Client;
}
}
On that note one of the team mate shared this today to me
http://www .businessi nsider.com /syndromes -drive-cod ers-crazy- 2014-3
public class S3StorageService {
private static final AppLogger logger = AppLogger.getLogger(S3StorageService.class);
private String bucketName;
private String accessId;
private String secretKey;
private String tempFolder;
@Override
public String uploadObject(String guid, InputStream in) {
File file = getTempStoragePath(guid);
try {
saveToTempFile(in, file);
String key = getObjectKey(guid);
AmazonS3 s3Client = getS3Client();
s3Client.putObject(new PutObjectRequest(bucketName, key, file));
return key;
} finally {
FileUtils.deleteQuietly(file);
}
}
private File getTempStoragePath(String guid) {
File baseDir = new File(tempFolder);
File hashedPath = new File(new File(new File(baseDir, guid.substring(0, 2)), guid.substring(2, 4)),
guid.substring(4, 6));
hashedPath.mkdirs();
return new File(hashedPath, guid);
}
@Override
public void deleteObject(String guid) {
String key = getObjectKey(guid);
AmazonS3 s3Client = getS3Client();
s3Client.deleteObject(new DeleteObjectRequest(bucketName, key));
}
@Override
public void downloadObject(String guid, OutputStream out) throws StorageServiceException {
String key = getObjectKey(guid);
AmazonS3 s3Client = getS3Client();
S3Object object = s3Client.getObject(new GetObjectRequest(bucketName, key));
InputStream objectData = null;
try {
objectData = object.getObjectContent();
IOUtils.copy(objectData, out);
} catch (IOException e) {
throw new StorageServiceException(e);
} finally {
StreamUtils.closeQuietly(objectData);
}
}
private String getObjectKey(String guid) {
return "Files/" + guid;
}
private AmazonS3 getS3Client() {
AWSCredentials awsCredentials = new BasicAWSCredentials(accessId, secretKey);
AmazonS3 s3Client = new AmazonS3Client(awsCredentials);
return s3Client;
}
}
Comments
Post a Comment