Usa un client S3 performante: client S3 basato su AWS CRT - 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à.

Usa un client S3 performante: client S3 basato su AWS CRT

Il client S3 AWS basato su CRT, basato su AWSCommon Runtime (CRT), è un client asincrono S3 alternativo. Trasferisce oggetti da e verso Amazon Simple Storage Service (Amazon S3) con prestazioni e affidabilità migliorate utilizzando automaticamente l'API di caricamento multiparte e i recuperi per intervallo di byte di Amazon S3.

Il client S3 AWS basato su CRT migliora l'affidabilità del trasferimento in caso di guasto della rete. L'affidabilità è migliorata riprovando le singole parti non riuscite di un trasferimento di file senza riavviare il trasferimento dall'inizio.

Inoltre, il client S3 AWS basato su CRT offre un pool di connessioni avanzato e un bilanciamento del carico DNS (Domain Name System), che migliora anche la velocità effettiva.

Puoi utilizzare il client S3 AWS basato su CRT al posto del client asincrono S3 standard dell'SDK e sfruttare subito il suo throughput migliorato.

AWSComponenti basati su CRT nell'SDK

Il client S3 AWS basato su CRT, descritto in questo argomento, e il client HTTP AWS basato su CRT sono componenti diversi dell'SDK.

Il client S3 AWS basato su CRT è un'implementazione dell'AsyncClientinterfaccia S3 e viene utilizzato per lavorare con il servizio Amazon S3. È un'alternativa all'implementazione dell'interfaccia basata su Java e offre diversi vantaggi. S3AsyncClient

Il client HTTP AWS basato su CRT è un'implementazione dell'SdkAsyncHttpClientinterfaccia e viene utilizzato per la comunicazione HTTP generale. È un'alternativa all'implementazione Netty dell'SdkAsyncHttpClientinterfaccia e offre diversi vantaggi.

Sebbene entrambi i componenti utilizzino librerie di AWSCommon Runtime, il client S3 AWS basato su CRT utilizza la libreria aws-c-s 3 e supporta le funzionalità dell'API di caricamento multipart S3. Poiché il client HTTP AWS basato su CRT è pensato per un uso generico, non supporta le funzionalità dell'API di caricamento multipart S3.

Aggiungi dipendenze per utilizzare il client S3 basato su CRT AWS

Per utilizzare il client S3 AWS basato su CRT, aggiungi le seguenti due dipendenze al tuo file di progetto Maven. L'esempio mostra le versioni minime da utilizzare. Cerca nel repository centrale di Maven le versioni più recenti degli artefatti s3 e aws-crt.

<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> <version>2.20.68</version> </dependency> <dependency> <groupId>software.amazon.awssdk.crt</groupId> <artifactId>aws-crt</artifactId> <version>0.21.16</version> </dependency>

Crea un'istanza AWS del client S3 basato su CRT

Crea un'istanza del client S3 AWS basato su CRT con le impostazioni predefinite, come mostrato nel seguente frammento di codice.

S3AsyncClient s3AsyncClient = S3AsyncClient.crtCreate();

Per configurare il client, utilizzate il generatore di client CRT. AWS È possibile passare dal client asincrono S3 standard al client basato su AWS CRT modificando il metodo del generatore.

import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3AsyncClient; S3AsyncClient s3AsyncClient = S3AsyncClient.crtBuilder() .credentialsProvider(DefaultCredentialsProvider.create()) .region(Region.US_WEST_2) .targetThroughputInGbps(20.0) .minimumPartSizeInBytes(8 * 1025 * 1024L) .build();
Nota

Alcune impostazioni del generatore standard potrebbero non essere attualmente supportate nel generatore del client CRT. AWS Scarica lo standard builder chiamando. S3AsyncClient#builder()

Usa il client S3 AWS basato su CRT

Usa il client S3 AWS basato su CRT per chiamare le operazioni dell'API Amazon S3. L'esempio seguente illustra le operazioni PutObjecte GetObjectdisponibili tramite. AWS SDK for Java

import software.amazon.awssdk.core.async.AsyncRequestBody; import software.amazon.awssdk.core.async.AsyncResponseTransformer; import software.amazon.awssdk.services.s3.S3AsyncClient; import software.amazon.awssdk.services.s3.model.GetObjectResponse; import software.amazon.awssdk.services.s3.model.PutObjectResponse; S3AsyncClient s3Client = S3AsyncClient.crtCreate(); // Upload a local file to Amazon S3. PutObjectResponse putObjectResponse = s3Client.putObject(req -> req.bucket(<BUCKET_NAME>) .key(<KEY_NAME>), AsyncRequestBody.fromFile(Paths.get(<FILE_NAME>))) .join(); // Download an object from Amazon S3 to a local file. GetObjectResponse getObjectResponse = s3Client.getObject(req -> req.bucket(<BUCKET_NAME>) .key(<KEY_NAME>), AsyncResponseTransformer.toFile(Paths.get(<FILE_NAME>))) .join();