View a markdown version of this page

Configurare i client HTTP nel AWS SDK for Java 2.x - AWS SDK for Java 2.x

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurare i client HTTP nel AWS SDK for Java 2.x

È possibile modificare il client HTTP da utilizzare per il client di servizio e modificare la configurazione predefinita per i client HTTP con AWS SDK for Java 2.x. Questa sezione illustra i client HTTP e le impostazioni per l'SDK.

Client HTTP disponibili nell'SDK per Java

Client sincroni

I client HTTP sincroni nell'SDK per Java implementano l'interfaccia. SdkHttpClient Un client di servizio sincrono, come S3Client o theDynamoDbClient, richiede l'uso di un client HTTP sincrono. AWS SDK per Java Offre tre client HTTP sincroni.

Apache5HttpClient (impostazione predefinita)

Apache5HttpClientè una versione aggiornata di ApacheHttpClient Apache HttpClient 5.x. La versione 5.x è la versione gestita attivamente da Apache e migliora la versione precedente utilizzata ApacheHttpClient da apportando la moderna compatibilità dell'ecosistema Java, incluso il supporto dei thread virtuali per Java 21 e una maggiore flessibilità di registrazione tramite SLF4J. Apache5HttpClientsostituito ApacheHttpClient come client sincrono predefinito nella versione 2.46.0 dell'SDK per Java 2.x. AWS Ha un'API e funzionalità identiche, che lo rendono ideale come sostituto immediato. Per informazioni sulla configurazione di, vedere. Apache5HttpClient Configurare il client HTTP basato su Apache 5.x

ApacheHttpClient
Nota

ApacheHttpClientè obsoleto perché Apache HttpClient 4.x è in modalità di manutenzione. Usa la versione basata su Apache 5.x. HttpClient Apache5HttpClient

ApacheHttpClientè basato su Apache 4.x. HttpClient Per informazioni sulla configurazione di, vedere. ApacheHttpClient Configurare il client Apache-based HTTP

AwsCrtHttpClient

AwsCrtHttpClientfornisce un throughput elevato e un IO non bloccante. È basato sul client Http AWS Common Runtime (CRT). Per informazioni sulla configurazione AwsCrtHttpClient e sull'utilizzo con i client di servizio, vedere. Configurazione AWS dei client HTTP basati su CRT

UrlConnectionHttpClient

Per ridurre al minimo il numero di jar e librerie di terze parti utilizzate dall'applicazione, è possibile utilizzare. UrlConnectionHttpClient Per informazioni sulla configurazione diUrlConnectionHttpClient, vedere. Configurare il client HTTP URLConnection basato

Client asincroni

I client HTTP asincroni nell'SDK per Java implementano l'interfaccia. SdkAsyncHttpClient Un client di servizio asincrono, come S3AsyncClient o the, richiede l'uso di un client HTTP DynamoDbAsyncClient asincrono. Offre AWS SDK per Java due client HTTP asincroni.

NettyNioAsyncHttpClient (impostazione predefinita)

NettyNioAsyncHttpClientè il client HTTP predefinito utilizzato dai client asincroni. Per informazioni sulla configurazione di, vedere. NettyNioAsyncHttpClient Configurazione del client HTTP basato su Netty

AwsCrtAsyncHttpClient

AwsCrtAsyncHttpClientSi basa sul client HTTP AWS Common Runtime (CRT). Per informazioni sulla configurazione diAwsCrtAsyncHttpClient, vedere. Configurazione AWS dei client HTTP basati su CRT

Consigli per i client HTTP

Quando si sceglie un'implementazione del client HTTP entrano in gioco diversi fattori. Utilizzate le seguenti informazioni per aiutarvi a decidere.

Confronto tra client HTTP

La tabella seguente fornisce informazioni dettagliate per ogni client HTTP.

Client HTTP Sincronizzazione o asincrono Quando utilizzarlo Limitation/drawback
Client HTTP basato su Apache 5.x

(client HTTP di sincronizzazione predefinito)

Sync Usalo se preferisci una latenza bassa rispetto a un throughput elevato Tempo di avvio più lento rispetto ad altri client HTTP
URLConnection-based Client HTTP Sync Usalo se hai un requisito rigido per limitare le dipendenze di terze parti

• Non supporta il metodo HTTP PATCH, richiesto da alcune API come le operazioni di Amazon APIGateway Update

