

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Provedores de credenciais integrados na AWS SDK para PHP versão 3
<a name="built-in-providers-in-the-sdk"></a>

O SDK fornece vários provedores de credenciais integrados que você pode usar individualmente ou combinar em uma [cadeia de provedores de credenciais personalizados](chaining-providers.md). 

Quando você especifica um provedor de credenciais durante a criação do cliente de serviço, o SDK tenta carregar as credenciais usando somente o provedor de credenciais especificado. A [cadeia de provedores de credenciais padrão](guide_credentials_default_chain.md) não é usada. Se o que você deseja é que um cliente de serviço use o provedor `instanceProfile`, é possível ignorar a cadeia padrão especificando o provedor `instanceProfile` no construtor do cliente de serviço:

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

$provider = CredentialProvider::instanceProfile();
// Be sure to memoize the credentials
$memoizedProvider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'credentials' => $memoizedProvider  // The default credential provider chain is not used.
]);
```

**Importante**  
Os provedores de credenciais são invocados sempre que uma operação da API é realizada. Se o carregamento de credenciais for uma tarefa cara (por exemplo, o carregamento do disco ou de um recurso de rede) ou se as credenciais não estiverem armazenadas em cache pelo provedor, considere dispor o provedor de credenciais em uma função `Aws\Credentials\CredentialProvider::memoize`. O provedor de credenciais padrão usado pelo SDK é automaticamente memoizado.

**Topics**
+ [Provedor `login` no SDK para PHP](login-provider.md)
+ [Provedor `assumeRole` no SDK para PHP](assumerole-provider.md)
+ [Provedor `sso` no SDK para PHP](sso-provider.md)
+ [Provedor `defaultProvider` no SDK para PHP](defaultprovider-provider.md)
+ [Provedor `ecsCredentials` no SDK para PHP](ecscredentials-provider.md)
+ [Provedor `env` no SDK para PHP](env-provider.md)
+ [Provedor `assumeRoleWithWebIdentityCredentialProvider` no SDK para PHP](assume-role-with-web-identity-provider.md)
+ [Provedor `ini` no SDK para PHP](ini-provider.md)
+ [Provedor `process` no SDK para PHP](process-provider.md)
+ [Provedor `instanceProfile` no SDK para PHP](instanceprofile-provider.md)

# Provedor `login` no SDK para PHP
<a name="login-provider"></a>

`Aws\Credentials\CredentialProvider::login`tenta carregar credenciais configuradas por uma sessão de login baseada em navegador facilitada por ferramentas como a CLI. AWS Após a autenticação, AWS gera credenciais temporárias que funcionam em todas as ferramentas AWS SDKs e locais.

Com esse processo, você pode se autenticar usando credenciais raiz criadas durante a configuração inicial da conta, um usuário do IAM ou uma identidade federada do seu provedor de identidade, e o SDK para AWS PHP gerencia automaticamente as credenciais temporárias para você. Essa abordagem aprimora a segurança ao eliminar a necessidade de armazenar credenciais de longo prazo localmente.

Ao executar o comando `aws login`, você pode selecionar entre suas sessões ativas do console ou fazer login por meio do fluxo de autenticação baseado em navegador para que sejam geradas credenciais temporárias automaticamente. O AWS SDK for PHP atualizará automaticamente essas credenciais, usando o serviço de login, por até 12 horas.

O provedor de login tenta carregar o token de acesso gerado pelo fluxo de trabalho da sessão de login mencionado anteriormente, com base no perfil fornecido. Se nenhum perfil for fornecido ao chamar o provedor, ele tentará resolver um perfil verificando primeiro a variável de `AWS_PROFILE` ambiente, antes de retornar ao perfil`default`. A configuração do código de entrada pode ser passada para o provedor, onde ele procurará um `region` valor para o cliente do serviço de login usado para atualizar as credenciais. Se nenhuma região for fornecida na matriz de configuração, o provedor tentará resolver uma região verificando a variável de `AWS_REGION` ambiente e, em seguida, um valor de região definido no perfil resolvido. Se nenhuma região for encontrada, o provedor retornará uma promessa rejeitada com instruções sobre como configurar uma região.

O provedor é chamado como parte da cadeia padrão e pode ser chamado diretamente.

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

$provider = CredentialProvider::login(<profile_name>, ['region' => <region>]);
// 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',
    'credentials' => $provider
]);
```

