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