Skip to content

Added a SQSExtendedClientExample and logging in log4j of request output. #17

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 28 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,6 @@ AwsCredentials.properties
target/
*.iml
.gradle
build/
build/
*.log
out
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# AWS SDK for Java Sample Project
# AWS SDK for Java 'Improved' Sample Project

A simple Java application illustrating usage of the AWS SDK for Java.

Expand Down Expand Up @@ -46,7 +46,7 @@ Maven:

Gradle:

gradlew clean build run
gradlew clean build runS3Example runSQSExample


When you start making your own buckets, the S3 documentation provides a good overview
Expand Down
22 changes: 18 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,26 @@
apply plugin: 'java'
apply plugin: 'application'

mainClassName="com.amazonaws.samples.S3Sample"
apply plugin: 'idea'
//apply plugin: 'eclipse'
//apply plugin: 'application'

repositories {
mavenCentral()
}

dependencies {
compile 'com.amazonaws:aws-java-sdk:1.9.6'
}
compile 'com.amazonaws:amazon-sqs-java-extended-client-lib:1.0.1'
compile 'log4j:log4j:1.2.17'
}

task(runS3Example, dependsOn: 'classes', type: JavaExec) {
main = 'com.amazonaws.samples.S3Sample'
classpath = sourceSets.main.runtimeClasspath
}

task(runSQSExample, dependsOn: 'classes', type: JavaExec) {
main = 'com.amazonaws.samples.SQSExtendedClientExample'
classpath = sourceSets.main.runtimeClasspath
}

defaultTasks 'runS3Example', 'runSQSExample'
16 changes: 13 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,24 @@
<version>1.2.1</version>
<executions>
<execution>
<id>first-execution</id>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>com.amazonaws.samples.S3Sample</mainClass>
</configuration>
</execution>
<execution>
<id>second-execution</id>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>com.amazonaws.samples.SQSExtendedClientExample</mainClass>
</configuration>
</execution>
</executions>
<configuration>
<mainClass>com.amazonaws.samples.S3Sample</mainClass>
</configuration>
</plugin>
</plugins>
</build>
Expand Down
183 changes: 183 additions & 0 deletions src/main/java/com/amazonaws/samples/S3TestUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
package com.amazonaws.samples;

import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.*;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.Upload;

import java.io.*;
import java.util.Arrays;
import java.util.Iterator;