Por padrão, se nenhuma configuração de credenciais for fornecida no cliente de serviço que você deseja usar, esse provedor será chamado como parte da cadeia de `defaultProvider()` credenciais. Nesse cenário, a região do cliente do serviço é automaticamente passada para o `login()` provedor. Também nesse cenário, o valor do perfil passado para o provedor de login será resolvido verificando a variável de `AWS_PROFILE` ambiente, antes de retornar ao perfil`default`.

# Provedor `assumeRole` no SDK para PHP
<a name="assumerole-provider"></a>

Se você usar `Aws\Credentials\AssumeRoleCredentialProvider` para criar credenciais assumindo uma função, você precisa fornecer `'client'` informações com um objeto `StsClient` e detalhes de `'assume_role_params'`, conforme mostrado.

**nota**  
Para evitar a busca desnecessária de AWS STS credenciais em cada operação de API, você pode usar a `memoize` função para gerenciar a atualização automática das credenciais quando elas expirarem. Consulte o código a seguir para ver um exemplo.

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

// Passing Aws\Credentials\AssumeRoleCredentialProvider options directly
$profile = new InstanceProfileProvider();
$ARN = "arn:aws:iam::123456789012:role/xaccounts3access";
$sessionName = "s3-access-example";

$assumeRoleCredentials = new AssumeRoleCredentialProvider([
    'client' => new StsClient([
        'region' => 'us-east-2',
        'version' => '2011-06-15',
        'credentials' => $profile
    ]),
    'assume_role_params' => [
        'RoleArn' => $ARN,
        'RoleSessionName' => $sessionName,
    ],
]);

// To avoid unnecessarily fetching STS credentials on every API operation,
// the memoize function handles automatically refreshing the credentials when they expire
$provider = CredentialProvider::memoize($assumeRoleCredentials);

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

