View a markdown version of this page

Konfigurieren Sie HTTP-Clients in der AWS SDK for Java 2.x - 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.

Konfigurieren Sie HTTP-Clients in der AWS SDK for Java 2.x

Sie können den HTTP-Client ändern, der für Ihren Service-Client verwendet werden soll, sowie die Standardkonfiguration für HTTP-Clients mit dem ändern AWS SDK for Java 2.x. In diesem Abschnitt werden HTTP-Clients und Einstellungen für das SDK behandelt.

HTTP-Clients, die im SDK für Java verfügbar sind

Synchrone Clients

Synchrone HTTP-Clients im SDK für Java implementieren die SdkHttpClient Schnittstelle. Ein synchroner Service-Client wie der S3Client oder der erfordert die DynamoDbClient Verwendung eines synchronen HTTP-Clients. Der AWS SDK für Java bietet drei synchrone HTTP-Clients.

Apache5HttpClient (Standard)

Apache5HttpClientist eine aktualisierte Version davonApacheHttpClient, die auf dem Apache 5.x HttpClient basiert. Version 5.x ist die Version, die aktiv von Apache verwaltet wird. Sie verbessert die Vorgängerversion von, ApacheHttpClient indem sie moderne Java-Ökosystemkompatibilität bietet, einschließlich der Unterstützung virtueller Threads für Java 21 und einer verbesserten Logging-Flexibilität durch SLF4J. Apache5HttpClientwurde in der Version 2.46.0 des SDK für Java 2.x ApacheHttpClient als synchroner Standardclient ersetzt. AWS Es verfügt über eine identische API und identische Funktionen und eignet sich daher ideal als Drop-In-Ersatz. Hinweise zur Konfiguration von finden Sie Apache5HttpClient unterKonfiguration des Apache 5.x-basierten HTTP-Clients.

ApacheHttpClient
Anmerkung

ApacheHttpClientist veraltet, da sich Apache HttpClient 4.x im Wartungsmodus befindet. Verwenden Sie das auf Apache 5.x basierende HttpClient . Apache5HttpClient

ApacheHttpClientbasiert auf dem Apache HttpClient 4.x. Hinweise zur Konfiguration von finden Sie ApacheHttpClient unterDen Apache-based HTTP-Client konfigurieren.

AwsCrtHttpClient

AwsCrtHttpClientbietet einen hohen Durchsatz und blockierungsfreie I/O. Es basiert auf dem AWS Common Runtime (CRT) Http-Client. Hinweise zur Konfiguration AwsCrtHttpClient und Verwendung mit Service-Clients finden Sie unterAWS CRT-basierte HTTP-Clients konfigurieren.

UrlConnectionHttpClient

Um die Anzahl der von Ihrer Anwendung verwendeten JAR-Dateien und Bibliotheken von Drittanbietern zu minimieren, können Sie die verwenden UrlConnectionHttpClient. Hinweise zur Konfiguration von finden UrlConnectionHttpClient Sie unterDen URLConnection basierten HTTP-Client konfigurieren.

Asynchrone Clients

Asynchrone HTTP-Clients im SDK für Java implementieren die Schnittstelle. SdkAsyncHttpClient Ein asynchroner Service-Client wie der S3AsyncClient oder der erfordert die Verwendung eines asynchronen HTTP-Clients. DynamoDbAsyncClient Der AWS SDK für Java bietet zwei asynchrone HTTP-Clients.

NettyNioAsyncHttpClient (Standard)

NettyNioAsyncHttpClientist der Standard-HTTP-Client, der von asynchronen Clients verwendet wird. Hinweise zur Konfiguration von finden Sie unterNettyNioAsyncHttpClient. Den Netty-basierten HTTP-Client konfigurieren

AwsCrtAsyncHttpClient

Der AwsCrtAsyncHttpClient basiert auf dem AWS Common Runtime (CRT) -HTTP-Client. Hinweise zur Konfiguration von finden Sie AwsCrtAsyncHttpClient unterAWS CRT-basierte HTTP-Clients konfigurieren.

Empfehlungen für HTTP-Clients

Bei der Auswahl einer HTTP-Client-Implementierung spielen mehrere Faktoren eine Rolle. Verwenden Sie die folgenden Informationen, um Ihnen bei der Entscheidung zu helfen.

Vergleich des HTTP-Clients

Die folgende Tabelle enthält detaillierte Informationen für jeden HTTP-Client.

HTTP-Client Synchronisieren oder asynchron Wann sollte dies verwendet werden? Limitation/drawback
Auf Apache 5.x basierender HTTP-Client

(Standard-Synchronisierungs-HTTP-Client)

Synchronisierung Verwenden Sie ihn, wenn Sie eine niedrige Latenz einem hohen Durchsatz vorziehen Langsamere Startzeit im Vergleich zu anderen HTTP-Clients
URLConnection-based HTTP-Client Synchronisierung Verwenden Sie ihn, wenn Sie die Abhängigkeit von Drittanbietern unbedingt einschränken müssen

• Unterstützt nicht die HTTP-PATCH-Methode, die für einige APIs wie Amazon ApiGateway Update-Operationen erforderlich ist

• Unterstützt kein konfigurierbares Timeout bei inaktiven Verbindungen. Weitere Informationen finden Sie unter Den URLConnection-based HTTP-Client konfigurieren.

