String sourceDir = getProperty(config, "src_dir");
SecretKey mySymmetricKey = new SecretKeySpec( Base64.decodeBase64(masterSym
metricKeyBase64.getBytes()) , "AES");
EncryptionMaterials materials = new EncryptionMaterials(mySymmetricKey);
AmazonS3 s3 = new AmazonS3EncryptionClient(credentials, materials);
s3.setEndpoint(s3Endpoint);
// Upload all files.
uploadAllFilesToS3(s3, bucketName, s3Prefix, new File(sourceDir) );
}
private static void uploadAllFilesToS3(AmazonS3 s3, String bucketName, String
s3Prefix, final File folder) {
System.out.println("Reading files from directory "+folder);
for (final File fileEntry : folder.listFiles()) {
if (! fileEntry.isDirectory()) { // Skip sub directories.
int retryCount = 0;
boolean done = false;
while ( !done ) {
try {
uploadToS3(s3, bucketName, s3Prefix, fileEntry);
done = true;
}catch (Exception e ){
ret+;
if ( retryCount > MAX_RETRY_COUNT ) {
System.out.println("Retry count exceeded max retry count
"+MAX_RETR". Giving up");
throw new RuntimeException(e);
}
// Do retry after 10 seconds.
System.out.println("Failed to upload file "+fi". Retry
ing...");
try {
Thread.sleep(10 * 1000);
}catch(Exception te) {}
}
}// while
}// for
}
}
private static void uploadToS3(AmazonS3 s3, String bucketName, String s3Prefix,
File file) {
try {
System.out.println("Uploading a new object to S3 object '"+s"'
from file "+file);
String key = s"/"+file.getName();
s3.putObject(new PutObjectRequest(bucketName, key, file) );
API Version 2012-12-01
122
Amazon Redshift Management Guide
Example: Uploading Client-Side Encrypted Data