/** * Copyright 2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You may not * use this file except in compliance with the License. A copy of the License * is located at * * http://aws.amazon.com/apache2.0/ * * or in the "LICENSE" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ package awslabs.lab21; import java.io.File; import java.util.UUID; import awslabs.labutility.LabUtility; import com.amazonaws.auth.ClasspathPropertiesFileCredentialsProvider; 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; public class Lab21 { private static Region region = Region.getRegion(Regions.US_EAST_1); // BEGIN NON-STUDENT_CODE private static ILabCode labCode = new StudentCode(); private static IOptionalLabCode optionalLabCode = new StudentCode(); private static String labBucketPrefix = "awslab"; /** * Controls the flow of the lab code execution. */ public static void main(String[] args) { try { String bucketName = labBucketPrefix + UUID.randomUUID().toString().substring(0, 8); String testImage = "test-image.png"; String publicTestImage = "public-test-image.png"; String testImage2 = "test-image2.png"; // Create an S3 client AmazonS3Client s3Client = new AmazonS3Client(new ClasspathPropertiesFileCredentialsProvider()); s3Client.setRegion(region); // Clean up leftovers from previous instances of this lab CleanupPreviousLabRuns(s3Client); // Create a bucket System.out.println("Creating bucket " + bucketName); labCode.createBucket(s3Client, bucketName, region); // Create an object in the bucket File sourceFile = new File(testImage); if (sourceFile.exists()) { System.out.println("Uploading object: " + testImage); labCode.putObject(s3Client, bucketName, testImage, testImage); System.out.println("Uploading complete."); } else { System.out.println("Source file " + testImage + " doesn't exist."); return; } sourceFile = new File(testImage2); if (sourceFile.exists()) { System.out.println("Uploading another copy of the object (will be made publically available later)."); labCode.putObject(s3Client, bucketName, testImage2, publicTestImage); System.out.println("Uploading complete."); } else { System.out.println("Source file " + testImage2 + " doesn't exist."); return; } // List objects in the bucket System.out.println("Listing items in bucket: " + bucketName); labCode.listObjects(s3Client, bucketName); System.out.println("Listing complete."); // Change the ACL on one of the objects to make it public System.out.println("Changing the ACL to make an object public"); labCode.makeObjectPublic(s3Client, bucketName, publicTestImage); System.out.println("Done the object should be publically available now. Test this URL to confirm:"); System.out.println(" http://" + bucketName + ".s3.amazonaws.com/" + publicTestImage); // Generate a pre-signed URL for an object to grant temporary access to the file. System.out.println("Generating presigned URL."); String presignedUrl = labCode.generatePreSignedUrl(s3Client, bucketName, testImage); System.out.println("Done. Test this URL to confirm:"); System.out.println(" " + presignedUrl); } catch (Exception ex) { LabUtility.dumpError(ex); } } private static void CleanupPreviousLabRuns(AmazonS3 s3Client) { Boolean isInformed = false; // Get list of buckets for (Bucket bucket : s3Client.listBuckets()) { if (bucket.getName().startsWith(labBucketPrefix)) { if (!isInformed) { System.out.println("Cleaning up resources from previous lab run."); isInformed = true; } // Delete the matching buckets System.out.print("Deleting " + bucket.getName() + " bucket. "); optionalLabCode.deleteBucket(s3Client, bucket.getName()); System.out.println("Done."); } } } // END NON-STUDENT_CODE }