

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

# `assumeRoleWithWebIdentityCredentialProvider` 適用於 PHP 的 SDK 中的 提供者
<a name="assume-role-with-web-identity-provider"></a>

 `Aws\Credentials\CredentialProvider::assumeRoleWithWebIdentityCredentialProvider` 嘗試透過擔任角色載入登入資料。如果環境變數 `AWS_ROLE_ARN` 和 `AWS_WEB_IDENTITY_TOKEN_FILE` 存在，供應商將嘗試使用磁碟上的字符擔任 `AWS_ROLE_ARN` 中指定的角色，而此字符位於 `AWS_WEB_IDENTITY_TOKEN_FILE` 中指定的完整路徑。如果使用環境變數，供應商將嘗試從 `AWS_ROLE_SESSION_NAME` 環境變數設定工作階段。

如果未設定環境變數，提供者將使用預設設定檔，或設定為 `AWS_PROFILE` 的設定檔。根據預設，供應商會從 `~/.aws/config` 和 `~/.aws/credentials` 讀取設定檔，而且可從 `filename` 組態選項中指定的設定檔讀取。供應商將擔任設定檔的 `role_arn` 中的角色，從 `web_identity_token_file` 中設定的完整路徑讀取字符。如果設定在設定檔上，將使用 `role_session_name`。

供應商會做為預設鏈的一部分進行呼叫，也可以直接呼叫。

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

$provider = CredentialProvider::assumeRoleWithWebIdentityCredentialProvider();
// Cache the results in a memoize function to avoid loading and parsing
// the ini file on every API operation
$provider = CredentialProvider::memoize($provider);

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

在預設情況下，這位登入資料供應商會繼承將由 StsClient 用來擔任該角色的已設定區域。您可以選擇提供完整的 StsClient。在任何提供的 StsClient 上，登入資料應設定為 `false`。

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

$stsClient = new StsClient([
    'region'      => 'us-west-2',
    'version'     => 'latest',
    'credentials' => false
])

$provider = CredentialProvider::assumeRoleWithWebIdentityCredentialProvider([
    'stsClient' => $stsClient
]);
// Cache the results in a memoize function to avoid loading and parsing
// the ini file on every API operation
$provider = CredentialProvider::memoize($provider);

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