設定 AWS SDK for Java 2.x 外部 的服務用戶端 - AWS SDK for Java 2.x

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

設定 AWS SDK for Java 2.x 外部 的服務用戶端

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

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

請參閱 AWS SDKs和工具參考指南,了解如何透過這些方法設定您的應用程式,以及每個跨 sdk 設定的詳細資訊。若要查看開發套件可從環境變數、JVM 系統屬性或組態檔案解析的所有設定,請參閱開發套件和工具參考指南中的設定參考。 AWS SDKs

用戶端組態的組態提供者鏈結

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

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

  2. JVM 系統屬性

  3. 環境變數

    • 如需設定環境變數的詳細資訊,請參閱 AWS SDKs和工具參考指南中的環境變數

    • 請注意,您可以為殼層設定不同範圍的環境變數:全系統、全使用者和特定終端機工作階段。

  4. 共用 configcredentials 檔案

  5. 開發套件原始碼本身提供的任何預設值都會最後使用。

    • 有些屬性,例如區域,沒有預設值。您必須在程式碼、環境設定或共用config檔案中明確指定它們。如果 SDK 無法解析必要的組態,API 請求可能會在執行時間失敗。

除了此一般組態鏈之外,適用於 Java 的 SDK 2.x 也使用專門的提供者鏈,包括登入資料提供者鏈AWS 區域 提供者鏈。這些特殊化鏈結新增了其他供應商,這些供應商會將 SDK 正在執行的環境納入考量。例如,在容器或 EC2 執行個體中。

建立使用外部設定設定的 服務用戶端

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

使用 create()方法

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

S3Client s3Client = S3Client.create();

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

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

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

雖然您可以使用此空建置器模式來建立用戶端,但當您想要在程式碼中新增組態時,通常會使用此模式。

適用於 Java 的 SDK 2.x 環境變數和 JVM 系統屬性

除了 AWS SDKs支援的跨磁碟設定之外,適用於 Java 的 SDK 2.x 還提供下列設定。

注意

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

容器登入資料提供者環境變數

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

AWS_CONTAINER_SERVICE_ENDPOINT–此環境變數會在使用容器登入資料提供者時指定容器中繼資料服務的端點。

Java 系統屬性: aws.containerServiceEndpoint

預設值:http://169.254.170.2

HTTP 用戶端實作環境變數

SYNC_HTTP_SERVICE_IMPL–明確識別開發套件將使用的預設同步 HTTP 實作。當 classpath 上有多個實作或做為效能最佳化時,這會很有用,因為實作探索需要 classpath 掃描。

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

ASYNC_HTTP_SERVICE_IMPL–明確識別軟體開發套件將使用的預設非同步 HTTP 實作。當 classpath 上有多個實作或做為效能最佳化時,這會很有用,因為實作探索需要 classpath 掃描。

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