HTTP 用戶端組態 - 適用於 Kotlin 的 AWS SDK

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

HTTP 用戶端組態

根據預設, 適用於 Kotlin 的 AWS SDK 會使用以 OkHttp 為基礎的 HTTP 用戶端。您可以透過提供明確設定的用戶端來覆寫 HTTP 用戶端及其組態。

警告

無論您使用哪個 HTTP 引擎,專案中的其他相依性可能會有與 SDK 所需的特定引擎版本衝突的暫時性相依性。特別是 Spring Boot 等架構已知會管理 OkHttp 等相依性,並依賴比 SDK 更舊的版本。如需詳細資訊如何解決相依性衝突?,請參閱 。

注意

根據預設,每個服務用戶端都會使用自己的 HTTP 用戶端複本。如果您在應用程式中使用多個服務,您可能想要建構單一 HTTP 用戶端,並將其分享給所有服務用戶端。

基本組態

當您設定服務用戶端時,您可以設定預設引擎類型。SDK 會管理產生的 HTTP 用戶端引擎,並在不再需要時自動將其關閉。

下列範例顯示 DynamoDB 用戶端初始化期間 HTTP 用戶端的組態。

匯入

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

代碼

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

指定 HTTP 引擎類型

對於更進階的使用案例,您可以將其他參數傳遞至 httpClient,以指定引擎類型。如此一來,您就可以設定該引擎類型獨有的組態參數。

下列範例指定OkHttpEngine您可以用來設定 maxConcurrencyPerHost 屬性的 。

匯入

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

代碼

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. }

引擎類型的可能值為 OkHttpEngineOkHttp4EngineCrtHttpEngine

若要使用 HTTP 引擎特定的組態參數,您必須新增引擎做為編譯時間相依性。對於 OkHttpEngine,您可以使用 Gradle 新增下列相依性。

(您可以導覽至 X.Y.Z 連結,以查看可用的最新版本。)

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

對於 CrtHttpEngine,新增下列相依性。

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

使用 OkHttp4Engine

OkHttp4Engine 如果您無法使用預設 ,請使用 OkHttpEnginesmithy-kotlin GitHub 儲存庫包含有關如何設定和使用 的資訊OkHttp4Engine

使用明確的 HTTP 用戶端

當您使用明確的 HTTP 用戶端時,您必須對其生命週期負責,包括當您不再需要時將其關閉。只要使用任何服務用戶端,HTTP 用戶端必須至少存活。

下列程式碼範例顯示 處於作用中狀態時,讓 HTTP 用戶端保持運作DynamoDbClient狀態的程式碼。use 函數可確保 HTTP 用戶端正確關閉。

匯入

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

代碼

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