View a markdown version of this page

Arbeiten Sie mit Amazon S3 - 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.

Arbeiten Sie mit Amazon S3

Dieser Abschnitt enthält Hintergrundinformationen für die Arbeit mit Amazon S3 mithilfe von AWS SDK for Java 2.x. Dieser Abschnitt ergänzt die Amazon S3 Java v2-Beispiele, die im Abschnitt Codebeispiele dieses Handbuchs vorgestellt werden.

S3-Clients in der AWS SDK for Java 2.x

Das AWS SDK for Java 2.x bietet verschiedene Arten von S3-Clients. Die folgende Tabelle zeigt die Unterschiede und kann Ihnen bei der Entscheidung helfen, was für Ihre Anwendungsfälle am besten geeignet ist.

Verschiedene Varianten von Amazon S3 S3-Clients
S3-Klient Kurzbeschreibung Wann sollte dies verwendet werden? Limitation/drawback

AWS CRT-based S3-Klient

Schnittstelle: S3AsyncClient

Baumeister: S3CrtAsyncClientBuilder

  • Bietet dieselben asynchronen API-Operationen wie der asynchrone Java-based S3-Client, jedoch mit höherer Leistung.

  • Erfordert die Abhängigkeitaws-crt.

  • Unterstützt automatische parallel Übertragungen (mehrteilig).

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

  • Ihre Anwendung überträgt große Objekte (> 8 MB) und Sie möchten die Leistung maximieren.

  • Sie möchten Objekte mit unbekannter Inhaltslänge hochladen.

  • Sie möchten das Verbindungspooling und den DNS-Lastenausgleich verbessern, wodurch der Durchsatz und die Leistung verbessert werden.

  • Sie möchten die Zuverlässigkeit der Übertragung im Falle eines Netzwerkausfalls verbessern. Einzelne fehlerhafte Teile werden erneut versucht, ohne die Übertragung von Anfang an neu zu starten.

Java-based Asynchroner S3-Client mit aktiviertem Multipart

Schnittstelle: S3AsyncClient

Baumeister: S3AsyncClientBuilder

  • Stellt eine asynchrone API bereit.

  • Unterstützt automatische parallel Übertragungen (Multipart), wenn Sie Multipart bei der Erstellung aktivieren.

Siehe Konfigurieren Sie den Java-basierten asynchronen S3-Client für parallel Übertragungen.

  • Ihre Anwendung überträgt große Objekte und Sie möchten die Leistung verbessern.

  • Sie möchten ein Objekt mit unbekannter Inhaltslänge hochladen.

  • Sie möchten die Zuverlässigkeit der Übertragung bei einem Netzwerkausfall verbessern. Einzelne fehlerhafte Teile werden erneut versucht, ohne die Übertragung von Anfang an neu zu starten.

  • Sie benötigen Konfigurationsoptionen, die mit dem AWS CRT-based S3-Client nicht verfügbar sind.

Weniger performant als der AWS CRT-based S3-Client.

Java-based Asynchroner S3-Client ohne aktiviertes Multipart

Schnittstelle: S3AsyncClient

Baumeister: S3AsyncClientBuilder

  • Stellt eine asynchrone API bereit.

  • Sie übertragen Objekte, die weniger als 8 MB groß sind.

  • Sie möchten eine asynchrone API.

Keine Leistungsoptimierung.

Java-based S3-Synchronisierungsclient

Schnittstelle: S3Client

Baumeister: S3ClientBuilder

  • Stellt eine synchrone API bereit.

  • Sie übertragen Objekte, die weniger als 8 MB groß sind.

  • Sie möchten eine synchrone API.

Keine Leistungsoptimierung.

Anmerkung

Ab Version 2.18.x AWS SDK for Java 2.x verwendet der eine Adressierung im virtuellen Hosting-Stil, wenn eine Endpunktüberschreibung enthalten ist. Dies gilt, solange der Bucket-Name ein gültiges DNS-Label ist.

Rufen Sie die forcePathStyleMethode with true in Ihrem Client Builder auf, um den Client zu zwingen, die Pfadadressierung für Buckets zu verwenden.

Das folgende Beispiel zeigt einen Service-Client, der mit einer Endpunktüberschreibung konfiguriert ist und eine Pfadadressierung verwendet.

S3Client client = S3Client.builder() .region(Region.US_WEST_2) .endpointOverride(URI.create("https://s3.us-west-2.amazonaws.com")) .forcePathStyle(true) .build();