Configuração do cliente HTTP - AWS SDK para Kotlin

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configuração do cliente HTTP

Por padrão, o AWS SDK para Kotlin usa um cliente HTTP baseado em OkHttp. Você pode substituir o cliente HTTP e sua configuração fornecendo um cliente explicitamente configurado.

Atenção

Independentemente de qual mecanismo HTTP você usa, outras dependências em seu projeto podem ter dependências transitivas que entram em conflito com a versão específica do mecanismo exigida pelo SDK. Em particular, estruturas como o Spring Boot são conhecidas por gerenciar dependências OkHttp e confiar em versões mais antigas do que o SDK. Consulte Como faço para resolver conflitos de dependência? para obter mais informações.

nota

Por padrão, cada cliente de serviço usa sua própria cópia de um cliente HTTP. Se você usa vários serviços em seu aplicativo, talvez queira criar um único cliente HTTP e compartilhá-lo com todos os clientes de serviço.

Configuração básica

Ao configurar um cliente de serviço, você pode configurar o tipo de mecanismo padrão. O SDK gerencia o mecanismo do cliente HTTP resultante e o fecha automaticamente quando não é mais necessário.

O exemplo a seguir mostra a configuração de um cliente HTTP durante a inicialização de um cliente do DynamoDB.

Importações

import aws.sdk.kotlin.services.dynamodb.DynamoDbClient import kotlin.time.Duration.Companion.seconds

Código

DynamoDbClient { region = "us-east-2" httpClient { maxConcurrency = 64u connectTimeout = 10.seconds } }.use { ddb -> // Perform some actions with Amazon DynamoDB. }

Especifique um tipo de mecanismo HTTP

Para casos de uso mais avançados, você pode passar um parâmetro adicional httpClient que especifica o tipo de mecanismo. Dessa forma, você pode definir parâmetros de configuração exclusivos desse tipo de mecanismo.

O exemplo a seguir especifica o OkHttpEngineque você pode usar para configurar a maxConcurrencyPerHostpropriedade.

Importações

import aws.sdk.kotlin.services.dynamodb.DynamoDbClient import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine

Código

DynamoDbClient { region = "us-east-2" httpClient(OkHttpEngine) { // The first parameter specifies the HTTP engine type. // The following parameter is generic HTTP configuration available in any engine type. maxConcurrency = 64u // The following parameter is OkHttp-specific configuration. maxConcurrencyPerHost = 32u } }.use { ddb -> // Perform some actions with Amazon DynamoDB. }

Os valores possíveis para o tipo de motor são OkHttpEngine OkHttp4Engine, CrtHttpEnginee.

Para usar parâmetros de configuração específicos de um mecanismo HTTP, você deve adicionar o mecanismo como uma dependência em tempo de compilação. Para oOkHttpEngine, você adiciona a seguinte dependência usando o Gradle.

(Você pode navegar até o X.Y.Z link para ver a versão mais recente disponível.)

implementation(platform("aws.smithy.kotlin:bom:X.Y.Z")) implementation("aws.smithy.kotlin:http-client-engine-okhttp")

Para oCrtHttpEngine, adicione a seguinte dependência.

implementation(platform("aws.smithy.kotlin:bom:X.Y.Z")) implementation("aws.smithy.kotlin:http-client-engine-crt")

Usar a OkHttp4Engine

Use o OkHttp4Engine se você não puder usar o padrãoOkHttpEngine. O GitHub repositório smithy-kotlin tem informações sobre como você configura e usa o. OkHttp4Engine

Use um cliente HTTP explícito

Quando você usa um cliente HTTP explícito, você é responsável por sua vida útil, incluindo o fechamento quando não precisa mais dele. Um cliente HTTP deve durar pelo menos tanto quanto qualquer cliente de serviço que o use.

O exemplo de código a seguir mostra o código que mantém o cliente HTTP ativo enquanto o DynamoDbClient está ativo. A usefunção garante que o cliente HTTP feche corretamente.

Importações

import aws.sdk.kotlin.services.dynamodb.DynamoDbClient import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine import kotlin.time.Duration.Companion.seconds

Código

OkHttpEngine { maxConcurrency = 64u connectTimeout = 10.seconds }.use { okHttpClient -> DynamoDbClient { region = "us-east-2" httpClient = okHttpClient }.use { ddb -> { // Perform some actions with Amazon DynamoDB. } } }