

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

# 使用 适用于 PHP 的 AWS SDK 版本 3 凭证提供商
<a name="guide_credentials"></a>

有关可用凭证机制的参考信息 AWS SDKs，请参阅[和*工具参考指南中的凭证AWS SDKs 和*访问权限](https://docs.aws.amazon.com/sdkref/latest/guide/access.html)。

**重要**  
出于安全考虑，我们*强烈建议*您**不要**使用 root 账户进行 AWS 访问。请务必参阅 *IAM 用户指南*中的 [IAM 中的安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)，了解最新安全建议。

在 适用于 PHP 的 AWS SDK 版本 3 中，凭证提供者的角色是为 SDK 的 AWS 服务 客户端获取和提供凭证。SDK 使用其获取的凭证对每个请求进行加密签名，从而向服务进行身份验证。凭证通常包含访问密钥（一个访问密钥 ID 和一个秘密访问密钥）。

当您使用临时证书时，例如[设置 IAM Identity Center 身份验证](credentials.md#use-idc-for-auth)或将运行时配置为[担任 IAM 角色](assumerole-provider.md)时，会话令牌会添加到访问密钥中，从而提供对 AWS 资源的限时访问权限。

## 适用于 PHP 的 AWS SDK 版本 3 中的凭证提供者是什么？
<a name="cred-provider-defn-php"></a>

凭证提供程序是一个函数，该函数返回一个用 `GuzzleHttp\Promise\PromiseInterface` 实例执行或因 `Aws\Credentials\CredentialsInterface` 而被拒绝的 `Aws\Exception\CredentialsException`。[SDK 提供多种凭证提供程序函数的实现方式](built-in-providers-in-the-sdk.md)，或者您可以[实现自己的](creating-a-custom-provider.md)自定义逻辑来创建凭证或优化凭证加载过程。

凭证提供程序将被传入 `credentials` 客户端构造函数选项。凭证提供程序是异步的，因此每次调用 API 操作时都会强制对其进行延迟评估。因此，将凭证提供程序函数传递给开发工具包客户端构造函数不会立即验证凭证。如果凭证提供程序未返回凭证对象，将因 `Aws\Exception\CredentialsException` 拒绝 API 操作。

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