

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

# 建立服務用戶端
<a name="creating-clients"></a>

若要向 提出請求 AWS 服務，您必須先執行個體化該服務的用戶端。

您可以設定服務用戶端的常見設定，例如要使用的 HTTP 用戶端、記錄層級和重試組態。此外，每個服務用戶端都需要 AWS 區域 和登入資料提供者。SDK 使用這些值將請求傳送至正確的區域，並使用正確的登入資料簽署請求。

您可以在程式碼中以程式設計方式指定這些值，或從環境中自動載入這些值。

## 在程式碼中設定用戶端
<a name="programmatic-config"></a>

若要設定具有特定值的服務用戶端，您可以在傳遞至服務用戶端原廠方法的 lambda 函數中指定它們，如下列程式碼片段所示。

```
val dynamoDbClient = DynamoDbClient {
    region = "us-east-1"
    credentialsProvider = ProfileCredentialsProvider(profileName = "myprofile")
}
```

您在組態區塊中未指定的任何值都會設定為預設值。例如，如果您未將登入資料提供者指定為先前的程式碼，登入資料提供者會預設為[預設的登入資料提供者鏈結](credential-providers.md#default-credential-provider-chain)。

**警告**  
有些屬性，例如 `region` 沒有預設值。使用程式設計組態時，您必須在組態區塊中明確指定它們。如果 SDK 無法解析 屬性，API 請求可能會失敗。

## 從環境設定用戶端
<a name="loading-from-the-environment"></a>

建立服務用戶端時，軟體開發套件可以檢查目前執行環境中的位置，以判斷一些組態屬性。這些位置包括[共用組態和登入資料檔案](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)、[環境變數](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html)和 [JVM 系統屬性](https://docs.aws.amazon.com/sdkref/latest/guide/jvm-system-properties.html)。可解析的屬性包括[AWS 區域](region-selection.md)、[重試策略](retries.md)、[日誌模式](logging.md#sdk-log-mode)和其他。如需軟體開發套件可從執行環境解析之所有設定的詳細資訊，請參閱軟體[AWS SDKs與工具設定參考指南](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html)。

若要建立具有環境來源組態的用戶端，請在服務用戶端界面`suspend fun fromEnvironment()`上使用靜態方法：

```
val dynamoDbClient = DynamoDbClient.fromEnvironment()
```

以這種方式建立用戶端在 Amazon EC2 上執行時很有用 AWS Lambda，或可在環境中使用服務用戶端組態的任何其他內容。這會將您的程式碼與執行環境分離，讓您更輕鬆地將應用程式部署到多個區域，而無需變更程式碼。

此外，您可以透過將 lambda 區塊傳遞至 來覆寫特定屬性`fromEnvironment`。下列範例會從環境 （例如區域） 載入一些組態屬性，但會特別覆寫登入資料提供者，以使用來自設定檔的登入資料。

```
val dynamoDbClient = DynamoDbClient.fromEnvironment { 
    credentialsProvider = ProfileCredentialsProvider(profileName = "myprofile")
}
```

開發套件會針對無法從程式設計設定或環境判斷的任何組態屬性，使用預設值。例如，如果您未在程式碼或環境設定中指定登入資料提供者，登入資料提供者會預設為[預設登入資料提供者鏈結](credential-providers.md#default-credential-provider-chain)。

**警告**  
區域之類的某些屬性沒有預設值。您必須在環境設定中或在組態區塊中明確指定它們。如果 SDK 無法解析 屬性，API 請求可能會失敗。

**注意**  
雖然在執行環境中可以找到與登入資料相關的屬性，例如臨時存取金鑰和 SSO 組態，但用戶端在建立時不會取得這些值。反之，登入資料提供者層會在每次請求時存取這些值。

## 關閉用戶端
<a name="closing-the-client"></a>

當您不再需要服務用戶端時，請將其關閉以釋出其使用的任何資源：

```
val dynamoDbClient = DynamoDbClient.fromEnvironment()
// Invoke several DynamoDB operations.
dynamoDbClient.close()
```

由於服務用戶端擴展了[https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/-closeable/index.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/-closeable/index.html)界面，因此您可以使用 [https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/use.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/use.html)擴充功能，在區塊結束時自動關閉用戶端，如下列程式碼片段所示。

```
DynamoDbClient.fromEnvironment().use { dynamoDbClient ->
    // Invoke several DynamoDB operations.
}
```

在先前的範例中，lambda 區塊會收到剛建立之用戶端的參考。您可以在此用戶端參考和區塊完成時叫用 操作，包括擲回例外狀況時，用戶端會關閉。