

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
<a name="crt-based-s3-client"></a>

Der AWS CRT-basierte S3-Client, der auf [AWS Common Runtime (CRT)](https://docs.aws.amazon.com/sdkref/latest/guide/common-runtime.html) 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html) und [Bytebereichs-Abrufe](https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance-guidelines.html#optimizing-performance-guidelines-get-range) 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.

**Wichtig**  
Der AWS CRT-basierte S3-Client unterstützt derzeit weder die [Erfassung von SDK-Metriken auf Client- noch auf Anforderungsebene](metrics.md).

**AWS CRT-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 **AWS CRT-basierte S3-Client** ist eine Implementierung der [AsyncClientS3-Schnittstelle](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html) 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 [AWS CRT-basierte HTTP-Client](http-configuration-crt.md) ist eine Implementierung der [SdkAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/async/SdkAsyncHttpClient.html)Schnittstelle 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 [AWS Common Runtime](https://docs.aws.amazon.com/sdkref/latest/guide/common-runtime.html) verwenden, verwendet der AWS CRT-basierte S3-Client die [3-Bibliothek](https://github.com/awslabs/aws-c-s3) und unterstützt die aws-c-s [S3-Funktionen der mehrteiligen Upload-API](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html). 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
<a name="crt-based-s3-client-depend"></a>

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 zu verwendenden Mindestversionen. Suchen Sie im zentralen Maven-Repository nach den neuesten Versionen der [s3](https://central.sonatype.com/artifact/software.amazon.awssdk/s3) - und [aws-crt-Artefakte](https://central.sonatype.com/artifact/software.amazon.awssdk.crt/aws-crt).

```
<dependency>
  <groupId>software.amazon.awssdk</groupId>
  <artifactId>s3</artifactId>
  <version>2.27.21</version>
</dependency>
<dependency>
  <groupId>software.amazon.awssdk.crt</groupId>
  <artifactId>aws-crt</artifactId>
  <version>0.30.11</version>
</dependency>
```

## Erstellen Sie eine Instanz des CRT-basierten S3-Clients AWS
<a name="crt-based-s3-client-create"></a>

 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 `S3AsyncClient#builder()` Sie den Standard Builder an.

## Verwenden Sie den AWS CRT-basierten S3-Client
<a name="crt-based-s3-client-use"></a>

Verwenden Sie den AWS CRT-basierten S3-Client, um Amazon S3 S3-API-Operationen aufzurufen. Das folgende Beispiel zeigt die [GetObject](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html#getObject(java.util.function.Consumer,software.amazon.awssdk.core.async.AsyncResponseTransformer))Operationen [PutObject](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html#putObject(java.util.function.Consumer,software.amazon.awssdk.core.async.AsyncRequestBody))und, die über die verfügbar sind. AWS SDK für 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();
```

## Streams unbekannter Größe werden hochgeladen
<a name="crt-stream-unknown-size"></a>

Ein wesentlicher Vorteil des AWS AWS CRT-basierten S3-Clients ist seine Fähigkeit, Eingabestreams unbekannter Größe effizient zu verarbeiten. Dies ist besonders nützlich, wenn Sie Daten aus einer Quelle hochladen müssen, bei der die Gesamtgröße nicht im Voraus bestimmt werden kann.

```
public PutObjectResponse crtClient_stream_unknown_size(String bucketName, String key, InputStream inputStream) {

    S3AsyncClient s3AsyncClient = S3AsyncClient.crtCreate();
    ExecutorService executor = Executors.newSingleThreadExecutor();
    AsyncRequestBody body = AsyncRequestBody.fromInputStream(inputStream, null, executor);  // 'null' indicates that the
                                                                                            // content length is unknown.
    CompletableFuture<PutObjectResponse> responseFuture =
            s3AsyncClient.putObject(r -> r.bucket(bucketName).key(key), body)
                    .exceptionally(e -> {
                        if (e != null){
                            logger.error(e.getMessage(), e);
                        }
                        return null;
                    });

    PutObjectResponse response = responseFuture.join(); // Wait for the response.
    executor.shutdown();
    return response;
}
```

Diese Funktion hilft dabei, häufig auftretende Probleme bei herkömmlichen Uploads zu vermeiden, bei denen eine falsche Angabe der Inhaltslänge zu verkürzten Objekten oder fehlgeschlagenen Uploads führen kann.

## Einschränkungen der Konfiguration
<a name="crt-based-s3-client-limitations"></a>

Der AWS CRT-basierte S3-Client und der Java-basierte asynchrone S3-Client [bieten vergleichbare Funktionen, wobei der CRT-basierte S3-Client einen](examples-s3.md#s3-clients) Leistungsvorteil bietet. AWS Dem AWS CRT-basierten S3-Client fehlen jedoch die Konfigurationseinstellungen, über die der Java-basierte asynchrone S3-Client verfügt. Diese Einstellungen umfassen Folgendes:
+ *Konfiguration auf Clientebene:* Timeout für API-Aufrufversuche, Interzeptoren für die Ausführung von Komprimierung, Herausgeber von Metriken, benutzerdefinierte Ausführungsattribute, benutzerdefinierte erweiterte Optionen, benutzerdefinierter geplanter Ausführungsdienst, benutzerdefinierte Header
+ *Konfiguration auf Anforderungsebene*: benutzerdefinierte Unterzeichner, Timeout für API-Aufrufversuche

Eine vollständige Liste der Konfigurationsunterschiede finden Sie in der API-Referenz.


| Java-basierter asynchroner S3-Client | AWS CRT-basierter S3-Client | 
| --- | --- | 
| Konfigurationen auf Client-Ebene[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sdk-for-java/latest/developer-guide/crt-based-s3-client.html)Konfigurationen auf Anforderungsebene[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sdk-for-java/latest/developer-guide/crt-based-s3-client.html) | Konfigurationen auf Client-Ebene[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sdk-for-java/latest/developer-guide/crt-based-s3-client.html)Konfigurationen auf Anforderungsebene[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sdk-for-java/latest/developer-guide/crt-based-s3-client.html) | 