本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS SDK for Rust 登入資料提供者
對 的所有請求 AWS 都必須使用 發行的登入資料以密碼編譯方式簽署 AWS。在執行時間,軟體開發套件會檢查多個位置來擷取登入資料的組態值。
如果擷取的組態包含AWS IAM Identity Center 單一登入存取設定,軟體開發套件會與 IAM Identity Center 搭配使用,以擷取用於提出請求的臨時登入資料 AWS 服務。
如果擷取的組態包含臨時登入資料,軟體開發套件會使用它們來進行 AWS 服務 呼叫。暫時登入資料包含存取金鑰和工作階段字符。
使用 進行身分驗證 AWS 可以在您的程式碼庫之外處理。開發套件可以使用登入資料提供者鏈自動偵測、使用和重新整理許多身分驗證方法。
如需專案身分 AWS 驗證入門的引導選項,請參閱AWS SDKs和工具參考指南》中的身分驗證和存取。
登入資料提供者鏈結
如果您在建構用戶端時未明確指定登入資料提供者,適用於 Rust 的 SDK 會使用登入資料提供者鏈結來檢查您可以提供登入資料的一系列位置。一旦 SDK 在其中一個位置找到登入資料,搜尋就會停止。如需建構用戶端的詳細資訊,請參閱 在程式碼中設定適用於 Rust 服務用戶端的 AWS SDK。
下列範例不會在程式碼中指定登入資料提供者。SDK 使用登入資料提供者鏈結來偵測已在託管環境中設定的身分驗證,並使用該身分驗證來進行呼叫 AWS 服務。
let config = aws_config::defaults(BehaviorVersion::latest()).load().await; let s3 = aws_sdk_s3::Client::new(&config);
登入資料擷取順序
登入資料提供者鏈結會使用下列預先定義的序列搜尋登入資料:
-
存取金鑰環境變數
SDK 會嘗試從
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY以及AWS_SESSION_TOKEN環境變數載入登入資料。 -
共用 AWS
config和credentials檔案SDK 會嘗試從共用 AWS
config和credentials檔案中的[default]設定檔載入登入資料。您可以使用AWS_PROFILE環境變數來選擇您希望 SDK 載入的具名設定檔,而不是使用[default]。config和credentials檔案由 AWS SDKs和工具共用。如需這些檔案的詳細資訊,請參閱 SDKconfig和工具參考指南中的共用 和credentials檔案。 AWS SDKs 如需您可以在設定檔中指定之標準化提供者的詳細資訊,請參閱 AWS SDKs和工具標準化憑證提供者。 -
AWS STS Web 身分
建立需要存取的行動應用程式或用戶端型 Web 應用程式時 AWS, AWS Security Token Service (AWS STS) 會為透過公有身分提供者 (IdP) 驗證的聯合身分使用者傳回一組臨時安全登入資料。
-
當您在設定檔中指定此項目時,軟體開發套件或工具會嘗試使用 AWS STS
AssumeRoleWithWebIdentityAPI 方法擷取臨時登入資料。如需此方法的詳細資訊,請參閱 AWS Security Token Service API 參考中的 AssumeRoleWithWebIdentity。 -
如需設定此提供者的指引,請參閱 AWS SDKs和工具參考指南中的使用 Web 身分或 OpenID Connect 聯合。
-
如需此供應商 SDK 組態屬性的詳細資訊,請參閱《 AWS SDKs和工具參考指南》中的擔任角色登入資料供應商。
-
-
Amazon ECS 和 Amazon EKS 容器憑證
您的 Amazon Elastic Container Service 任務和 Kubernetes 服務帳戶可以具有與其相關聯的 IAM 角色。在 IAM 角色中授予的許可,是由在 Pod 任務或容器中執行的容器所擔任。此角色可讓您的 SDK for Rust 應用程式碼 (在容器上) 使用其他 AWS 服務。
SDK 會嘗試從
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI或AWS_CONTAINER_CREDENTIALS_FULL_URI環境變數擷取登入資料,這些變數可由 Amazon ECS 和 Amazon EKS 自動設定。-
如需為 Amazon ECS 設定此角色的詳細資訊,請參閱《Amazon Elastic Container Service 開發人員指南》中的 Amazon ECS 任務 IAM 角色。
-
如需 Amazon EKS 設定資訊,請參閱《Amazon EKS 使用者指南》中的設定 Amazon EKS Pod Identity Agent。
-
如需此提供者 SDK 組態屬性的詳細資訊,請參閱 SDK AWS SDKs 和工具參考指南中的容器憑證提供者。
-
-
Amazon EC2 執行個體中繼資料服務
建立 IAM 角色並將其連接至您的執行個體。執行個體上的 SDK for Rust 應用程式會嘗試從執行個體中繼資料擷取角色提供的登入資料。
-
SDK for Rust 僅支援 IMDSv2。
-
如需設定此角色和使用中繼資料的詳細資訊,請參閱《Amazon EC2 使用者指南》中的 Amazon EC2 的 IAM 角色和使用執行個體中繼資料。 Amazon EC2
-
如需此供應商 SDK 組態屬性的詳細資訊,請參閱《 AWS SDKs和工具參考指南》中的 IMDS 登入資料供應商。
-
-
如果目前仍無法解析登入資料,則操作會panics發生錯誤。
如需 AWS 登入資料提供者組態設定的詳細資訊,請參閱 AWS SDKs和工具參考指南的設定參考中的標準化登入資料提供者。
明確登入資料提供者
您可以指定 SDK 應使用的特定登入資料提供者,而不是依賴登入資料提供者鏈來偵測您的身分驗證方法。當您使用 載入一般組態時aws_config::defaults,您可以指定自訂登入資料提供者,如下所示:
let config = aws_config::defaults(BehaviorVersion::latest()) .credentials_provider(MyCredentialsProvider::new()) .load() .await;
您可以透過實作 ProvideCredentials
身分快取
SDK 會快取登入資料和其他身分類型,例如 SSO 字符。根據預設,開發套件會使用延遲快取實作,在第一次請求時載入登入資料、快取登入資料,然後在另一個請求接近過期時嘗試重新整理登入資料。從相同 建立的用戶端SdkConfig將共用 IdentityCache