建立服務用戶端 - 適用於 Rust 的 AWS SDK

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

建立服務用戶端

若要向 提出請求 AWS 服務,您首先會執行個體化該服務的用戶端。您可以為服務用戶端設定常見設定,例如逾時、HTTP 用戶端和重試組態。

每個服務用戶端都需要 AWS 區域 和 登入資料提供者。SDK 使用這些值將請求傳送至 資源的正確區域,並使用正確的登入資料簽署請求。您可以以程式設計方式在程式碼中指定這些值,或從環境中自動載入這些值。

注意

服務用戶端建構成本可能很昂貴,通常需要共用。為了促進這一點,所有Client結構都會實作 Clone

軟體開發套件有一系列位置 (或來源),其會進行檢查,以尋找組態設定的值。

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

  2. 環境變數

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

  3. 共用 configcredentials 檔案

  4. 任何 SDK 原始碼本身提供的預設值都會最後使用。

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

大多數環境變數設定和 configcredentials 檔案設定是由 AWS SDKs和工具共用,以實現一致行為。若要查看開發套件可從環境變數或組態檔案解析的所有設定,請參閱開發套件和工具參考指南中的設定參考。 AWS SDKs

從環境設定用戶端

若要使用環境來源組態建立用戶端,請使用 aws-config 條板箱中的靜態方法:

let config = aws_config::defaults(BehaviorVersion::latest()) .load() .await; let s3 = aws_sdk_s3::Client::new(&config);

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

您可以明確覆寫特定屬性。明確組態優先於從執行環境解析的組態。下列範例會從環境載入組態,但明確覆寫 AWS 區域:

let config = aws_config::defaults(BehaviorVersion::latest()) .region("us-east-1") .load() .await; let s3 = aws_sdk_s3::Client::new(&config);
注意

並非所有組態值都是由用戶端在建立時取得。當用戶端用於提出請求時,登入資料提供者層會存取登入資料相關設定,例如臨時存取金鑰和 IAM Identity Center 組態。

先前範例中BehaviorVersion::latest()顯示的程式碼指出要用於預設值的 SDK 版本。 BehaviorVersion::latest()適用於大多數情況。如需詳細資訊,請參閱 行為版本

針對服務特定的設定使用建置器模式

有些選項只能在特定服務用戶端類型上設定。不過,通常您仍然想要從環境載入大部分的組態,然後特別新增其他選項。建置器模式是 適用於 Rust 的 AWS SDK 條板箱內的常見模式。您首先使用 載入一般組態aws_config::defaults,然後使用 from方法將該組態載入您正在使用的 服務的建置器。然後,您可以為該服務設定任何唯一的組態值,並呼叫 build。最後,會從此修改後的組態建立用戶端。

// Call a static method on aws-config that sources default config values. let config = aws_config::defaults(BehaviorVersion::latest()) .load() .await; // Use the Builder for S3 to create service-specific config from the default config. let s3_config = aws_sdk_s3::config::Builder::from(&config) .accelerate(true) // Set an S3-only configuration option .build(); // Create the client. let s3 = aws_sdk_s3::Client::from_conf(s3_config);

探索特定服務用戶端類型可用的其他方法的其中一種方法是使用 API 文件,例如 的 aws_sdk_s3::config::Builder

進階明確用戶端組態

若要設定具有特定值的服務用戶端,而不是從環境載入組態,您可以在用戶端Config建置器上指定它們,如下所示:

let conf = aws_sdk_s3::Config::builder() .region("us-east-1") .endpoint_resolver(my_endpoint_resolver) .build(); let s3 = aws_sdk_s3::Client::from_conf(conf);

當您使用 建立服務組態時aws_sdk_s3::Config::builder()不會載入任何預設組態。預設值只會在根據 建立組態時載入aws_config::defaults

有些選項只能在特定服務用戶端類型上設定。上一個範例顯示使用 Amazon S3 用戶端上的 endpoint_resolver函數,藉此範例。