Class TransferManager
TransferManager
provides a simple API for uploading content to
Amazon S3, and makes extensive use of Amazon S3 multipart uploads to achieve
enhanced throughput, performance and reliability.
When possible, TransferManager
attempts to use multiple threads
to upload multiple parts of a single upload at once. When dealing with large
content sizes and high bandwidth, this can have a significant increase on
throughput.
TransferManager
is responsible for managing resources such as
connections and threads; share a single instance of
TransferManager
whenever possible. TransferManager
,
like all the client classes in the AWS SDK for Java, is thread safe. Call
TransferManager.shutdownNow()
to release the resources once the
transfer is complete.
Using TransferManager
to upload options to Amazon S3 is easy:
DefaultAWSCredentialsProviderChain credentialProviderChain = new DefaultAWSCredentialsProviderChain(); TransferManager tx = new TransferManager( credentialProviderChain.getCredentials()); Upload myUpload = tx.upload(myBucket, myFile.getName(), myFile); // You can poll your transfer's status to check its progress if (myUpload.isDone() == false) { System.out.println("Transfer: " + myUpload.getDescription()); System.out.println(" - State: " + myUpload.getState()); System.out.println(" - Progress: " + myUpload.getProgress().getBytesTransferred()); } // Transfers also allow you to set a <code>ProgressListener</code> to receive // asynchronous notifications about your transfer's progress. myUpload.addProgressListener(myProgressListener); // Or you can block the current thread and wait for your transfer to // to complete. If the transfer fails, this method will throw an // AmazonClientException or AmazonServiceException detailing the reason. myUpload.waitForCompletion(); // After the upload is complete, call shutdownNow to release the resources. tx.shutdownNow();
Transfers can be paused and resumed at a later time. It can also survive JVM crash, provided the information that is required to resume the transfer is given as input to the resume operation. For more information on pause and resume,
-
Constructor Summary
ConstructorsConstructorDescriptionConstructs a newTransferManager
and Amazon S3 client using the credentials fromDefaultAWSCredentialsProviderChain
TransferManager
(AWSCredentials credentials) Constructs a newTransferManager
and Amazon S3 client using the specified AWS security credentials.TransferManager
(AWSCredentialsProvider credentialsProvider) Constructs a newTransferManager
and Amazon S3 client using the specified AWS security credentials provider.Constructs a newTransferManager
, specifying the client to use when making requests to Amazon S3.TransferManager
(AmazonS3 s3, ExecutorService executorService) Constructs a newTransferManager
specifying the client and thread pool to use when making requests to Amazon S3.TransferManager
(AmazonS3 s3, ExecutorService executorService, boolean shutDownThreadPools) Constructs a newTransferManager
specifying the client and thread pool to use when making requests to Amazon S3. -
Method Summary
Modifier and TypeMethodDescriptionvoid
abortMultipartUploads
(String bucketName, Date date) Aborts any multipart uploads that were initiated before the specified date.static <X extends AmazonWebServiceRequest>
XappendMultipartUserAgent
(X request) static <X extends AmazonWebServiceRequest>
XappendSingleObjectUserAgent
(X request) copy
(CopyObjectRequest copyObjectRequest) Schedules a new transfer to copy data from one Amazon S3 location to another Amazon S3 location.copy
(CopyObjectRequest copyObjectRequest, com.amazonaws.services.s3.transfer.internal.TransferStateChangeListener stateChangeListener) Schedules a new transfer to copy data from one Amazon S3 location to another Amazon S3 location.copy
(String sourceBucketName, String sourceKey, String destinationBucketName, String destinationKey) Schedules a new transfer to copy data from one Amazon S3 location to another Amazon S3 location.download
(GetObjectRequest getObjectRequest, File file) Schedules a new transfer to download data from Amazon S3 and save it to the specified file.download
(GetObjectRequest getObjectRequest, File file, long timeoutMillis) Schedules a new transfer to download data from Amazon S3 and save it to the specified file.download
(GetObjectRequest getObjectRequest, File file, com.amazonaws.services.s3.transfer.internal.S3ProgressListener progressListener) Schedules a new transfer to download data from Amazon S3 and save it to the specified file.download
(GetObjectRequest getObjectRequest, File file, com.amazonaws.services.s3.transfer.internal.S3ProgressListener progressListener, long timeoutMillis) Schedules a new transfer to download data from Amazon S3 and save it to the specified file.Schedules a new transfer to download data from Amazon S3 and save it to the specified file.Schedules a new transfer to download data from Amazon S3 and save it to the specified file.downloadDirectory
(String bucketName, String keyPrefix, File destinationDirectory) Downloads all objects in the virtual directory designated by the keyPrefix given to the destination directory given.protected void
finalize()
Releasing all resources created byTransferManager
before it is being garbage collected.Returns the underlying Amazon S3 client used to make requests to Amazon S3.Returns the configuration which specifies how thisTransferManager
processes requests.resumeDownload
(PersistableDownload persistableDownload) Resumes an download operation.resumeUpload
(PersistableUpload persistableUpload) Resumes an upload operation.void
setConfiguration
(TransferManagerConfiguration configuration) Sets the configuration which specifies how thisTransferManager
processes requests.void
Forcefully shuts down this TransferManager instance - currently executing transfers will not be allowed to finish.void
shutdownNow
(boolean shutDownS3Client) Forcefully shuts down this TransferManager instance - currently executing transfers will not be allowed to finish.upload
(PutObjectRequest putObjectRequest) Schedules a new transfer to upload data to Amazon S3.upload
(PutObjectRequest putObjectRequest, com.amazonaws.services.s3.transfer.internal.S3ProgressListener progressListener) Schedules a new transfer to upload data to Amazon S3.Schedules a new transfer to upload data to Amazon S3.upload
(String bucketName, String key, InputStream input, ObjectMetadata objectMetadata) Schedules a new transfer to upload data to Amazon S3.uploadDirectory
(String bucketName, String virtualDirectoryKeyPrefix, File directory, boolean includeSubdirectories) Uploads all files in the directory given to the bucket named, optionally recursing for all subdirectories.uploadDirectory
(String bucketName, String virtualDirectoryKeyPrefix, File directory, boolean includeSubdirectories, ObjectMetadataProvider metadataProvider) Uploads all files in the directory given to the bucket named, optionally recursing for all subdirectories.uploadFileList
(String bucketName, String virtualDirectoryKeyPrefix, File directory, List<File> files) Uploads all specified files to the bucket named, constructing relative keys depending on the commonParentDirectory given.uploadFileList
(String bucketName, String virtualDirectoryKeyPrefix, File directory, List<File> files, ObjectMetadataProvider metadataProvider) Uploads all specified files to the bucket named, constructing relative keys depending on the commonParentDirectory given.
-
Constructor Details
-
TransferManager
public TransferManager()Constructs a newTransferManager
and Amazon S3 client using the credentials fromDefaultAWSCredentialsProviderChain
TransferManager
and client objects may pool connections and threads. ReuseTransferManager
and client objects and share them throughout applications.TransferManager and all AWS client objects are thread safe.
-
TransferManager
Constructs a newTransferManager
and Amazon S3 client using the specified AWS security credentials provider.TransferManager
and client objects may pool connections and threads. ReuseTransferManager
and client objects and share them throughout applications.TransferManager and all AWS client objects are thread safe.
- Parameters:
credentialsProvider
- The AWS security credentials provider to use when making authenticated requests.
-
TransferManager
Constructs a newTransferManager
and Amazon S3 client using the specified AWS security credentials.TransferManager
and client objects may pool connections and threads. ReuseTransferManager
and client objects and share them throughout applications.TransferManager and all AWS client objects are thread safe.
- Parameters:
credentials
- The AWS security credentials to use when making authenticated requests.
-
TransferManager
Constructs a newTransferManager
, specifying the client to use when making requests to Amazon S3.TransferManager
and client objects may pool connections and threads. ReuseTransferManager
and client objects and share them throughout applications.TransferManager and all AWS client objects are thread safe.
- Parameters:
s3
- The client to use when making requests to Amazon S3.
-
TransferManager
Constructs a newTransferManager
specifying the client and thread pool to use when making requests to Amazon S3.TransferManager
and client objects may pool connections and threads. ReuseTransferManager
and client objects and share them throughout applications.TransferManager and all AWS client objects are thread safe.
By default, the thread pool will shutdown when the transfer manager instance is garbage collected.
- Parameters:
s3
- The client to use when making requests to Amazon S3.executorService
- The ExecutorService to use for the TransferManager. It is not recommended to use a single threaded executor or a thread pool with a bounded work queue as control tasks may submit subtasks that can't complete until all sub tasks complete. Using an incorrectly configured thread pool may cause a deadlock (I.E. the work queue is filled with control tasks that can't finish until subtasks complete but subtasks can't execute because the queue is filled).- See Also:
-
TransferManager
Constructs a newTransferManager
specifying the client and thread pool to use when making requests to Amazon S3.TransferManager
and client objects may pool connections and threads. ReuseTransferManager
and client objects and share them throughout applications.TransferManager and all AWS client objects are thread safe.
- Parameters:
s3
- The client to use when making requests to Amazon S3.executorService
- The ExecutorService to use for the TransferManager. It is not recommended to use a single threaded executor or a thread pool with a bounded work queue as control tasks may submit subtasks that can't complete until all sub tasks complete. Using an incorrectly configured thread pool may cause a deadlock (I.E. the work queue is filled with control tasks that can't finish until subtasks complete but subtasks can't execute because the queue is filled).shutDownThreadPools
- If set to true, the thread pool will be shutdown when transfer manager instance is garbage collected.
-
-
Method Details
-
setConfiguration
Sets the configuration which specifies how thisTransferManager
processes requests.- Parameters:
configuration
- The new configuration specifying how thisTransferManager
processes requests.
-
getConfiguration
Returns the configuration which specifies how thisTransferManager
processes requests.- Returns:
- The configuration settings for this
TransferManager
.
-
getAmazonS3Client
Returns the underlying Amazon S3 client used to make requests to Amazon S3.- Returns:
- The underlying Amazon S3 client used to make requests to Amazon S3.
-
upload
public Upload upload(String bucketName, String key, InputStream input, ObjectMetadata objectMetadata) throws AmazonServiceException, AmazonClientException Schedules a new transfer to upload data to Amazon S3. This method is non-blocking and returns immediately (i.e. before the upload has finished).
When uploading options from a stream, callers must supply the size of options in the stream through the content length field in the
ObjectMetadata
parameter. If no content length is specified for the input stream, then TransferManager will attempt to buffer all the stream contents in memory and upload the options as a traditional, single part upload. Because the entire stream contents must be buffered in memory, this can be very expensive, and should be avoided whenever possible.Use the returned
Upload
object to query the progress of the transfer, add listeners for progress events, and wait for the upload to complete.If resources are available, the upload will begin immediately. Otherwise, the upload is scheduled and started as soon as resources become available.
If you are uploading 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
- Parameters:
bucketName
- The name of the bucket to upload the new object to.key
- The key in the specified bucket by which to store the new object.input
- The input stream containing the options to upload to Amazon S3.objectMetadata
- Additional information about the object being uploaded, including the size of the options, content type, additional custom user metadata, etc.- Returns:
- A new
Upload
object to use to check the state of the upload, listen for progress notifications, and otherwise manage the upload. - Throws:
AmazonClientException
- If any errors are encountered in the client while making the request or handling the response.AmazonServiceException
- If any errors occurred in Amazon S3 while processing the request.
-
upload
public Upload upload(String bucketName, String key, File file) throws AmazonServiceException, AmazonClientException Schedules a new transfer to upload data to Amazon S3. This method is non-blocking and returns immediately (i.e. before the upload has finished).The returned Upload object allows you to query the progress of the transfer, add listeners for progress events, and wait for the upload to complete.
If resources are available, the upload will begin immediately, otherwise it will be scheduled and started as soon as resources become available.
If you are uploading 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
- Parameters:
bucketName
- The name of the bucket to upload the new object to.key
- The key in the specified bucket by which to store the new object.file
- The file to upload.- Returns:
- A new Upload object which can be used to check state of the upload, listen for progress notifications, and otherwise manage the upload.
- Throws:
AmazonClientException
- If any errors are encountered in the client while making the request or handling the response.AmazonServiceException
- If any errors occurred in Amazon S3 while processing the request.
-
upload
public Upload upload(PutObjectRequest putObjectRequest) throws AmazonServiceException, AmazonClientException Schedules a new transfer to upload data to Amazon S3. This method is non-blocking and returns immediately (i.e. before the upload has finished).
Use the returned
Upload
object to query the progress of the transfer, add listeners for progress events, and wait for the upload to complete.If resources are available, the upload will begin immediately. Otherwise, the upload is scheduled and started as soon as resources become available.
If you are uploading 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
- Parameters:
putObjectRequest
- The request containing all the parameters for the upload.- Returns:
- A new
Upload
object to use to check the state of the upload, listen for progress notifications, and otherwise manage the upload. - Throws:
AmazonClientException
- If any errors are encountered in the client while making the request or handling the response.AmazonServiceException
- If any errors occurred in Amazon S3 while processing the request.
-
upload
public Upload upload(PutObjectRequest putObjectRequest, com.amazonaws.services.s3.transfer.internal.S3ProgressListener progressListener) throws AmazonServiceException, AmazonClientException Schedules a new transfer to upload data to Amazon S3. This method is non-blocking and returns immediately (i.e. before the upload has finished).
Use the returned
Upload
object to query the progress of the transfer, add listeners for progress events, and wait for the upload to complete.If resources are available, the upload will begin immediately. Otherwise, the upload is scheduled and started as soon as resources become available.
If you are uploading 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
- Parameters:
putObjectRequest
- The request containing all the parameters for the upload.progressListener
- An optional callback listener to receive the progress of the upload.- Returns:
- A new
Upload
object to use to check the state of the upload, listen for progress notifications, and otherwise manage the upload. - Throws:
AmazonClientException
- If any errors are encountered in the client while making the request or handling the response.AmazonServiceException
- If any errors occurred in Amazon S3 while processing the request.
-
download
Schedules a new transfer to download data from Amazon S3 and save it to the specified file. This method is non-blocking and returns immediately (i.e. before the data has been fully downloaded).Use the returned Download object to query the progress of the transfer, add listeners for progress events, and wait for the download to complete.
If you are downloading 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
- Parameters:
bucket
- The name of the bucket containing the object to download.key
- The key under which the object to download is stored.file
- The file to download the object's data to.- Returns:
- A new
Download
object to use to check the state of the download, listen for progress notifications, and otherwise manage the download. - Throws:
AmazonClientException
- If any errors are encountered in the client while making the request or handling the response.AmazonServiceException
- If any errors occurred in Amazon S3 while processing the request.
-
download
Schedules a new transfer to download data from Amazon S3 and save it to the specified file. This method is non-blocking and returns immediately (i.e. before the data has been fully downloaded).Use the returned Download object to query the progress of the transfer, add listeners for progress events, and wait for the download to complete.
If you are downloading 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
- Parameters:
bucket
- The name of the bucket containing the object to download.key
- The key under which the object to download is stored.file
- The file to download the object's data to.timeoutMillis
- Timeout, in milliseconds, for waiting for this download to complete. Note that the timeout time will be approximate and is not strictly guaranteed. As a result this timeout should not be relied on in cases where exact precision is required.- Returns:
- A new
Download
object to use to check the state of the download, listen for progress notifications, and otherwise manage the download. - Throws:
AmazonClientException
- If any errors are encountered in the client while making the request or handling the response.AmazonServiceException
- If any errors occurred in Amazon S3 while processing the request.
-
download
Schedules a new transfer to download data from Amazon S3 and save it to the specified file. This method is non-blocking and returns immediately (i.e. before the data has been fully downloaded).Use the returned Download object to query the progress of the transfer, add listeners for progress events, and wait for the download to complete.
If you are downloading 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
- Parameters:
getObjectRequest
- The request containing all the parameters for the download.file
- The file to download the object data to.- Returns:
- A new
Download
object to use to check the state of the download, listen for progress notifications, and otherwise manage the download. - Throws:
AmazonClientException
- If any errors are encountered in the client while making the request or handling the response.AmazonServiceException
- If any errors occurred in Amazon S3 while processing the request.
-
download
Schedules a new transfer to download data from Amazon S3 and save it to the specified file. This method is non-blocking and returns immediately (i.e. before the data has been fully downloaded).Use the returned Download object to query the progress of the transfer, add listeners for progress events, and wait for the download to complete.
If you are downloading 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
- Parameters:
getObjectRequest
- The request containing all the parameters for the download.file
- The file to download the object data to.timeoutMillis
- Timeout, in milliseconds, for waiting for this download to complete. Note that the timeout time will be approximate and is not strictly guaranteed. As a result this timeout should not be relied on in cases where exact precision is required.- Returns:
- A new
Download
object to use to check the state of the download, listen for progress notifications, and otherwise manage the download. - Throws:
AmazonClientException
- If any errors are encountered in the client while making the request or handling the response.AmazonServiceException
- If any errors occurred in Amazon S3 while processing the request.
-
download
public Download download(GetObjectRequest getObjectRequest, File file, com.amazonaws.services.s3.transfer.internal.S3ProgressListener progressListener) Schedules a new transfer to download data from Amazon S3 and save it to the specified file. This method is non-blocking and returns immediately (i.e. before the data has been fully downloaded).Use the returned Download object to query the progress of the transfer, add listeners for progress events, and wait for the download to complete.
If you are downloading 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
- Parameters:
getObjectRequest
- The request containing all the parameters for the download.file
- The file to download the object data to.progressListener
- An optional callback listener to get the progress of the download.- Returns:
- A new
Download
object to use to check the state of the download, listen for progress notifications, and otherwise manage the download. - Throws:
AmazonClientException
- If any errors are encountered in the client while making the request or handling the response.AmazonServiceException
- If any errors occurred in Amazon S3 while processing the request.
-
download
public Download download(GetObjectRequest getObjectRequest, File file, com.amazonaws.services.s3.transfer.internal.S3ProgressListener progressListener, long timeoutMillis) Schedules a new transfer to download data from Amazon S3 and save it to the specified file. This method is non-blocking and returns immediately (i.e. before the data has been fully downloaded).Use the returned Download object to query the progress of the transfer, add listeners for progress events, and wait for the download to complete.
If you are downloading 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
- Parameters:
getObjectRequest
- The request containing all the parameters for the download.file
- The file to download the object data to.progressListener
- An optional callback listener to get the progress of the download.timeoutMillis
- Timeout, in milliseconds, for waiting for this download to complete. Note that the timeout time will be approximate and is not strictly guaranteed. As a result this timeout should not be relied on in cases where exact precision is required.- Returns:
- A new
Download
object to use to check the state of the download, listen for progress notifications, and otherwise manage the download. - Throws:
AmazonClientException
- If any errors are encountered in the client while making the request or handling the response.AmazonServiceException
- If any errors occurred in Amazon S3 while processing the request.
-
downloadDirectory
public MultipleFileDownload downloadDirectory(String bucketName, String keyPrefix, File destinationDirectory) Downloads all objects in the virtual directory designated by the keyPrefix given to the destination directory given. All virtual subdirectories will be downloaded recursively.If you are downloading 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
- Parameters:
bucketName
- The bucket containing the virtual directorykeyPrefix
- The key prefix for the virtual directory, or null for the entire bucket. All subdirectories will be downloaded recursively.destinationDirectory
- The directory to place downloaded files. Subdirectories will be created as necessary.
-
uploadDirectory
public MultipleFileUpload uploadDirectory(String bucketName, String virtualDirectoryKeyPrefix, File directory, boolean includeSubdirectories) Uploads all files in the directory given to the bucket named, optionally recursing for all subdirectories.S3 will overwrite any existing objects that happen to have the same key, just as when uploading individual files, so use with caution.
If you are uploading 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
- Parameters:
bucketName
- The name of the bucket to upload objects to.virtualDirectoryKeyPrefix
- The key prefix of the virtual directory to upload to. Use the null or empty string to upload files to the root of the bucket.directory
- The directory to upload.includeSubdirectories
- Whether to include subdirectories in the upload. If true, files found in subdirectories will be included with an appropriate concatenation to the key prefix.
-
uploadDirectory
public MultipleFileUpload uploadDirectory(String bucketName, String virtualDirectoryKeyPrefix, File directory, boolean includeSubdirectories, ObjectMetadataProvider metadataProvider) Uploads all files in the directory given to the bucket named, optionally recursing for all subdirectories.S3 will overwrite any existing objects that happen to have the same key, just as when uploading individual files, so use with caution.
If you are uploading 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
- Parameters:
bucketName
- The name of the bucket to upload objects to.virtualDirectoryKeyPrefix
- The key prefix of the virtual directory to upload to. Use the null or empty string to upload files to the root of the bucket.directory
- The directory to upload.includeSubdirectories
- Whether to include subdirectories in the upload. If true, files found in subdirectories will be included with an appropriate concatenation to the key prefix.metadataProvider
- A callback of typeObjectMetadataProvider
which is used to provide metadata for each file being uploaded.
-
uploadFileList
public MultipleFileUpload uploadFileList(String bucketName, String virtualDirectoryKeyPrefix, File directory, List<File> files) Uploads all specified files to the bucket named, constructing relative keys depending on the commonParentDirectory given.S3 will overwrite any existing objects that happen to have the same key, just as when uploading individual files, so use with caution.
If you are uploading 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
- Parameters:
bucketName
- The name of the bucket to upload objects to.virtualDirectoryKeyPrefix
- The key prefix of the virtual directory to upload to. Use the null or empty string to upload files to the root of the bucket.directory
- The common parent directory of files to upload. The keys of the files in the list of files are constructed relative to this directory and the virtualDirectoryKeyPrefix.files
- A list of files to upload. The keys of the files are calculated relative to the common parent directory and the virtualDirectoryKeyPrefix.
-
uploadFileList
public MultipleFileUpload uploadFileList(String bucketName, String virtualDirectoryKeyPrefix, File directory, List<File> files, ObjectMetadataProvider metadataProvider) Uploads all specified files to the bucket named, constructing relative keys depending on the commonParentDirectory given.S3 will overwrite any existing objects that happen to have the same key, just as when uploading individual files, so use with caution.
If you are uploading 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
- Parameters:
bucketName
- The name of the bucket to upload objects to.virtualDirectoryKeyPrefix
- The key prefix of the virtual directory to upload to. Use the null or empty string to upload files to the root of the bucket.directory
- The common parent directory of files to upload. The keys of the files in the list of files are constructed relative to this directory and the virtualDirectoryKeyPrefix.files
- A list of files to upload. The keys of the files are calculated relative to the common parent directory and the virtualDirectoryKeyPrefix.metadataProvider
- A callback of typeObjectMetadataProvider
which is used to provide metadata for each file being uploaded.
-
abortMultipartUploads
public void abortMultipartUploads(String bucketName, Date date) throws AmazonServiceException, AmazonClientException Aborts any multipart uploads that were initiated before the specified date.
This method is useful for cleaning up any interrupted multipart uploads.
TransferManager
attempts to abort any failed uploads, but in some cases this may not be possible, such as if network connectivity is completely lost.- Parameters:
bucketName
- The name of the bucket containing the multipart uploads to abort.date
- The date indicating which multipart uploads should be aborted.- Throws:
AmazonServiceException
AmazonClientException
-
shutdownNow
public void shutdownNow()Forcefully shuts down this TransferManager instance - currently executing transfers will not be allowed to finish. It also by default shuts down the underlying Amazon S3 client.- See Also:
-
shutdownNow
public void shutdownNow(boolean shutDownS3Client) Forcefully shuts down this TransferManager instance - currently executing transfers will not be allowed to finish. Callers should use this method when they either:- have already verified that their transfers have completed by checking each transfer's state
- need to exit quickly and don't mind stopping transfers before they complete.
Callers should also remember that uploaded parts from an interrupted upload may not always be automatically cleaned up, but callers can use
abortMultipartUploads(String, Date)
to clean up any upload parts.- Parameters:
shutDownS3Client
- Whether to shut down the underlying Amazon S3 client.
-
appendSingleObjectUserAgent
-
appendMultipartUserAgent
-
copy
public Copy copy(String sourceBucketName, String sourceKey, String destinationBucketName, String destinationKey) throws AmazonServiceException, AmazonClientException Schedules a new transfer to copy data from one Amazon S3 location to another Amazon S3 location. This method is non-blocking and returns immediately (i.e. before the copy has finished).
TransferManager
doesn't support copying of encrypted objects whose encryption materials is stored in instruction file.Use the returned
Copy
object to check if the copy is complete.If resources are available, the copy request will begin immediately. Otherwise, the copy is scheduled and started as soon as resources become available.
- Parameters:
sourceBucketName
- The name of the bucket from where the object is to be copied.sourceKey
- The name of the Amazon S3 object.destinationBucketName
- The name of the bucket to where the Amazon S3 object has to be copied.destinationKey
- The name of the object in the destination bucket.- Returns:
- A new
Copy
object to use to check the state of the copy request being processed. - Throws:
AmazonClientException
- If any errors are encountered in the client while making the request or handling the response.AmazonServiceException
- If any errors occurred in Amazon S3 while processing the request.
-
copy
Schedules a new transfer to copy data from one Amazon S3 location to another Amazon S3 location. This method is non-blocking and returns immediately (i.e. before the copy has finished).
TransferManager
doesn't support copying of encrypted objects whose encryption materials is stored i instruction file.Use the returned
Copy
object to check if the copy is complete.If resources are available, the copy request will begin immediately. Otherwise, the copy is scheduled and started as soon as resources become available.
- Parameters:
copyObjectRequest
- The request containing all the parameters for the copy.- Returns:
- A new
Copy
object to use to check the state of the copy request being processed. - Throws:
AmazonClientException
- If any errors are encountered in the client while making the request or handling the response.AmazonServiceException
- If any errors occurred in Amazon S3 while processing the request.
-
copy
public Copy copy(CopyObjectRequest copyObjectRequest, com.amazonaws.services.s3.transfer.internal.TransferStateChangeListener stateChangeListener) throws AmazonServiceException, AmazonClientException Schedules a new transfer to copy data from one Amazon S3 location to another Amazon S3 location. This method is non-blocking and returns immediately (i.e. before the copy has finished).
TransferManager
doesn't support copying of encrypted objects whose encryption materials is stored in instruction file.Use the returned
Copy
object to check if the copy is complete.If resources are available, the copy request will begin immediately. Otherwise, the copy is scheduled and started as soon as resources become available.
- Parameters:
copyObjectRequest
- The request containing all the parameters for the copy.stateChangeListener
- The transfer state change listener to monitor the copy request- Returns:
- A new
Copy
object to use to check the state of the copy request being processed. - Throws:
AmazonClientException
- If any errors are encountered in the client while making the request or handling the response.AmazonServiceException
- If any errors occurred in Amazon S3 while processing the request.
-
resumeUpload
Resumes an upload operation. This upload operation uses the same configurationTransferManagerConfiguration
as the original upload. Any data already uploaded will be skipped, and only the remaining will be uploaded to Amazon S3.- Parameters:
persistableUpload
- the upload to resume.- Returns:
- A new
Upload
object to use to check the state of the upload, listen for progress notifications, and otherwise manage the upload. - Throws:
AmazonClientException
- If any errors are encountered in the client while making the request or handling the response.AmazonServiceException
- If any errors occurred in Amazon S3 while processing the request.
-
resumeDownload
Resumes an download operation. This download operation uses the same configuration as the original download. Any data already fetched will be skipped, and only the remaining data is retrieved from Amazon S3.- Parameters:
persistableDownload
- the download to resume.- Returns:
- A new
Download
object to use to check the state of the download, listen for progress notifications, and otherwise manage the download. - Throws:
AmazonClientException
- If any errors are encountered in the client while making the request or handling the response.AmazonServiceException
- If any errors occurred in Amazon S3 while processing the request.
-
finalize
Releasing all resources created byTransferManager
before it is being garbage collected.
-