

 適用於 Java 的 AWS SDK 1.x 已於 2025 年 12 月 31 日end-of-support。我們建議您遷移至 [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)，以繼續接收新功能、可用性改善和安全性更新。

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

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

若要向 提出請求 Amazon Web Services，您必須先建立服務用戶端物件。建議的方式是使用 服務用戶端建置器。

每個 AWS 服務 都有一個服務介面，其中包含服務 API 中每個動作的方法。例如，DynamoDB 的服務界面名為 [AmazonDynamoDBClient](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/AmazonDynamoDBClient.html)。每個服務界面都有對應的用戶端建置器，可用來建構服務界面的實作。的用戶端建置器類別 DynamoDB 名為 [AmazonDynamoDBClientBuilder](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/dynamodbv2/AmazonDynamoDBClientBuilder.html)。

## 取得用戶端建置器
<a name="obtaining-a-client-builder"></a>

若要取得用戶端建置器的執行個體，請使用靜態原廠方法 `standard`，如下列範例所示。

```
AmazonDynamoDBClientBuilder builder = AmazonDynamoDBClientBuilder.standard();
```

擁有建置器後，您可以在建置器 API 中使用許多流暢的設定器來自訂用戶端的屬性。例如，您可以設定自訂區域和自訂登入資料提供者，如下所示。

```
AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.standard()
                        .withRegion(Regions.US_WEST_2)
                        .withCredentials(new ProfileCredentialsProvider("myProfile"))
                        .build();
```

**注意**  
流暢`withXXX`的方法會傳回 `builder` 物件，以便您可以鏈結方法呼叫以方便使用，並取得更易讀的程式碼。設定您要的屬性後，您可以呼叫 `build` 方法來建立用戶端。建立用戶端後，用戶端是不可變的，任何對 `setRegion`或 的呼叫`setEndpoint`都會失敗。

建置器可以建立具有相同組態的多個用戶端。當您撰寫應用程式時，請注意建置器是可變的，且不安全執行緒。

下列程式碼使用建置器做為用戶端執行個體的工廠。

```
public class DynamoDBClientFactory {
    private final AmazonDynamoDBClientBuilder builder =
        AmazonDynamoDBClientBuilder.standard()
            .withRegion(Regions.US_WEST_2)
            .withCredentials(new ProfileCredentialsProvider("myProfile"));

    public AmazonDynamoDB createClient() {
        return builder.build();
    }
}
```

建置器也會公開 [ClientConfiguration](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/ClientConfiguration.html) 和 [RequestMetricCollector](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/metrics/RequestMetricCollector.html) 的流暢設定器，以及 [RequestHandler2](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/handlers/RequestHandler2.html) 的自訂清單。

以下是覆寫所有可設定屬性的完整範例。

```
AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.standard()
        .withRegion(Regions.US_WEST_2)
        .withCredentials(new ProfileCredentialsProvider("myProfile"))
        .withClientConfiguration(new ClientConfiguration().withRequestTimeout(5000))
        .withMetricsCollector(new MyCustomMetricsCollector())
        .withRequestHandlers(new MyCustomRequestHandler(), new MyOtherCustomRequestHandler)
        .build();
```

## 建立非同步用戶端
<a name="creating-async-clients"></a>

每個服務 適用於 Java 的 AWS SDK 都有非同步 （或非同步） 用戶端 ( 除外 Amazon S3)，每個服務都有對應的非同步用戶端建置器。

### 使用預設 ExecutorService 建立非同步 DynamoDB 用戶端
<a name="w3aab9c13b9b5"></a>

```
AmazonDynamoDBAsync ddbAsync = AmazonDynamoDBAsyncClientBuilder.standard()
        .withRegion(Regions.US_WEST_2)
        .withCredentials(new ProfileCredentialsProvider("myProfile"))
        .build();
```

除了同步 （或同步） 用戶端建置器支援的組態選項之外，非同步用戶端可讓您設定自訂 [ExecutorFactory](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/client/builder/ExecutorFactory.html) 來變更非同步用戶端使用的 `ExecutorService` 。 `ExecutorFactory` 是功能介面，因此與 Java 8 lambda 表達式和方法參考互通。

### 使用自訂執行器建立非同步用戶端
<a name="w3aab9c13b9b9"></a>

```
AmazonDynamoDBAsync ddbAsync = AmazonDynamoDBAsyncClientBuilder.standard()
            .withExecutorFactory(() -> Executors.newFixedThreadPool(10))
            .build();
```

## 使用 DefaultClient
<a name="using-defaultclient"></a>

同步和非同步用戶端建置器都有另一個名為 的原廠方法`defaultClient`。此方法會使用預設提供者鏈來載入登入資料和 ，以預設組態建立服務用戶端 AWS 區域。如果無法從應用程式執行的環境判斷登入資料或區域，則對 `defaultClient` 的呼叫失敗。如需如何判斷[AWS 登入資料和區域的詳細資訊，請參閱使用](credentials.md)登入資料和[AWS 區域 選擇](java-dg-region-selection.md)。

### 建立預設服務用戶端
<a name="w3aab9c13c11b5"></a>

```
AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient();
```

## 用戶端生命週期
<a name="client-lifecycle"></a>

開發套件中的服務用戶端是執行緒安全的，為了獲得最佳效能，您應該將它們視為長期物件。每個用戶端都有自己的連線集區資源。當不再需要用戶端以避免資源洩漏時，請明確將其關閉。

若要明確關閉用戶端，請呼叫 `shutdown`方法。呼叫 後`shutdown`，會釋出所有用戶端資源，且用戶端無法使用。

### 關閉用戶端
<a name="w3aab9c13c13b7"></a>

```
AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient();
ddb.shutdown();
// Client is now unusable
```