• Non supporta un timeout di connessione inattiva configurabile. Per ulteriori informazioni, vedere Configurare il client URLConnection-based HTTP.

AWS CRT-based sincronizzare il client HTTP 1 Sync

• Usalo se l'applicazione è in esecuzione AWS Lambda

• Usalo se preferisci un throughput elevato rispetto a una bassa latenza

• Usalo se preferisci i client SDK di sincronizzazione

Le seguenti proprietà del sistema Java non sono supportate:

  • javax.net.ssl.keystore

  • chiave javax.net.ssl.key StorePassword

  • javax.net.ssl.truststore

  • javax.net.ssl.trust StorePassword

Netty-based Client HTTP

(client HTTP asincrono predefinito)

Asincrono

• Usalo se l'applicazione si basa sulle proprietà del sistema Java per la configurazione TLS (ad esempio) javax.net.ssl.keyStore

Tempo di avvio più lento rispetto ad altri client HTTP
AWS CRT-based client HTTP asincrono 1 Asincrono

• Usalo se l'applicazione è in esecuzione AWS Lambda

• Usalo se preferisci un throughput elevato rispetto a una bassa latenza

• Usalo se preferisci i client SDK asincroni

Le seguenti proprietà del sistema Java non sono supportate:

  • javax.net.ssl.keystore

  • chiave javax.net.ssl.key StorePassword

  • javax.net.ssl.truststore

  • javax.net.ssl.trust StorePassword

1 A causa dei loro vantaggi aggiuntivi, ti consigliamo di utilizzare i client HTTP, se possibile. AWS CRT-based

Impostazioni predefinite di configurazione intelligenti

La AWS SDK for Java 2.x (versione 2.17.102 o successiva) offre una funzionalità di configurazione intelligente per le impostazioni predefinite. Questa funzionalità ottimizza due proprietà del client HTTP insieme ad altre proprietà che non influiscono sul client HTTP.

Le impostazioni predefinite di configurazione intelligente impostano valori ragionevoli per le tlsNegotiationTimeoutInMillis proprietà connectTimeoutInMillis e in base al valore della modalità predefinita fornito dall'utente. Scegliete il valore della modalità predefinita in base alle caratteristiche dell'applicazione.

Per ulteriori informazioni sulle impostazioni predefinite di configurazione intelligente e su come scegliere il valore della modalità predefinita più adatto alle applicazioni, consulta la Guida di riferimento per SDK e strumenti. AWS

Di seguito sono riportati quattro modi per impostare la modalità predefinita per l'applicazione.

Service client

Utilizzate il service client builder per configurare la modalità predefinita direttamente sul service client. L'esempio seguente imposta la modalità predefinita su. auto DynamoDbClient

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

È possibile utilizzare la proprietà aws.defaultsMode di sistema per specificare la modalità predefinita. Se si imposta la proprietà di sistema in Java, è necessario impostare la proprietà prima di inizializzare qualsiasi client di servizio.

L'esempio seguente mostra come impostare la modalità predefinita auto utilizzando una proprietà di sistema impostata in Java.

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

L'esempio seguente dimostra come si imposta la modalità predefinita auto utilizzando un'-Dopzione del comando. java

java -Daws.defaultsMode=auto
Environment variable

Imposta un valore per la variabile di ambiente AWS_DEFAULTS_MODE per selezionare la modalità predefinita per l'applicazione.

Le seguenti informazioni mostrano il comando da eseguire per impostare il valore della modalità predefinita sull'autoutilizzo di una variabile di ambiente.

Sistema operativo Comando per impostare le variabili di ambiente

Linux, macOS o Unix

export AWS_DEFAULTS_MODE=auto

Windows

set AWS_DEFAULTS_MODE=auto
AWS config file

È possibile aggiungere una proprietà di defaults_mode configurazione al AWS config file condiviso come mostrato nell'esempio seguente.

[default] defaults_mode = auto

Se imposti la modalità predefinita a livello globale con la proprietà di sistema, la variabile di ambiente o il file di AWS configurazione, puoi sovrascrivere le impostazioni quando crei un client HTTP.

Quando si crea un client HTTP con il httpClientBuilder() metodo, le impostazioni si applicano solo all'istanza che si sta creando. Un esempio di ciò è mostrato qui. Il client Netty-based HTTP in questo esempio sovrascrive qualsiasi valore di modalità predefinito impostato globalmente per connectTimeoutInMillis e. tlsNegotiationTimeoutInMillis