

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

# 設定 AWS SDK for Java 2.x 外部 的服務用戶端
<a name="configuring-service-clients-ext"></a>

許多組態設定可以在程式碼之外處理。當您在外部處理組態時，它可以套用到相同 Java 程序中的所有應用程式。大多數組態設定可以設定為環境變數、JVM 系統屬性或個別共用 AWS `config`檔案中。共用`config`檔案可以維護個別的設定集，稱為設定檔，為不同的環境或測試提供不同的組態。

大多數的環境變數和共用`config`檔案設定會在 AWS SDKs 和工具之間標準化和共用，以支援不同程式設計語言和應用程式的一致功能。在大多數情況下，適用於 Java 的 SDK 可以使用的 JVM 系統屬性會鏡像環境變數。

請參閱 *[AWS SDKs和工具參考指南](https://docs.aws.amazon.com/sdkref/latest/guide/overview.html)*，了解如何透過這些方法設定您的應用程式，以及每個跨 sdk 設定的詳細資訊。若要查看開發套件可從環境變數、JVM 系統屬性或組態檔案解析的所有設定，請參閱開發套件和工具參考指南中的[設定](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html)參考。 *AWS SDKs *

## 用戶端組態的組態提供者鏈結
<a name="configuration-provider-chain"></a>

軟體開發套件會檢查多個位置 （或來源） 來尋找組態值。

1. 程式碼中或服務用戶端本身上設定的任何明確設定，都優先於任何其他設定。

1. JVM 系統屬性
   + 如需設定 JVM 系統屬性的詳細資訊，請參閱 *AWS SDKs和工具參考指南*中的[如何設定 JVM 系統屬性](https://docs.aws.amazon.com/sdkref/latest/guide/jvm-system-properties.html#jvm-sys-props-set)。

1. 環境變數
   + 如需設定環境變數的詳細資訊，請參閱 *AWS SDKs和工具參考指南*中的[環境變數](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html)。
   + 請注意，您可以為殼層設定不同範圍的環境變數：全系統、全使用者和特定終端機工作階段。

1. 共用 `config`和 `credentials` 檔案
   + 如需設定這些檔案的詳細資訊，請參閱 SDK [`config`和工具參考指南中的共用 和 `credentials` 檔案](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)。 *AWS SDKs *

1. 開發套件原始碼本身提供的任何預設值都會最後使用。
   + 有些屬性，例如區域，沒有預設值。您必須在程式碼、環境設定或共用`config`檔案中明確指定它們。如果 SDK 無法解析所需的組態，API 請求可能會在執行時間失敗。

除了此一般組態鏈之外，適用於 Java 的 SDK 2.x 也使用專門的提供者鏈，包括[登入資料提供者鏈](credentials-chain.md)和[AWS 區域 提供者鏈](region-selection.md#default-region-provider-chain)。這些特殊化鏈結新增了額外的供應商，這些供應商會將 SDK 正在執行的環境納入考量。例如，在容器或 EC2 執行個體中。

## 建立使用外部設定設定的 服務用戶端
<a name="create-client-ext-conf"></a>

您需要在應用程式中建立服務用戶端，才能與 通訊 AWS 服務。服務用戶端是您與 的基本連線 AWS 服務，可處理所有複雜的通訊詳細資訊，讓您不必擔心。它們會自動處理安全、錯誤處理和重試等重要任務，讓您專注於建置應用程式，而不是處理技術複雜性。

### 使用 `create()`方法
<a name="create-client-ext-builder"></a>

如果您需要的所有組態設定都來自外部來源，您可以使用簡單的方法建立服務用戶端：

```
S3Client s3Client = S3Client.create();
```

先前的程式碼片段會建立`S3Client`執行個體。在建立期間，軟體開發套件會查看組態提供者鏈中的設定。開發套件找到設定值後，即使組態存在且稍後在鏈結中，也會使用該值。

例如，假設使用者 AWS 區域 透過設定系統屬性 來設定 的 JVM 設定`-Daws.region=us-west-2`。如果也設定`AWS_REGION`環境變數，則會忽略其值。

預設區域提供者鏈和預設登入資料提供者鏈也會用於建立程序。在鏈結中的某處，開發套件必須解析 AWS 區域 以使用和尋找設定，讓它能夠擷取簽署請求的登入資料。如果 SDKs來尋找這些值，則用戶端建立會失敗。

雖然您可以使用此空的建置器模式來建立用戶端，但當您想要在[程式碼中新增組態](configuring-service-clients-code.md#conf-service-client-code-basic)時，通常會使用此模式。

## 適用於 Java 的 SDK 2.x 環境變數和 JVM 系統屬性
<a name="java-ext-config"></a>

除了 AWS SDKs支援的[跨磁碟設定](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html#settingsPages)之外，適用於 Java 的 SDK 2.x 還提供下列設定。

**注意**  
這些環境變數和 JVM 系統屬性主要用於進階使用案例、測試或特定部署案例。在大多數應用程式程式碼中，最好使用 SDK 用戶端建置器提供的程式設計組態選項，以獲得更好的類型安全和 IDE 支援。

### 容器登入資料提供者環境變數
<a name="java-cred-profvider-envars"></a>

除了參考指南中記錄的標準容器登入資料環境變數之外， 軟體開發套件還支援：

`AWS_CONTAINER_SERVICE_ENDPOINT`–此環境變數指定使用容器憑證提供者時容器中繼資料服務的端點。

Java 系統屬性： `aws.containerServiceEndpoint`

預設值：`http://169.254.170.2`

### HTTP 用戶端實作環境變數
<a name="java-http-cli-impl-envars"></a>

`SYNC_HTTP_SERVICE_IMPL`–明確識別開發套件將使用的預設[同步 HTTP 實作](http-configuration.md#http-config-sync)。當 classpath 上有多個實作或做為效能最佳化時，這會很有用，因為實作探索需要 classpath 掃描。

Java 系統屬性： `software.amazon.awssdk.http.service.impl`

`ASYNC_HTTP_SERVICE_IMPL`–明確識別軟體開發套件將使用的預設[非同步 HTTP 實作](http-configuration.md#http-config-async)。當 classpath 上有多個實作或做為效能最佳化時，這會很有用，因為實作探索需要 classpath 掃描。

Java 系統屬性： `software.amazon.awssdk.http.async.service.impl`