From dedb8514253955095ca1dffc4152493cccab9814 Mon Sep 17 00:00:00 2001 From: Christian Schlichtherle Date: Sat, 16 Jun 2018 07:47:48 +0400 Subject: [PATCH 1/4] Ugrades to `aws-java-sdk` version 1.11.348. --- pom.xml | 4 +-- .../java/com/amazonaws/samples/S3Sample.java | 29 ++++--------------- 2 files changed, 8 insertions(+), 25 deletions(-) diff --git a/pom.xml b/pom.xml index efc3c43..0f40dca 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.amazonaws.samples aws-java-sample - 1.0 + 1.0-SNAPSHOT jar aws-java-sample @@ -18,7 +18,7 @@ com.amazonaws aws-java-sdk - 1.9.6 + 1.11.348 diff --git a/src/main/java/com/amazonaws/samples/S3Sample.java b/src/main/java/com/amazonaws/samples/S3Sample.java index 39beedd..5d86cf3 100644 --- a/src/main/java/com/amazonaws/samples/S3Sample.java +++ b/src/main/java/com/amazonaws/samples/S3Sample.java @@ -14,29 +14,16 @@ */ package com.amazonaws.samples; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.io.Writer; -import java.util.UUID; - import com.amazonaws.AmazonClientException; import com.amazonaws.AmazonServiceException; 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.Bucket; -import com.amazonaws.services.s3.model.GetObjectRequest; -import com.amazonaws.services.s3.model.ListObjectsRequest; -import com.amazonaws.services.s3.model.ObjectListing; -import com.amazonaws.services.s3.model.PutObjectRequest; -import com.amazonaws.services.s3.model.S3Object; -import com.amazonaws.services.s3.model.S3ObjectSummary; +import com.amazonaws.services.s3.AmazonS3ClientBuilder; +import com.amazonaws.services.s3.model.*; + +import java.io.*; +import java.util.UUID; /** * This sample demonstrates how to make basic requests to Amazon S3 using @@ -62,7 +49,7 @@ public static void main(String[] args) throws IOException { * aws_secret_access_key = YOUR_SECRET_ACCESS_KEY */ - AmazonS3 s3 = new AmazonS3Client(); + AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); Region usWest2 = Region.getRegion(Regions.US_WEST_2); s3.setRegion(usWest2); @@ -175,8 +162,6 @@ public static void main(String[] args) throws IOException { * to Amazon S3 * * @return A newly created temporary file with text data. - * - * @throws IOException */ private static File createSampleFile() throws IOException { File file = File.createTempFile("aws-java-sdk-", ".txt"); @@ -198,8 +183,6 @@ private static File createSampleFile() throws IOException { * * @param input * The input stream to display as text. - * - * @throws IOException */ private static void displayTextInputStream(InputStream input) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(input)); From bc52082633f881c45df114b2c9afc528ef33fa2b Mon Sep 17 00:00:00 2001 From: Christian Schlichtherle Date: Sat, 16 Jun 2018 09:43:28 +0400 Subject: [PATCH 2/4] Ugrades to `aws-java-sdk` version 2.0.0-preview-10. --- pom.xml | 23 +++++- .../java/com/amazonaws/samples/S3Sample.java | 72 ++++++++++--------- 2 files changed, 59 insertions(+), 36 deletions(-) diff --git a/pom.xml b/pom.xml index 0f40dca..21a83b7 100644 --- a/pom.xml +++ b/pom.xml @@ -11,14 +11,31 @@ http://aws.amazon.com/sdkforjava + ${maven.compiler.target} + 1.8 UTF-8 + + + + software.amazon.awssdk + bom + 2.0.0-preview-10 + pom + import + + + - com.amazonaws - aws-java-sdk - 1.11.348 + software.amazon.awssdk + s3 + + + org.slf4j + slf4j-simple + 1.7.25 diff --git a/src/main/java/com/amazonaws/samples/S3Sample.java b/src/main/java/com/amazonaws/samples/S3Sample.java index 5d86cf3..bf4447a 100644 --- a/src/main/java/com/amazonaws/samples/S3Sample.java +++ b/src/main/java/com/amazonaws/samples/S3Sample.java @@ -14,13 +14,13 @@ */ package com.amazonaws.samples; -import com.amazonaws.AmazonClientException; -import com.amazonaws.AmazonServiceException; -import com.amazonaws.regions.Region; -import com.amazonaws.regions.Regions; -import com.amazonaws.services.s3.AmazonS3; -import com.amazonaws.services.s3.AmazonS3ClientBuilder; -import com.amazonaws.services.s3.model.*; +import software.amazon.awssdk.awscore.exception.AwsServiceException; +import software.amazon.awssdk.core.ResponseInputStream; +import software.amazon.awssdk.core.exception.SdkClientException; +import software.amazon.awssdk.core.sync.RequestBody; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.s3.S3Client; +import software.amazon.awssdk.services.s3.model.*; import java.io.*; import java.util.UUID; @@ -49,9 +49,7 @@ public static void main(String[] args) throws IOException { * aws_secret_access_key = YOUR_SECRET_ACCESS_KEY */ - AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); - Region usWest2 = Region.getRegion(Regions.US_WEST_2); - s3.setRegion(usWest2); + S3Client s3 = S3Client.builder().region(Region.US_WEST_2).build(); String bucketName = "my-first-s3-bucket-" + UUID.randomUUID(); String key = "MyObjectKey"; @@ -70,14 +68,14 @@ public static void main(String[] args) throws IOException { * keep your data closer to your applications or users. */ System.out.println("Creating bucket " + bucketName + "\n"); - s3.createBucket(bucketName); + s3.createBucket(CreateBucketRequest.builder().bucket(bucketName).build()); /* * List the buckets in your account */ System.out.println("Listing buckets"); - for (Bucket bucket : s3.listBuckets()) { - System.out.println(" - " + bucket.getName()); + for (Bucket bucket : s3.listBuckets().buckets()) { + System.out.println(" - " + bucket.name()); } System.out.println(); @@ -90,7 +88,10 @@ public static void main(String[] args) throws IOException { * specific to your applications. */ System.out.println("Uploading a new object to S3 from a file\n"); - s3.putObject(new PutObjectRequest(bucketName, key, createSampleFile())); + s3.putObject( + PutObjectRequest.builder().bucket(bucketName).key(key).build(), + RequestBody.fromFile(createSampleFile()) + ); /* * Download an object - When you download an object, you get all of @@ -105,9 +106,16 @@ public static void main(String[] args) throws IOException { * ETags, and selectively downloading a range of an object. */ System.out.println("Downloading an object"); - S3Object object = s3.getObject(new GetObjectRequest(bucketName, key)); - System.out.println("Content-Type: " + object.getObjectMetadata().getContentType()); - displayTextInputStream(object.getObjectContent()); + try (ResponseInputStream object = s3.getObject( + GetObjectRequest.builder().bucket(bucketName).key(key).build())) { + try { + System.out.println("Content-Type: " + object.response().contentType()); + displayTextInputStream(object); + } catch (IOException e) { + object.abort(); + throw e; + } + } /* * List objects in your bucket by prefix - There are many options for @@ -118,12 +126,10 @@ public static void main(String[] args) throws IOException { * additional results. */ System.out.println("Listing objects"); - ObjectListing objectListing = s3.listObjects(new ListObjectsRequest() - .withBucketName(bucketName) - .withPrefix("My")); - for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) { - System.out.println(" - " + objectSummary.getKey() + " " + - "(size = " + objectSummary.getSize() + ")"); + ListObjectsResponse objectListing = s3.listObjects( + ListObjectsRequest.builder().bucket(bucketName).prefix("My").build()); + for (S3Object objectSummary : objectListing.contents()) { + System.out.println(" - " + objectSummary.key() + " " + "(size = " + objectSummary.size() + ")"); } System.out.println(); @@ -132,7 +138,7 @@ public static void main(String[] args) throws IOException { * there is no way to undelete an object, so use caution when deleting objects. */ System.out.println("Deleting an object\n"); - s3.deleteObject(bucketName, key); + s3.deleteObject(DeleteObjectRequest.builder().bucket(bucketName).key(key).build()); /* * Delete a bucket - A bucket must be completely empty before it can be @@ -140,17 +146,17 @@ public static void main(String[] args) throws IOException { * you try to delete them. */ System.out.println("Deleting bucket " + bucketName + "\n"); - s3.deleteBucket(bucketName); - } catch (AmazonServiceException ase) { - System.out.println("Caught an AmazonServiceException, which means your request made it " + s3.deleteBucket(DeleteBucketRequest.builder().bucket(bucketName).build()); + } catch (AwsServiceException ase) { + System.out.println("Caught an AwsServiceException, which means your request made it " + "to Amazon S3, but was rejected with an error response for some reason."); System.out.println("Error Message: " + ase.getMessage()); - System.out.println("HTTP Status Code: " + ase.getStatusCode()); - System.out.println("AWS Error Code: " + ase.getErrorCode()); - System.out.println("Error Type: " + ase.getErrorType()); - System.out.println("Request ID: " + ase.getRequestId()); - } catch (AmazonClientException ace) { - System.out.println("Caught an AmazonClientException, which means the client encountered " + System.out.println("HTTP Status Code: " + ase.statusCode()); + System.out.println("AWS Error Code: " + ase.errorCode()); + System.out.println("Error Type: " + ase.errorType()); + System.out.println("Request ID: " + ase.requestId()); + } catch (SdkClientException ace) { + System.out.println("Caught an SdkClientException, which means the client encountered " + "a serious internal problem while trying to communicate with S3, " + "such as not being able to access the network."); System.out.println("Error Message: " + ace.getMessage()); From f3509d6f51e240970a578edb24ba18d634cf2650 Mon Sep 17 00:00:00 2001 From: Christian Schlichtherle Date: Sun, 17 Jun 2018 16:18:57 +0400 Subject: [PATCH 3/4] Fixes usage of client builder. --- src/main/java/com/amazonaws/samples/S3Sample.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/com/amazonaws/samples/S3Sample.java b/src/main/java/com/amazonaws/samples/S3Sample.java index 5d86cf3..416d3ea 100644 --- a/src/main/java/com/amazonaws/samples/S3Sample.java +++ b/src/main/java/com/amazonaws/samples/S3Sample.java @@ -16,7 +16,6 @@ import com.amazonaws.AmazonClientException; import com.amazonaws.AmazonServiceException; -import com.amazonaws.regions.Region; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; @@ -49,9 +48,7 @@ public static void main(String[] args) throws IOException { * aws_secret_access_key = YOUR_SECRET_ACCESS_KEY */ - AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); - Region usWest2 = Region.getRegion(Regions.US_WEST_2); - s3.setRegion(usWest2); + AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.US_WEST_2).build(); String bucketName = "my-first-s3-bucket-" + UUID.randomUUID(); String key = "MyObjectKey"; From cf4e6d979744f0bc89530c5b4247b76d70e1e64d Mon Sep 17 00:00:00 2001 From: Christian Schlichtherle Date: Sun, 17 Jun 2018 16:26:46 +0400 Subject: [PATCH 4/4] Improves API usage. --- .../java/com/amazonaws/samples/S3Sample.java | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/amazonaws/samples/S3Sample.java b/src/main/java/com/amazonaws/samples/S3Sample.java index bf4447a..727b15d 100644 --- a/src/main/java/com/amazonaws/samples/S3Sample.java +++ b/src/main/java/com/amazonaws/samples/S3Sample.java @@ -68,7 +68,7 @@ public static void main(String[] args) throws IOException { * keep your data closer to your applications or users. */ System.out.println("Creating bucket " + bucketName + "\n"); - s3.createBucket(CreateBucketRequest.builder().bucket(bucketName).build()); + s3.createBucket(b -> b.bucket(bucketName)); /* * List the buckets in your account @@ -88,10 +88,7 @@ public static void main(String[] args) throws IOException { * specific to your applications. */ System.out.println("Uploading a new object to S3 from a file\n"); - s3.putObject( - PutObjectRequest.builder().bucket(bucketName).key(key).build(), - RequestBody.fromFile(createSampleFile()) - ); + s3.putObject(b -> b.bucket(bucketName).key(key), RequestBody.fromFile(createSampleFile())); /* * Download an object - When you download an object, you get all of @@ -106,8 +103,7 @@ public static void main(String[] args) throws IOException { * ETags, and selectively downloading a range of an object. */ System.out.println("Downloading an object"); - try (ResponseInputStream object = s3.getObject( - GetObjectRequest.builder().bucket(bucketName).key(key).build())) { + try (ResponseInputStream object = s3.getObject(b -> b.bucket(bucketName).key(key))) { try { System.out.println("Content-Type: " + object.response().contentType()); displayTextInputStream(object); @@ -126,8 +122,7 @@ public static void main(String[] args) throws IOException { * additional results. */ System.out.println("Listing objects"); - ListObjectsResponse objectListing = s3.listObjects( - ListObjectsRequest.builder().bucket(bucketName).prefix("My").build()); + ListObjectsResponse objectListing = s3.listObjects(b -> b.bucket(bucketName).prefix("My")); for (S3Object objectSummary : objectListing.contents()) { System.out.println(" - " + objectSummary.key() + " " + "(size = " + objectSummary.size() + ")"); } @@ -138,7 +133,7 @@ public static void main(String[] args) throws IOException { * there is no way to undelete an object, so use caution when deleting objects. */ System.out.println("Deleting an object\n"); - s3.deleteObject(DeleteObjectRequest.builder().bucket(bucketName).key(key).build()); + s3.deleteObject(b -> b.bucket(bucketName).key(key)); /* * Delete a bucket - A bucket must be completely empty before it can be @@ -146,7 +141,7 @@ public static void main(String[] args) throws IOException { * you try to delete them. */ System.out.println("Deleting bucket " + bucketName + "\n"); - s3.deleteBucket(DeleteBucketRequest.builder().bucket(bucketName).build()); + s3.deleteBucket(b -> b.bucket(bucketName)); } catch (AwsServiceException ase) { System.out.println("Caught an AwsServiceException, which means your request made it " + "to Amazon S3, but was rejected with an error response for some reason.");