Para obter mais informações sobre`'assume_role_params'`, consulte [AssumeRole](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sts-2011-06-15.html#assumerole).

# Provedor `sso` no SDK para PHP
<a name="sso-provider"></a>

`Aws\Credentials\CredentialProvider::sso` é o provedor de credenciais de autenticação única. Esse provedor também é conhecido como provedor de Centro de Identidade do AWS IAM credenciais.

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

$credentials = CredentialProvider::sso('profile default');

$s3 = new Aws\S3\S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
    'credentials' => $credentials
]);
```

Se você usar um perfil nomeado, substitua o nome do seu perfil por “`default`” no exemplo anterior. Para saber mais sobre como configurar perfis nomeados, consulte [Compartilhados `config` e `credentials` arquivos](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) no *Guia de referência de ferramentas AWS SDKs e ferramentas*. Como alternativa, você pode usar a variável de ambiente [https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-profile](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-profile) para especificar quais configurações do perfil usar. 

Para entender mais como o provedor do IAM Identity Center funciona, consulte [Compreender a autenticação do IAM Identity Center](https://docs.aws.amazon.com/sdkref/latest/guide/understanding-sso.html) no *Guia de referência de ferramentas AWS SDKs e ferramentas*.

# Provedor `defaultProvider` no SDK para PHP
<a name="defaultprovider-provider"></a>

 `Aws\Credentials\CredentialProvider::defaultProvider` é o provedor de credenciais padrão e também é chamado de [cadeia de provedores de credenciais padrão](guide_credentials_default_chain.md). Esse provedor é usado se você omitir uma opção `credentials` ao criar um cliente. Por exemplo, se você criar um S3Client conforme mostrado no trecho a seguir, o SDK usará o provedor padrão:

```
$client = new S3Client([
    'region' => 'us-west-2'
]);
```

Você também pode usar defaultProvider no código se desejar fornecer parâmetros para provedores de credenciais específicos na cadeia. Por exemplo, a amostra a seguir fornece configurações personalizadas de tempo limite de conexão e novas tentativas caso a função de provedor `ecsCredentials` seja usada.

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

$provider = CredentialProvider::defaultProvider([
    'timeout' => '1.5',
    'retries' => 5
]);

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

# Provedor `ecsCredentials` no SDK para PHP
<a name="ecscredentials-provider"></a>

 `Aws\Credentials\CredentialProvider::ecsCredentials` tenta carregar credenciais por uma solicitação `GET`, cujo URI é especificado pela variável de ambiente `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` no contêiner.

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

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

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

# Provedor `env` no SDK para PHP
<a name="env-provider"></a>

O uso de variáveis de ambiente para conter suas credenciais evita que você compartilhe acidentalmente sua AWS chave de acesso secreta. Recomendamos que você nunca adicione suas chaves de AWS acesso diretamente ao cliente em nenhum arquivo de produção.

Para fazer a autenticação no Amazon Web Services, o SDK verifica primeiro a existência de credenciais nas variáveis de ambiente. O SDK usa a função `getenv()` para procurar o `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` e as variáveis de ambiente do `AWS_SESSION_TOKEN`. Essas credenciais são conhecidas como credenciais de ambiente. Para obter instruções sobre como obter esses valores, consulte [Autenticar usando credenciais de curto prazo no Guia](https://docs.aws.amazon.com/sdkref/latest/guide/access-temp-idc.html) de *referência de ferramentas AWS SDKs e ferramentas*.

Se você estiver hospedando seu aplicativo em [AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_PHP_eb.html), poderá definir as variáveis de `AWS_SESSION_TOKEN` ambiente `AWS_ACCESS_KEY_ID``AWS_SECRET_KEY`,, e [por meio do AWS Elastic Beanstalk console](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-cfg-softwaresettings.html#environments-cfg-softwaresettings-console) para que o SDK possa usar essas credenciais automaticamente.

Para obter mais informações sobre como definir variáveis de ambiente, consulte [Suporte a variáveis de ambiente](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html) no *Guia de referência de ferramentas AWS SDKs e ferramentas*. Além disso, para obter uma lista de todas as variáveis de ambiente suportadas pela maioria AWS SDKs, consulte [Lista de variáveis de ambiente](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html#EVarSettings).

Você também pode definir variáveis de ambiente na linha de comando, como mostrado aqui.

 **Linux** 

```
$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
   # The access key for your Conta da AWS.
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   # The secret access key for your Conta da AWS.
$ export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of security token>
   # The temporary session key for your Conta da AWS. 
   # The AWS_SECURITY_TOKEN environment variable can also be used, but is only supported for backward compatibility purposes.
   # AWS_SESSION_TOKEN is supported by multiple AWS SDKs other than PHP.
```

 **Windows** 

```
C:\> SET  AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
   # The access key for your Conta da AWS.
C:\> SET  AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   # The secret access key for your Conta da AWS.
C:\> SET AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of security token>
   # The temporary session key for your Conta da AWS. 
   # The AWS_SECURITY_TOKEN environment variable can also be used, but is only supported for backward compatibility purposes.
   # AWS_SESSION_TOKEN is supported by multiple AWS SDKs besides PHP.
```

 `Aws\Credentials\CredentialProvider::env` tenta carregar credenciais a partir de variáveis de ambiente.

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

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

# Provedor `assumeRoleWithWebIdentityCredentialProvider` no SDK para PHP
<a name="assume-role-with-web-identity-provider"></a>

 `Aws\Credentials\CredentialProvider::assumeRoleWithWebIdentityCredentialProvider` tenta carregar credenciais assumindo uma função. Se as variáveis de ambiente `AWS_ROLE_ARN` e `AWS_WEB_IDENTITY_TOKEN_FILE` estiverem presentes, o provedor tentará assumir a função especificada no `AWS_ROLE_ARN` usando o token no disco no caminho completo especificado em `AWS_WEB_IDENTITY_TOKEN_FILE`. Se as variáveis de ambiente forem usadas, o provedor tentará definir a sessão na variável de ambiente `AWS_ROLE_SESSION_NAME`.

Se as variáveis de ambiente não estiverem definidas, o provedor usará o perfil padrão ou o definido como `AWS_PROFILE`. O provedor lê perfis de `~/.aws/credentials` e `~/.aws/config` por padrão, e pode ler de perfis especificados na opção de configuração `filename`. O provedor assumirá a função no `role_arn` do perfil lendo um token do caminho completo definido no `web_identity_token_file`. O `role_session_name` será usado se definido no perfil.

O provedor será chamado como parte da cadeia padrão e poderá ser chamado diretamente.

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

Por padrão, esse provedor de credenciais herdará a região configurada que será usada pelo StsClient para assumir a função. Opcionalmente, um completo StsClient pode ser fornecido. As credenciais devem ser definidas conforme `false` as fornecidas 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
]);
```

