

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

# 使用適用於 Ruby 的 AWS SDK 登入資料提供者
<a name="credential-providers"></a>

所有對 的請求 AWS 都必須使用 發行的登入資料以密碼編譯方式簽署 AWS。在執行時間，軟體開發套件會檢查多個位置，以擷取登入資料的組態值。

使用 進行身分驗證 AWS 可以在您的程式碼庫之外處理。開發套件可以使用登入資料提供者鏈自動偵測、使用和重新整理許多身分驗證方法。

如需專案身分 AWS 驗證入門的引導選項，請參閱*AWS SDKs和工具參考指南》中的*[身分驗證和存取](https://docs.aws.amazon.com/sdkref/latest/guide/access.html)。

## 登入資料提供者鏈結
<a name="credchain"></a>

所有 SDKs 都有一系列位置 （或來源） 進行檢查，以取得可用於向 提出請求的有效登入資料 AWS 服務。找到有效的憑證後，系統就會停止搜尋。此系統搜尋稱為預設登入資料提供者鏈結。

**注意**  
如果您遵循建議的方法讓新使用者開始使用，您會在 期間使用登入與主控台登入資料進行身分驗證[AWS 使用適用於 Ruby 的 AWS SDK 透過 驗證](credentials.md)。其他身分驗證方法適用於不同的情況。為了避免安全風險，我們建議您一律使用短期登入資料。如需其他身分驗證方法程序，請參閱*AWS SDKs和工具參考指南》中的身分*[驗證和存取](https://docs.aws.amazon.com/sdkref/latest/guide/access.html)。

對於鏈結中的每個步驟，有不同的方法來設定值。直接在程式碼中設定值一律優先，接著設定為環境變數，然後在共用 AWS `config`檔案中設定。

*AWS SDKs和工具參考指南*提供 AWS SDKs和 所使用的開發套件組態設定資訊 AWS CLI。若要進一步了解如何透過共用 AWS `config`檔案設定 SDK，請參閱[共用組態和登入資料檔案](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)。若要進一步了解如何透過設定環境變數來設定 SDK，請參閱[環境變數支援](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html)。

若要進行身分驗證 AWS，適用於 Ruby 的 AWS SDK 會依照下表所列的順序檢查登入資料提供者。


| 登入資料提供者優先順序 | *AWS SDKs與工具參考指南* | *適用於 Ruby 的 AWS SDK API 參考* | 
| --- | --- | --- | 
| AWS 存取金鑰 （暫時和長期登入資料） | [AWS 存取金鑰](https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html) | [https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Credentials.html](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Credentials.html)[https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/SharedCredentials.html](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/SharedCredentials.html) | 
| Web 身分字符來自 AWS Security Token Service (AWS STS)  | [擔任角色登入資料提供者](https://docs.aws.amazon.com/sdkref/latest/guide/feature-assume-role-credentials.html)使用 `role_arn`、 `role_session_name`和 `web_identity_token_file` | [https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AssumeRoleWebIdentityCredentials.html](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AssumeRoleWebIdentityCredentials.html)  | 
| AWS IAM Identity Center。 在本指南中，請參閱 [AWS 使用適用於 Ruby 的 AWS SDK 透過 驗證](credentials.md)。 | [IAM Identity Center 憑證提供者](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sso-credentials.html) | [https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/SSOCredentials.html](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/SSOCredentials.html) | 
| 信任的實體提供者 （例如 AWS\$1ROLE\$1ARN)。在本指南中，請參閱 [建立 AWS STS 存取字符](#aws-ruby-sdk-credentials-access-token)。 | [擔任角色登入資料提供者](https://docs.aws.amazon.com/sdkref/latest/guide/feature-assume-role-credentials.html)使用 `role_arn`和 `role_session_name` | [https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AssumeRoleCredentials.html](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AssumeRoleCredentials.html) | 
| 登入憑證提供者 | [登入憑證提供者](https://docs.aws.amazon.com/sdkref/latest/guide/feature-login-credentials.html) | [https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/LoginCredentials.html](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/LoginCredentials.html) | 
| 程序登入資料提供者 | [程序登入資料提供者](https://docs.aws.amazon.com/sdkref/latest/guide/feature-process-credentials.html) | [https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/ProcessCredentials.html](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/ProcessCredentials.html) | 
| Amazon Elastic Container Service (Amazon ECS) 登入資料 | [容器憑證提供者](https://docs.aws.amazon.com/sdkref/latest/guide/feature-container-credentials.html) | [https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/ECSCredentials.html](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/ECSCredentials.html) | 
| Amazon Elastic Compute Cloud (Amazon EC2) 執行個體設定檔登入資料 (IMDS 登入資料提供者） | [IMDS 登入資料提供者](https://docs.aws.amazon.com/sdkref/latest/guide/feature-imds-credentials.html) | [https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/InstanceProfileCredentials.html](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/InstanceProfileCredentials.html) | 

如果`AWS_SDK_CONFIG_OPT_OUT`已設定適用於 Ruby 的 AWS SDK 環境變數，則通常在 的共用 AWS `config`檔案` ~/.aws/config`將不會剖析登入資料。

## 建立 AWS STS 存取字符
<a name="aws-ruby-sdk-credentials-access-token"></a>

假設角色涉及使用一組臨時安全登入資料，您可以使用這些登入資料來存取您通常無法存取 AWS 的資源。這些臨時登入資料由存取金鑰 ID、私密存取金鑰和安全字符組成。您可以使用 [https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AssumeRoleCredentials.html](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/AssumeRoleCredentials.html)方法來建立 AWS Security Token Service (AWS STS) 存取字符。

下列範例使用存取字符來建立 Amazon S3 用戶端物件，其中 `linked::account::arn`是要擔任角色的 Amazon Resource Name (ARN)， `session-name`是擔任角色工作階段的識別符。

```
role_credentials = Aws::AssumeRoleCredentials.new(
  client: Aws::STS::Client.new,
  role_arn: "linked::account::arn",
  role_session_name: "session-name"
)

s3 = Aws::S3::Client.new(credentials: role_credentials)
```

如需有關設定 `role_arn`或 `role_session_name`，或改用共用 AWS `config`檔案設定這些項目的詳細資訊，請參閱 *AWS SDKs和工具參考指南*中的[擔任角色登入資料提供者](https://docs.aws.amazon.com/sdkref/latest/guide/feature-assume-role-credentials.html)。