/**
* Requires that you created a file ~/.aws/credentials
*/
public class S3TestUtil
{
private static final AmazonS3 s3;
private static final Region usWest2;
private static final DefaultAWSCredentialsProviderChain credentialProviderChain;
private static TransferManager tx;

static {
s3 = new AmazonS3Client();
usWest2 = Region.getRegion(Regions.US_WEST_2);
s3.setRegion(usWest2);
credentialProviderChain = new DefaultAWSCredentialsProviderChain();
}

public static AmazonS3 getS3() {
return s3;
}

public static void deleteEntireBucket(String bucket_name) {
System.out.println("Deleting S3 bucket: " + bucket_name);
try {
System.out.println(" - removing objects from bucket");
ObjectListing object_listing = s3.listObjects(bucket_name);
while (true) {
for (Iterator<?> iterator = object_listing.getObjectSummaries().iterator(); iterator.hasNext(); ) {
S3ObjectSummary summary = (S3ObjectSummary) iterator.next();
s3.deleteObject(bucket_name, summary.getKey());
}
if (object_listing.isTruncated()) {
object_listing = s3.listNextBatchOfObjects(object_listing);
} else {
break;
}
}

System.out.println(" - removing versions from bucket");
VersionListing version_listing = s3.listVersions(new ListVersionsRequest().withBucketName(bucket_name));
while (true) {
for (Iterator<?> iterator = version_listing.getVersionSummaries().iterator(); iterator.hasNext(); ) {
S3VersionSummary vs = (S3VersionSummary) iterator.next();
s3.deleteVersion(bucket_name, vs.getKey(), vs.getVersionId());
}
if (version_listing.isTruncated()) {
version_listing = s3.listNextBatchOfVersions(version_listing);
} else {
break;
}
}
s3.deleteBucket(bucket_name);
} catch (AmazonServiceException e) {
System.err.println(e.getErrorMessage());
System.exit(1);
}
System.out.println("Done removing bucket: " + bucket_name);
}

public static void copyEntireBucket(String src_bucket, String dest_bucket) {
System.out.println("Copying S3 bucket '" + src_bucket + "' to destination '" + dest_bucket + "' ...");
try {
System.out.println(" - copying objects from bucket");
ObjectListing object_listing = s3.listObjects(src_bucket);
while (true) {
for (Iterator<?> iterator = object_listing.getObjectSummaries().iterator(); iterator.hasNext(); ) {
S3ObjectSummary summary = (S3ObjectSummary) iterator.next();
s3.copyObject(src_bucket, summary.getKey(), dest_bucket, summary.getKey());
}
if (object_listing.isTruncated()) {
object_listing = s3.listNextBatchOfObjects(object_listing);
} else {
break;
}
}
//System.out.println(" - copying versions from bucket");
//VersionListing version_listing = s3.listVersions(new ListVersionsRequest().withBucketName(src_bucket));
//while (true) {
// for (Iterator<?> iterator = version_listing.getVersionSummaries().iterator(); iterator.hasNext(); ) {
// S3VersionSummary vs = (S3VersionSummary) iterator.next();
// String key = vs.getKey();
// String ver = vs.getVersionId();
// // how??
// }
// if (version_listing.isTruncated()) {
// version_listing = s3.listNextBatchOfVersions(version_listing);
// } else {
// break;
// }
//}
//s3.deleteBucket(src_bucket);
} catch (AmazonServiceException e) {
System.err.println(e.getErrorMessage());
System.exit(1);
}
System.out.println("Done copying bucket '" + src_bucket + "' to new bucket '" + dest_bucket + "'");
}

public static File createTmpFile() {
File tempTestFile = null;
try {
tempTestFile = File.createTempFile("aws-java-sdk-copy-test-", ".txt");
tempTestFile.deleteOnExit();

Writer writer = new OutputStreamWriter(new FileOutputStream(tempTestFile));
writer.write("abcdefghijklmnopqrstuvwxyz\n");
writer.write("01234567890112345678901234\n");
writer.write("!@#$%^&*()-=[]{};':',.<>/?\n");
writer.write("01234567890112345678901234\n");
writer.write("abcdefghijklmnopqrstuvwxyz\n");
writer.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
return tempTestFile;
}

public static void createExpiringBucket(String name) {
BucketLifecycleConfiguration.Rule bucketExpirationRule =
new BucketLifecycleConfiguration.Rule()
.withId("RULE: Delete bucket after 1 day")
.withExpirationInDays(1) // expiration date must be midnight GMT and is effectively GMT-8, or around 4pm
.withStatus(BucketLifecycleConfiguration.ENABLED.toString());

BucketLifecycleConfiguration configuration =
new BucketLifecycleConfiguration()
.withRules(Arrays.asList(bucketExpirationRule));

boolean bucketMissing = !bucketExists(name);

if (bucketMissing) {
System.out.println("Creating 10 minute bucket " + name + "\n");
s3.createBucket(name);
s3.setBucketLifecycleConfiguration(name, configuration);
}
}

public static boolean bucketExists(String name) {
for (Bucket bucket : s3.listBuckets()) {
if (bucket.getName().equals(name)) {
return true;
}
}
return false;
}

public static void showAllBuckets() {
for (Bucket bucket : s3.listBuckets()) {
System.out.println("bucket: " + bucket.getName());
}
}

public static void uploadTmpFileToBucket(String bucketName, File fileKey) {
System.out.println("Uploading a file to bucket " + bucketName);
tx = new TransferManager(credentialProviderChain.getCredentials());

Upload myUpload = tx.upload(bucketName, fileKey.getName(), fileKey);

try {
myUpload.waitForCompletion();
} catch (InterruptedException e) {
e.printStackTrace();
}
if (tx != null) tx.shutdownNow();
}

}
43 changes: 43 additions & 0 deletions src/main/java/com/amazonaws/samples/S3TransferExample.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.amazonaws.samples;

import java.io.*;
import java.util.UUID;

public class S3TransferExample
{
private static File fileKey1;
private static File fileKey2;
private static String sourceBucket;
private static String destinationBucket;

public static void main(String[] args) {
createSourceAndDestinationBuckets("test-bucket-" + UUID.randomUUID());
fileKey1 = S3TestUtil.createTmpFile();
S3TestUtil.uploadTmpFileToBucket(sourceBucket, fileKey1);
fileKey2 = S3TestUtil.createTmpFile();
S3TestUtil.uploadTmpFileToBucket(sourceBucket, fileKey2);
copyBucketToNewLocation();
S3TestUtil.showAllBuckets();
//deleteTestBucketsNow();
}

private static void copyBucketToNewLocation() {
System.out.println("Copying bucket " + sourceBucket + " to new bucket " + destinationBucket);
//CopyObjectResult copyObjectResult = S3TestUtil.getS3().copyObject(sourceBucket, fileKey1.getName(), destinationBucket, fileKey1.getName());
S3TestUtil.copyEntireBucket(sourceBucket, destinationBucket);
}

public static void createSourceAndDestinationBuckets(String name)
{
sourceBucket = name;
destinationBucket = name + "-dest";
if (!S3TestUtil.bucketExists(sourceBucket)) S3TestUtil.createExpiringBucket(sourceBucket);
if (!S3TestUtil.bucketExists(destinationBucket)) S3TestUtil.createExpiringBucket(destinationBucket);
}

public static void deleteTestBucketsNow() {
S3TestUtil.deleteEntireBucket(sourceBucket);
S3TestUtil.deleteEntireBucket(destinationBucket);
}

}
Loading