

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

# 使用第 3 適用於 PHP 的 AWS SDK 版登入資料提供者
<a name="guide_credentials"></a>

如需 AWS SDKs 可用登入資料機制的參考資訊，請參閱 *AWS SDKs和工具參考指南中的*[登入資料和存取權](https://docs.aws.amazon.com/sdkref/latest/guide/access.html)。

**重要**  
為了安全起見，*強烈建議*您**不要**使用根帳戶進行 AWS 存取。如需最新的[安全建議，請務必參閱《IAM 使用者指南》中的 IAM 中的安全最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。 **

第 3 適用於 PHP 的 AWS SDK 版中登入資料提供者的角色是為開發套件的 AWS 服務 用戶端提供登入資料。SDK 會使用其來源的登入資料，透過密碼編譯方式簽署每個請求來驗證服務。登入資料通常包含存取金鑰 - 存取金鑰 ID 和私密存取金鑰。

當您使用臨時登入資料時，例如當您[設定 IAM Identity Center 身分驗證](credentials.md#use-idc-for-auth)或設定執行時間以[擔任 IAM 角色](assumerole-provider.md)時，工作階段字符會新增至存取金鑰，以提供對 AWS 資源的限時存取。

## 第 3 適用於 PHP 的 AWS SDK 版中的登入資料提供者是什麼？
<a name="cred-provider-defn-php"></a>

登入資料供應商是一個函數，會傳回一個 `GuzzleHttp\Promise\PromiseInterface`，其中包含 `Aws\Credentials\CredentialsInterface` 執行個體，或被退回並包含 `Aws\Exception\CredentialsException`。[開發套件提供登入資料提供者函數的數個實作](built-in-providers-in-the-sdk.md)，或者您可以[實作自己的](creating-a-custom-provider.md)自訂邏輯來建立登入資料或最佳化登入資料載入。

登入資料供應商會傳送至 `credentials` 用戶端建構函式選項。登入資料供應商為非同步，會在每次叫用 API 操作時，強制其進行延遲評估。因此，將登入資料提供者函數傳遞到軟體開發套件用戶端建構函數，不會立即驗證登入資料。如果登入資料提供者未傳回登入資料物件，API 操作將會遭到拒絕，並且其回應為 `Aws\Exception\CredentialsException`。

```
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

// Use the ECS credential provider. 
$provider = CredentialProvider::ecsCredentials();
// Be sure to memoize the credentials.
$memoizedProvider = CredentialProvider::memoize($provider);

// Pass the provider to the client
$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $memoizedProvider
]);
```