diff --git a/pom.xml b/pom.xml index efc3c43..21a83b7 100644 --- a/pom.xml +++ b/pom.xml @@ -4,21 +4,38 @@ com.amazonaws.samples aws-java-sample - 1.0 + 1.0-SNAPSHOT jar aws-java-sample 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.9.6 + 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 39beedd..727b15d 100644 --- a/src/main/java/com/amazonaws/samples/S3Sample.java +++ b/src/main/java/com/amazonaws/samples/S3Sample.java @@ -14,30 +14,17 @@ */ 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 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; -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; - /** * This sample demonstrates how to make basic requests to Amazon S3 using * the AWS SDK for Java. @@ -62,9 +49,7 @@ public static void main(String[] args) throws IOException { * aws_secret_access_key = YOUR_SECRET_ACCESS_KEY */ - AmazonS3 s3 = new AmazonS3Client(); - 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"; @@ -83,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(b -> b.bucket(bucketName)); /* * 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(); @@ -103,7 +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(new PutObjectRequest(bucketName, key, createSampleFile())); + s3.putObject(b -> b.bucket(bucketName).key(key), RequestBody.fromFile(createSampleFile())); /* * Download an object - When you download an object, you get all of @@ -118,9 +103,15 @@ 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(b -> b.bucket(bucketName).key(key))) { + 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 @@ -131,12 +122,9 @@ 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(b -> b.bucket(bucketName).prefix("My")); + for (S3Object objectSummary : objectListing.contents()) { + System.out.println(" - " + objectSummary.key() + " " + "(size = " + objectSummary.size() + ")"); } System.out.println(); @@ -145,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(bucketName, key); + s3.deleteObject(b -> b.bucket(bucketName).key(key)); /* * Delete a bucket - A bucket must be completely empty before it can be @@ -153,17 +141,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(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."); 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()); @@ -175,8 +163,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 +184,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));