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 S3S3AsyncClient
Il client HTTP AWS basato su CRT è un'implementazione dell'SdkAsyncHttpClientSdkAsyncHttpClient
interfaccia 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à
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
<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 PutObject
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();