Verwenden Sie einen leistungsstarken S3-Client: AWS CRT-basierter S3-Client - AWS SDK for Java 2.x

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden Sie einen leistungsstarken S3-Client: AWS CRT-basierter S3-Client

Der AWS CRT-basierte S3-Client, der auf AWSCommon Runtime (CRT) aufbaut, ist ein alternativer asynchroner S3-Client. Es überträgt Objekte zu und von Amazon Simple Storage Service (Amazon S3) mit verbesserter Leistung und Zuverlässigkeit, indem es automatisch die mehrteilige Upload-API und Bytebereichs-Abrufe von Amazon S3 verwendet.

Der AWS CRT-basierte S3-Client verbessert die Zuverlässigkeit der Übertragung im Falle eines Netzwerkausfalls. Die Zuverlässigkeit wird verbessert, indem einzelne fehlgeschlagene Teile einer Dateiübertragung erneut versucht werden, ohne die Übertragung von vorne neu zu starten.

Darüber hinaus bietet der AWS CRT-basierte S3-Client ein erweitertes Verbindungspooling und einen DNS-Lastenausgleich (Domain Name System), wodurch auch der Durchsatz verbessert wird.

Sie können den AWS CRT-basierten S3-Client anstelle des standardmäßigen asynchronen S3-Clients des SDK verwenden und sofort von seinem verbesserten Durchsatz profitieren.

AWSCRT-basierte Komponenten im SDK

Der AWS CRT-basierte S3-Client, der in diesem Thema beschrieben wird, und der AWS CRT-basierte HTTP-Client sind unterschiedliche Komponenten im SDK.

Der AWSCRT-basierte S3-Client ist eine Implementierung der AsyncClientS3-Schnittstelle und wird für die Arbeit mit dem Amazon S3 S3-Service verwendet. Es ist eine Alternative zur Java-basierten Implementierung der S3AsyncClient Schnittstelle und bietet mehrere Vorteile.

Der AWSCRT-basierte HTTP-Client ist eine Implementierung der SdkAsyncHttpClientSchnittstelle und wird für die allgemeine HTTP-Kommunikation verwendet. Es ist eine Alternative zur Netty-Implementierung der SdkAsyncHttpClient Schnittstelle und bietet mehrere Vorteile.

Obwohl beide Komponenten Bibliotheken aus der AWSCommon Runtime verwenden, verwendet der AWS CRT-basierte S3-Client die 3-Bibliothek und unterstützt die aws-c-s S3-Funktionen der mehrteiligen Upload-API. Da der AWS CRT-basierte HTTP-Client für allgemeine Zwecke vorgesehen ist, unterstützt er die API-Funktionen für mehrteilige Uploads von S3 nicht.

Fügen Sie Abhängigkeiten hinzu, um den CRT-basierten S3-Client zu verwenden AWS

Um den AWS CRT-basierten S3-Client zu verwenden, fügen Sie Ihrer Maven-Projektdatei die folgenden beiden Abhängigkeiten hinzu. Das Beispiel zeigt die Mindestversionen, die verwendet werden müssen. Suchen Sie im zentralen Maven-Repository nach den neuesten Versionen der s3 - und aws-crt-Artefakte.

<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>

Erstellen Sie eine Instanz des CRT-basierten S3-Clients AWS

Erstellen Sie eine Instanz des AWS CRT-basierten S3-Clients mit Standardeinstellungen, wie im folgenden Codeausschnitt gezeigt.

S3AsyncClient s3AsyncClient = S3AsyncClient.crtCreate();

Verwenden Sie den CRT-Client-Builder, um den AWS Client zu konfigurieren. Sie können vom standardmäßigen asynchronen S3-Client zum AWS CRT-basierten Client wechseln, indem Sie die Builder-Methode ändern.

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();
Anmerkung

Einige Einstellungen im Standard-Builder werden derzeit möglicherweise nicht im AWS CRT-Client-Builder unterstützt. Rufen Sie den Standard Builder an, indem Sie anrufenS3AsyncClient#builder().

Verwenden Sie den AWS CRT-basierten S3-Client

Verwenden Sie den AWS CRT-basierten S3-Client, um Amazon S3 S3-API-Operationen aufzurufen. Das folgende Beispiel zeigt die GetObjectOperationen PutObjectund, die über die verfügbar sind. 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();