# Provedor `ini` no SDK para PHP
<a name="ini-provider"></a>

 `Aws\Credentials\CredentialProvider::ini` tenta carregar credenciais dos arquivos de `config` e `credentials` compartilhados. Por padrão, o SDK tenta carregar o perfil “padrão” do AWS `credentials` arquivo compartilhado localizado em`~/.aws/credentials`. Se o SDK encontrar a variável de `AWS_SDK_LOAD_NONDEFAULT_CONFIG` ambiente, ele também verificará se há um perfil “padrão” no AWS `config` arquivo compartilhado localizado em`~/.aws/config`.

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

$provider = CredentialProvider::ini();
// 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
]);
```

Você pode usar um perfil personalizado ou o local de um arquivo .ini fornecendo argumentos à função que cria o provedor.

```
$profile = 'production';
$path = '/full/path/to/credentials.ini';

$provider = CredentialProvider::ini($profile, $path);
$provider = CredentialProvider::memoize($provider);

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

# Provedor `process` no SDK para PHP
<a name="process-provider"></a>

 `Aws\Credentials\CredentialProvider::process`tenta carregar credenciais executando o `credential_process` valor especificado em um perfil em um arquivo de [AWS configuração compartilhado](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html). 

Por padrão, o SDK tenta carregar primeiro o perfil “padrão” a partir do AWS `credentials` arquivo compartilhado localizado em`~/.aws/credentials`. Se o perfil “padrão” não for encontrado no arquivo `credentials` compartilhado, o SDK procurará o perfil padrão no arquivo `config` compartilhado. Veja a seguir um exemplo de configuração para o arquivo `credentials` compartilhado.

```
[default]
credential_process = /path/to/file/credential_returning_executable.sh --custom-command custom_parameter
```

O SDK chamará o comando `credential_process` exatamente como fornecido usando a função `shell_exec` do PHP e, em seguida, lerá dados JSON de stdout. O comando `credential_process` deve gravar as credenciais em stdout no seguinte formato:

```
{
    "Version": 1,
    "AccessKeyId": "",
    "SecretAccessKey": "",
    "SessionToken": "",
    "Expiration": ""
}
```

 `SessionToken` e `Expiration` são opcionais. Se presente, as credenciais serão tratadas como temporárias.

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

$provider = CredentialProvider::process();
// 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
]);
```

Você pode usar um perfil personalizado ou o local de um arquivo .ini fornecendo argumentos à função que cria o provedor.

```
$profile = 'production';
$path = '/full/path/to/credentials.ini';

$provider = CredentialProvider::process($profile, $path);
$provider = CredentialProvider::memoize($provider);

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

# Provedor `instanceProfile` no SDK para PHP
<a name="instanceprofile-provider"></a>

 `Aws\Credentials\CredentialProvider::instanceProfile` tenta carregar credenciais de um perfil do IAM especificado em um perfil de instância do Amazon EC2.

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

$provider = CredentialProvider::instanceProfile();
// Be sure to memoize the credentials
$memoizedProvider = CredentialProvider::memoize($provider);

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

Por padrão, o provedor de credenciais tentará obter as credenciais três vezes. O número de novas tentativas pode ser definido com a opção `retries` e totalmente desabilitado definindo a opção como `0`, como mostrado no código a seguir.

```
use Aws\Credentials\CredentialProvider;

$provider = CredentialProvider::instanceProfile([
    'retries' => 0
]);
$memoizedProvider = CredentialProvider::memoize($provider);
```

Se a variável de ambiente `AWS_METADATA_SERVICE_NUM_ATTEMPTS` estiver disponível, seu valor terá precedência sobre a opção de novas tentativas mostrada anteriormente. 

**nota**  
Você pode desabilitar essa tentativa de carga em perfis de instâncias do Amazon EC2 definindo a variável de ambiente `AWS_EC2_METADATA_DISABLED` como `true`.