AWS CRT-based Synchronisieren Sie den HTTP-Client 1 Synchronisierung

• Verwenden Sie es, wenn Ihre Anwendung in läuft AWS Lambda

• Verwenden Sie es, wenn Sie einen hohen Durchsatz einer niedrigen Latenz vorziehen

• Verwenden Sie es, wenn Sie die Synchronisation von SDK-Clients bevorzugen

Die folgenden Java-Systemeigenschaften werden nicht unterstützt:

  • javax.net.ssl.Keystore

  • javax.net.ssl.key StorePassword

  • javax.net.ssl.TrustStore

  • javax.net.ssl.trust StorePassword

Netty-based HTTP-Client

(standardmäßiger asynchroner HTTP-Client)

Asynchron

• Verwenden Sie es, wenn Ihre Anwendung für die TLS-Konfiguration auf Java-Systemeigenschaften angewiesen ist (z. B.javax.net.ssl.keyStore)

Langsamere Startzeit im Vergleich zu anderen HTTP-Clients
AWS CRT-based asynchroner HTTP-Client 1 Asynchron

• Verwenden Sie es, wenn Ihre Anwendung in läuft AWS Lambda

• Verwenden Sie es, wenn Sie einen hohen Durchsatz einer niedrigen Latenz vorziehen

• Verwenden Sie es, wenn Sie asynchrone SDK-Clients bevorzugen

Die folgenden Java-Systemeigenschaften werden nicht unterstützt:

  • javax.net.ssl.Keystore

  • javax.net.ssl.key StorePassword

  • javax.net.ssl.TrustStore

  • javax.net.ssl.trust StorePassword

1 Aufgrund ihrer zusätzlichen Vorteile empfehlen wir, wenn möglich die HTTP-Clients zu verwenden. AWS CRT-based

Standardeinstellungen für intelligente Konfigurationen

Die AWS SDK for Java 2.x (Version 2.17.102 oder höher) bietet eine Funktion für intelligente Konfigurationsstandards. Diese Funktion optimiert zwei HTTP-Client-Eigenschaften zusammen mit anderen Eigenschaften, die sich nicht auf den HTTP-Client auswirken.

Die Standardwerte der intelligenten Konfiguration legen sinnvolle Werte für die tlsNegotiationTimeoutInMillis Eigenschaften connectTimeoutInMillis und fest, die auf einem von Ihnen angegebenen Standardmoduswert basieren. Sie wählen den Standardmoduswert auf der Grundlage der Eigenschaften Ihrer Anwendung aus.

Weitere Informationen zu den Standardwerten für intelligente Konfigurationen und zur Auswahl des Standardmoduswerts, der für Ihre Anwendungen am besten geeignet ist, finden Sie im Referenzhandbuch für AWS SDKs und Tools.

Im Folgenden finden Sie vier Möglichkeiten, den Standardmodus für Ihre Anwendung festzulegen.

Service client

Verwenden Sie den Service Client Builder, um den Standardmodus direkt auf dem Service Client zu konfigurieren. Das folgende Beispiel legt den Standardmodus auf auto für den fest. DynamoDbClient

DynamoDbClient ddbClient = DynamoDbClient.builder() .defaultsMode(DefaultsMode.AUTO) .build();
System property

Sie können die aws.defaultsMode Systemeigenschaft verwenden, um den Standardmodus anzugeben. Wenn Sie die Systemeigenschaft in Java festlegen, müssen Sie die Eigenschaft festlegen, bevor Sie einen Service-Client initialisieren.

Das folgende Beispiel zeigt, wie Sie den Standardmodus so einstellen, dass eine in Java festgelegte Systemeigenschaft auto verwendet wird.

System.setProperty("aws.defaultsMode", "auto");

Das folgende Beispiel zeigt, wie Sie den Standardmodus auto mithilfe einer -D Option des java Befehls auf einstellen.

java -Daws.defaultsMode=auto
Environment variable

Legen Sie einen Wert für die Umgebungsvariable festAWS_DEFAULTS_MODE, um den Standardmodus für Ihre Anwendung auszuwählen.

Die folgenden Informationen zeigen den Befehl, der ausgeführt werden muss, um den Wert für den Standardmodus auf die auto Verwendung einer Umgebungsvariablen festzulegen.

Betriebssystem Befehl zum Setzen von Umgebungsvariablen

Linux, macOS oder Unix

export AWS_DEFAULTS_MODE=auto

Windows

set AWS_DEFAULTS_MODE=auto
AWS config file

Sie können der gemeinsam genutzten AWS config Datei eine defaults_mode Konfigurationseigenschaft hinzufügen, wie das folgende Beispiel zeigt.

[default] defaults_mode = auto

Wenn Sie den Standardmodus global mit der Systemeigenschaft, der Umgebungsvariablen oder der AWS Konfigurationsdatei festlegen, können Sie die Einstellungen beim Erstellen eines HTTP-Clients außer Kraft setzen.

Wenn Sie einen HTTP-Client mit der httpClientBuilder() Methode erstellen, gelten die Einstellungen nur für die Instanz, die Sie erstellen. Ein Beispiel dafür wird hier gezeigt. Der Netty-based HTTP-Client in diesem Beispiel überschreibt alle Standardmoduswerte, die global für connectTimeoutInMillis und tlsNegotiationTimeoutInMillis festgelegt wurden.