README.md
1**Design:** New Feature, **Status:**
2[In Development](../../../README.md)
3
4# Project Tenets (unless you know better ones)
5
61. Meeting customers in their problem space allows them to deliver value
7 quickly.
82. Meeting customer expectations drives usability.
93. Discoverability drives usage.
10
11# Introduction
12
13This project provides a much improved experience for S3 customers needing to
14easily perform uploads and downloads of objects to and from S3 by providing the
15S3 `S3TransferManager`, a high level library built on the S3 client.
16
17# Project Goals
18
191. For the use cases it addresses, i.e. the transfer of objects to and from S3,
20 S3TransferManager is the preferred solution. It is easier and more intuitive
21 than using the S3 client. In the majority of situations, it is more
22 performant.
231. S3TransferManager provides a truly asynchronous, non-blocking API that
24 conforms to the norms present in the rest of the SDK.
251. S3TransferManager makes efficient use of system resources.
261. S3TransferManager supplements rather than replaces the lower level S3 client.
27
28# Non Project Goals
29
301. Ability to use the blocking, synchronous client.
31
32 Using a blocking client would severely impede the ability to deliver on goals
33 #2 and #3.
34
35# Customer-Requested Changes from 1.11.x
36
37* S3TransferManager supports progress listeners that are easier to use.
38
39 Ref: https://github.com/aws/aws-sdk-java-v2/issues/37#issuecomment-316218667
40
41* S3TransferManager provides bandwidth limiting of uploads and downloads.
42
43 Ref: https://github.com/aws/aws-sdk-java/issues/1103
44
45* The size of resources used by Transfermanager and configured by the user
46 should not affect its stability.
47
48 For example, the configured size of a threadpool should be irrelevant to its
49 ability to successfully perform an operation.
50
51 Ref: https://github.com/aws/aws-sdk-java/issues/939
52
53* S3TransferManager supports parallel downloads of any object.
54
55 Any object stored in S3 should be downloadable in multiple parts
56 simultaneously, not just those uploaded using the Multipart API.
57
58* S3TransferManager has the ability to upload to and download from a pre-signed
59 URL.
60
61* S3TransferManager allows uploads and downloads from and to memory.
62
63 Ref: https://github.com/aws/aws-sdk-java/issues/474
64
65* Ability to easily use canned ACL policies with all transfers to S3.
66
67 Ref: https://github.com/aws/aws-sdk-java/issues/1207
68
69* Trailing checksums for parallel uploads and downloads.
70