Modifiche in Amazon S3 Transfer Manager dalla versione 1 alla versione 2 - AWS SDK for Java 2.x

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Modifiche in Amazon S3 Transfer Manager dalla versione 1 alla versione 2

Questo argomento descrive in dettaglio le modifiche in Amazon S3 Transfer Manager dalla versione 1 (v1) alla versione 2 (v2).

Modifiche di alto livello

Modifica v1 v2

Dipendenze da Maven

<dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-bom</artifactId> <version>1.12.5871</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> </dependency> </dependencies>
<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.21.212</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3-transfer-manager</artifactId> </dependency> <dependency> <groupId>software.amazon.awssdk.crt</groupId> <artifactId>aws-crt</artifactId> <version>0.28.73</version> </dependency> </dependencies>
Nome pacchetto com.amazonaws.services.s3.transfer software.amazon.awssdk.transfer.s3
Class name (Nome classe)

TransferManager

S3TransferManager

1 Ultima versione. 2 Ultima versione. 3 Ultima versione.

Modifiche all'API di configurazione

Impostazione v1 v2

(procurati un builder)

TransferManagerBuilder tmBuilder = TransferManagerBuilder.standard();
S3TransferManager.Builder tmBuilder = S3TransferManager.builder();

Client S3

tmBuilder.withS3Client(...); tmBuilder.setS3Client(...);
tmBuilder.s3Client(...);

Esecutore

tmBuilder.withExecutorFactory(...); tmBuilder.setExecutorFactory(...);
tmBuilder.executor(...);

Chiudi i pool di thread

tmBuilder.withShutDownThreadPools(...); tmBuilder.setShutdownThreadPools(...);
Non supportato. L'executor fornito non verrà spento quando S3 viene chiuso TransferManager

Dimensione minima della parte da caricare

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.crtBuilder(). minimumPartSizeInBytes(...).build(); tmBuilder.s3Client(s3);

Soglia di caricamento in più parti

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.crtBuilder(). thresholdInBytes(...).build(); tmBuilder.s3Client(s3);

Dimensione minima della parte di copia

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.crtBuilder(). minimumPartSizeInBytes(...).build(); tmBuilder.s3Client(s3);

Soglia di copia in più parti

tmBuilder.withMinimumUploadPartSize(...); tmBuilder.setMinimumUploadPartSize(...);
S3AsyncClient s3 = S3AsyncClient.crtBuilder(). thresholdInBytes(...).build(); tmBuilder.s3Client(s3);

Disattiva i download paralleli

tmBuilder.withDisableParallelDownloads(...); tmBuilder.setDisableParallelDownloads(...);
Disabilita i download paralleli passando un client S3 standard basato su Java al gestore di trasferimento.
S3AsyncClient s3 = S3AsyncClient.builder().build(); tmBuilder.s3Client(s3);

Calcola sempre md5 multipart

tmBuilder.withAlwaysCalculateMultipartMd5(...); tmBuilder.setAlwaysCalculateMultipartMd5(...);
Non supportato.

Modifiche al comportamento

Il trasferimento parallelo richiede un client S3 AWS basato su CRT

Nell'SDK for Java 2.x, la funzionalità di trasferimento parallelo automatico (caricamento/download in più parti) è disponibile tramite il client S3 basato su CRT.AWS Per abilitare la funzionalità di trasferimento parallelo, è necessario aggiungere esplicitamente la dipendenza della libreria AWS Common Runtime (CRT) per massimizzare le prestazioni.

Il solo client S3 AWS basato su CRT, senza utilizzo, offre prestazioni massimizzate dei trasferimenti S3TransferManager paralleli. S3TransferManagerv2 fornisce API aggiuntive che semplificano il trasferimento di file e directory.

La capacità di S3TransferManager eseguire trasferimenti paralleli dipende dalla modalità S3TransferManager di avvio e dal fatto che la libreria AWS Common Runtime (CRT) sia stata dichiarata come dipendenza.

La tabella seguente descrive tre scenari di inizializzazione per una versione S3TransferManager v2 con e senza il AWS CRT dichiarato come dipendenza.

Approccio di inizializzazione S3 v2 TransferManager AWS CRT è dichiarato come dipendenza?
no

Inizializza il S3TransferManager senza passare un'istanza S3AsyncClient

Metodo di creazione statico:

S3TransferManager.create();

- O -

Metodo Builder:

S3TransferManager.builder().build();
Un segno di spunta verde che indica che il trasferimento parallelo automatico è abilitato.

trasferimento parallelo automatico abilitato

Una X rossa che indica che il trasferimento parallelo automatico è disabilitato.

trasferimento parallelo automatico disabilitato

Passa un'S3AsyncClientistanza creata con uno dei metodi del generatore crt* ()

S3AsyncClient s3AsyncClient = S3AsyncClient.crtBuilder().build(); S3TransferManager.builder().s3AsyncClient(s3AsyncClient).build();

- O -

S3AsyncClient s3AsyncClient = S3AsyncClient.crtCreate(); S3TransferManager.builder().s3AsyncClient(s3AsyncClient).build();
Un segno di spunta verde che indica che il trasferimento parallelo automatico è abilitato.

trasferimento parallelo automatico abilitato

Una X rossa che indica che il trasferimento parallelo automatico è disabilitato.

errore di runtime

Passa un'S3AsyncClientistanza creata con uno dei metodi di creazione standard in modo che il gestore dei trasferimenti non abbia alcun riferimento al CRT

S3AsyncClient s3AsyncClient = S3AsyncClient.builder().build(); S3TransferManager.builder().s3AsyncClient(s3AsyncClient).build();

- O -

S3AsyncClient s3AsyncClient = S3AsyncClient.create(); S3TransferManager.builder().s3AsyncClient(s3AsyncClient).build();
Una X rossa che indica che il trasferimento parallelo automatico è disabilitato.

trasferimento parallelo automatico disabilitato

Una X rossa che indica che il trasferimento parallelo automatico è disabilitato.

trasferimento parallelo automatico disabilitato

Download parallelo tramite recuperi a intervalli di byte

Quando la funzione di trasferimento parallelo automatico è abilitata, S3 Transfer Manager v2 utilizza recuperi a intervalli di byte per recuperare parti specifiche dell'oggetto in parallelo (download in più parti). Il modo in cui un oggetto viene scaricato con v2 non dipende da come l'oggetto è stato originariamente caricato. Tutti i download possono trarre vantaggio da un throughput e da una concorrenza elevati.

Al contrario, con S3 Transfer Manager v1, è importante il modo in cui l'oggetto è stato originariamente caricato. S3 Transfer Manager v1 recupera le parti dell'oggetto nello stesso modo in cui le parti sono state caricate. Se un oggetto è stato originariamente caricato come oggetto singolo, S3 Transfer Manager v1 non è in grado di accelerare il processo di download utilizzando richieste secondarie.

Comportamento di errore

Con S3 Transfer Manager v1, una richiesta di trasferimento di directory fallisce se una delle sottorichieste fallisce. A differenza della versione 1, le future restituite da S3 Transfer Manager v2 vengono completate correttamente anche se alcune richieste secondarie falliscono.

Di conseguenza, è necessario verificare la presenza di errori nella risposta utilizzando il CompletedDirectoryDownload.failedTransfers()metodo o il CompletedDirectoryUpload.failedTransfers()metodo anche quando il futuro viene completato correttamente.