- * Gets the object stored in Amazon S3 under the specified bucket and key.
- *
- *
- * Be extremely careful when using this method; the returned Amazon S3
- * object contains a direct stream of data from the HTTP connection. The
- * underlying HTTP connection cannot be reused until the user finishes
- * reading the data and closes the stream. Also note that if not all data
- * is read from the stream then the SDK will abort the underlying connection,
- * this may have a negative impact on performance. Therefore:
- *
- *
- *
Use the data from the input stream in Amazon S3 object as soon as possible
- *
Read all data from the stream (use {@link GetObjectRequest#setRange(long, long)} to request only the bytes you need)
- *
Close the input stream in Amazon S3 object as soon as possible
- *
- * If these rules are not followed, the client can run out of resources by
- * allocating too many open, but unused, HTTP connections.
- *
- * To get an object from Amazon S3, the caller must have
- * {@link Permission#Read} access to the object.
- *
- *
- * If the object fetched is publicly readable, it can also read it by
- * pasting its URL into a browser.
- *
- *
- * For more advanced options (such as downloading only a range of an
- * object's content, or placing constraints on when the object should be
- * downloaded) callers can use {@link #getObject(GetObjectRequest)}.
- *
- *
- * If you are accessing AWS
- * KMS-encrypted objects, you need to specify the correct region of the
- * bucket on your client and configure AWS Signature Version 4 for added
- * security. For more information on how to do this, see
- * http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#
- * specify-signature-version
- *
- *
- * @param bucketName
- * The name of the bucket containing the desired object.
- * @param key
- * The key under which the desired object is stored.
- *
- * @return The object stored in Amazon S3 in the specified bucket and key.
- *
- * @throws SdkClientException
- * If any errors are encountered in the client while making the
- * request or handling the response.
- *
- */
public S3Object getObject(String bucketName, String key) {
try {
return s3Client.getObject(bucketName, key);
} catch (AmazonServiceException ex) {}
return null;
}
+
+ public Set getFileList() {
+ Set fileList = new HashSet();
+ for(S3ObjectSummary os: s3Client.listObjectsV2(getBucket()).getObjectSummaries()) {
+ fileList.add(os.getKey());
+ }
+ return fileList;
+ }
+
+ public void removeFiles(Set s3Files) {
+ for(String key : s3Files) {
+ try {
+ logger.info("Removing file: " + key);
+ s3Client.deleteObject(getBucket(), key);
+ } catch (AmazonServiceException ex) {
+ logger.warn(String.format("Unable to delete %s: %s", key, ex.getMessage()), ex);
+ }
+ }
+ }
private String getPath(Path file) {
if (file.getParent() == null) return file.getFileName().toString();