

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.

# Überschreiben Sie die Service-Client-Konfiguration
<a name="override-client-config"></a>

Nachdem ein [Service-Client erstellt wurde](creating-clients.md), verwendet der Service-Client eine feste Konfiguration für alle Operationen. Manchmal müssen Sie jedoch möglicherweise die Konfiguration für einen oder mehrere bestimmte Operationen überschreiben.

Jeder Service-Client verfügt über eine `withConfig` Erweiterung, sodass Sie eine Kopie der vorhandenen Konfiguration ändern können. Die `withConfig` Erweiterung gibt einen neuen Service-Client mit einer geänderten Konfiguration zurück. Der ursprüngliche Client existiert unabhängig und verwendet seine ursprüngliche Konfiguration.

Das folgende Beispiel zeigt die Erstellung einer `S3Client` Instanz, die zwei Operationen aufruft.

```
val s3 = S3Client.fromEnvironment {
    logMode = LogMode.LogRequest
    region = "us-west-2"
    // ...other configuration settings...
}

s3.listBuckets { ... }
s3.listObjectsV2 { ... }
```

Der folgende Ausschnitt zeigt, wie die Konfiguration für einen einzelnen `listObjectV2` Vorgang überschrieben wird.

```
s3.withConfig {
    region = "eu-central-1"
}.use { overriddenS3 ->
    overriddenS3.listObjectsV2 { ... }
}
```

Die Operationsaufrufe auf dem `s3` Client verwenden die ursprüngliche Konfiguration, die bei der Erstellung des Clients angegeben wurde. Die Konfiguration umfasst die [Protokollierung von Anfragen](logging.md#sdk-log-mode) und `us-west-2 region` für die Region. 

Der `listObjectsV2` Aufruf auf dem `overriddenS3` Client verwendet dieselben Einstellungen wie auf dem ursprünglichen `s3` Client, mit Ausnahme der Region, die jetzt `eu-central-1` verfügbar ist.

## Lebenszyklus eines überschriebenen Clients
<a name="override-client-lifecycle"></a>

Im vorherigen Beispiel sind der `s3` Client und der `overriddenS3` Client unabhängig voneinander. Operationen können auf beiden Clients aufgerufen werden, solange sie geöffnet sind. Jeder verwendet eine separate Konfiguration, sie können jedoch die zugrunde liegenden Ressourcen (z. B. eine HTTP-Engine) gemeinsam nutzen, sofern diese nicht ebenfalls überschrieben werden. 

Sie schließen einen Client mit einer überschriebenen Konfiguration und den ursprünglichen Client getrennt. Sie können einen Client mit überschriebener Konfiguration vor oder nach dem Schließen seines ursprünglichen Clients schließen. Sofern Sie einen Client mit überschriebener Konfiguration nicht über einen längeren Zeitraum verwenden müssen, empfehlen wir, seinen Lebenszyklus mit dieser Methode abzuschließen. `use` Die `use` Methode stellt sicher, dass der Client geschlossen wird, falls Ausnahmen auftreten. 

## Ressourcen, die von Clients gemeinsam genutzt werden
<a name="override-client-shared-res"></a>

Wenn Sie einen Service-Client mithilfe von verwenden`withConfig`, teilt er sich möglicherweise Ressourcen mit dem ursprünglichen Client. Wenn Sie dagegen einen Client mithilfe von [FromEnvironment](creating-clients.md#loading-from-the-environment) erstellen oder [ihn explizit konfigurieren](creating-clients.md#programmatic-config), verwendet der Client unabhängige Ressourcen. Ressourcen wie HTTP-Engines und Anbieter von Anmeldeinformationen werden gemeinsam genutzt, sofern sie nicht im Block überschrieben werden. `withConfig` 

Da der Lebenszyklus jedes Clients unabhängig ist, bleiben gemeinsam genutzte Ressourcen geöffnet und nutzbar, bis der letzte Client geschlossen wird. Daher ist es wichtig, dass Sie Service-Clients schließen, die überschrieben wurden, wenn Sie sie nicht mehr benötigen. Dadurch wird verhindert, dass gemeinsam genutzte Ressourcen offen bleiben und Systemressourcen wie Speicher-, Verbindungs- und CPU-Zyklen verbrauchen.

Das folgende Beispiel zeigt sowohl gemeinsam genutzte als auch unabhängige Ressourcen.

Die `overriddenS3` Clients `s3` und die Clients verwenden dieselbe Credentials Provider-Instanz, einschließlich ihrer Caching-Konfiguration. Aufrufe, die mit `overriddenS3` Reuse Credentials getätigt wurden, wenn der zwischengespeicherte Wert noch aktuell ist und aus Aufrufen des `s3` Clients stammt.

 Die HTTP-Engine wird nicht von den beiden Clients gemeinsam genutzt. Jeder Client hat eine unabhängige HTTP-Engine, da diese beim Aufruf außer Kraft gesetzt wurde. `withConfig`

```
val s3 = S3Client.fromEnvironment {
    region = "us-west-2"
    credentialsProvider = CachedCredentialsProvider(CredentialsProviderChain(...))
    httpClientEngine = OkHttpEngine { ... }
}

s3.listBuckets { ... }

s3.withConfig {
    httpClientEngine = CrtHttpEngine { ... }
}.use { overriddenS3 ->
    overriddenS3.listObjectsV2 { ... }
}
```