HTTPclienti - 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à.

HTTPclienti

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

HTTPclient disponibili in SDK per Java

Client sincroni

HTTPI client sincroni in SDK for Java implementano l'SdkHttpClientinterfaccia. Un client di servizio sincrono, come il S3Client o theDynamoDbClient, richiede l'uso di un client sincronoHTTP. AWS SDK for Java Offre tre client HTTP sincroni.

ApacheHttpClient (impostazione predefinita)

ApacheHttpClientè il HTTP client predefinito per i client di servizio sincroni. Per informazioni sulla configurazione diApacheHttpClient, vedere. Configurare il client HTTP basato su Apache

AwsCrtHttpClient

AwsCrtHttpClientfornisce un throughput elevato e un IO non bloccante. È basato sul client Http AWS Common Runtime (CRT). Per informazioni sulla configurazione AwsCrtHttpClient e sul suo utilizzo con i client di servizio, vedereConfigurazione 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 il. UrlConnectionHttpClient Per informazioni sulla configurazione diUrlConnectionHttpClient, vedere. Configurare il client HTTP basato su URLConnection

Client asincroni

I HTTP client asincroni per Java implementano l'SDKinterfaccia. SdkAsyncHttpClient Un client di servizio asincrono, come il S3AsyncClient o ilDynamoDbAsyncClient, richiede l'uso di un client asincrono. HTTP Offre due client asincroni. AWS SDK for Java HTTP

NettyNioAsyncHttpClient (impostazione predefinita)

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

AwsCrtAsyncHttpClient

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

HTTPraccomandazioni per i clienti

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

diagramma di flusso dei consigli

Il seguente diagramma di flusso fornisce indicazioni generali per aiutarvi a determinare quale HTTP client utilizzare.

Diagramma di flusso dei consigli ai HTTP clienti.

HTTPconfronto tra clienti

La tabella seguente fornisce informazioni dettagliate per ogni HTTP cliente.

HTTPcliente Sincronizzazione o asincrona Quando usare Limitazione/inconveniente
Client basato su Apache HTTP

(client di sincronizzazione predefinito) HTTP

Sync Usalo se preferisci una bassa latenza rispetto a un throughput elevato Tempo di avvio più lento rispetto ad altri client HTTP
URLConnectionclient basato HTTP Sync Usalo se hai una forte esigenza di limitare le dipendenze di terze parti Non supporta il HTTP PATCH metodo, richiesto da alcune operazioni APIS come Amazon APIGateway Update
AWS CRTHTTPclient di sincronizzazione basato 1 Sync

• Usalo se l'applicazione è in esecuzione in AWS Lambda

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

• Usalo se preferisci i client di sincronizzazione SDK

Le seguenti proprietà del sistema Java non sono supportate:

  • javax.net.ssl. keyStore

  • javax.net. ssl. keyStorePassword

  • javax.net. ssl. trustStore

  • javax.net. ssl. trustStorePassword

Client con sede a Netty HTTP

(client HTTP asincrono predefinito)

Asincrono

• Usalo se l'applicazione richiama richiami APIs che richiedono il supporto HTTP /2 come Kinesis API SubscribeToShard

Tempo di avvio più lento rispetto ad altri client HTTP
AWS CRTclient asincrono HTTP basato 1 Asincrono

• Usalo se l'applicazione è in esecuzione in AWS Lambda

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

• Usalo se preferisci i client asincroni SDK

• Non supporta i client di servizio che richiedono il supporto HTTP /2 come e KinesisAsynClient TranscribeStreamingAsyncClient

Le seguenti proprietà del sistema Java non sono supportate:

  • javax.net.ssl. keyStore

  • javax.net. ssl. keyStorePassword

  • javax.net. ssl. trustStore

  • javax.net. ssl. trustStorePassword

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

Impostazioni predefinite di configurazione intelligente

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

Le impostazioni predefinite di configurazione intelligente impostano valori ragionevoli per le tlsNegotiationTimeoutInMillis proprietà connectTimeoutInMillis and in base a un valore della modalità defaults 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 and Tools Reference Guide.AWS SDKs

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 client del servizio. 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à di default sull'autoutilizzo di una proprietà di sistema impostata in Java.

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

L'esempio seguente mostra come impostare la modalità di default per l'autoutilizzo di 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 informazioni seguenti 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 illustrato nell'esempio seguente.

[default] defaults_mode = auto

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

Quando create un HTTP client con il httpClientBuilder() metodo, le impostazioni si applicano solo all'istanza che state creando. Un esempio di ciò è mostrato qui. Il HTTP client basato su Netty in questo esempio sostituisce tutti i valori di modalità predefiniti impostati globalmente per e. connectTimeoutInMillis tlsNegotiationTimeoutInMillis