

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 适用于 PHP 的 SDK 中的 `assumeRoleWithWebIdentityCredentialProvider` 提供程序
<a name="assume-role-with-web-identity-provider"></a>

 `Aws\Credentials\CredentialProvider::assumeRoleWithWebIdentityCredentialProvider` 尝试通过代入角色来加载凭证。如果存在环境变量 `AWS_ROLE_ARN` 和 `AWS_WEB_IDENTITY_TOKEN_FILE`，则提供商将尝试使用磁盘上的令牌（位于在 `AWS_WEB_IDENTITY_TOKEN_FILE` 中指定的完整路径上），代入在 `AWS_ROLE_ARN` 上指定的角色。如果使用环境变量，则提供商将尝试从 `AWS_ROLE_SESSION_NAME` 环境变量设置会话。

如果未设置环境变量，则提供商将使用默认配置文件或者设置为 `AWS_PROFILE` 的配置文件。默认情况下，提供商从 `~/.aws/credentials` 和 `~/.aws/config` 读取配置文件，并可读取 `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 可以提供完整版。凭证应按照提供的任何`false`方式进行设置 StsClient。

```
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
]);
```