

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á.

# Use perfis de configuração AWS compartilhados no AWS SDK for Java 2.x
<a name="credentials-profiles"></a>

Ao usar o arquivo compartilhado `config` e `credentials`, você pode configurar vários perfis. Isso permite que seu aplicativo use vários conjuntos de configuração de credenciais. O perfil `[default]` foi mencionado anteriormente. O SDK usa a [ProfileCredentialsProvider](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/ProfileCredentialsProvider.html)classe para carregar configurações de perfis definidos no `credentials` arquivo compartilhado.

O trecho de código a seguir demonstra como criar um cliente de serviço que usa as configurações definidas como parte do perfil nomeado `my_profile`.

```
Region region = Region.US_WEST_2;
DynamoDbClient ddb = DynamoDbClient.builder()
      .region(region)
      .credentialsProvider(ProfileCredentialsProvider.create("my_profile"))
      .build();
```

## Definir um perfil diferente como padrão
<a name="set-a-custom-profile-as-the-default"></a>

Para definir um perfil diferente do perfil `[default]` como padrão para seu aplicativo, defina a variável de ambiente `AWS_PROFILE` com o nome do seu perfil personalizado.

Para definir essa variável no Linux, macOS ou Unix, use `export`:

```
export AWS_PROFILE="other_profile"
```

Para definir essas variáveis no Windows, use :`set`

```
set AWS_PROFILE="other_profile"
```

Como alternativa, defina a propriedade do sistema `aws.profile` Java com o nome do perfil.

## Recarregar credenciais de perfil
<a name="profile-reloading"></a>

Você pode configurar qualquer provedor de credenciais que tenha um método `profileFile()` em seu construtor para recarregar as credenciais do perfil. Essas classes de perfil de credenciais são: `ProfileCredentialsProvider`, `DefaultCredentialsProvider`, `InstanceProfileCredentialsProvider` e `ProfileTokenProvider.`

**nota**  
O recarregamento da credencial do perfil funciona somente com as seguintes configurações no arquivo de perfil: `aws_access_key_id`, `aws_secret_access_key` e `aws_session_token`.  
Configurações como `region`, `sso_session`, `sso_account_id` e `source_profile` são ignoradas.

Para configurar um provedor de credenciais compatível para recarregar as configurações do perfil, forneça uma instância do [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/profiles/ProfileFileSupplier.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/profiles/ProfileFileSupplier.html) ao método `profileFile()` do construtor. O exemplo de código a seguir demonstra um `ProfileCredentialsProvider` que recarrega as configurações de credenciais do perfil `[default]`.

```
ProfileCredentialsProvider provider = ProfileCredentialsProvider
    .builder()
    .profileFile(ProfileFileSupplier.defaultSupplier())
    .build();

// Set up a service client with the provider instance.
DynamoDbClient dynamoDbClient = DynamoDbClient.builder()
                    .region(Region.US_EAST_1)
                    .credentialsProvider(provider)
                    .build();

/*
    Before dynamoDbClient makes a request, it reloads the credentials settings 
    by calling provider.resolveCredentials().
*/
```

Quando `ProfileCredentialsProvider.resolveCredentials()` é chamado, o SDK para Java recarrega as configurações. `ProfileFileSupplier.defaultSupplier()` é uma das [várias implementações de conveniência](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/profiles/ProfileFileSupplier.html) do `ProfileFileSupplier` fornecidas pelo SDK. Se seu caso de uso exigir, você pode fornecer sua própria implementação.

O exemplo a seguir mostra o uso do método de conveniência `ProfileFileSupplier.reloadWhenModified()`. `reloadWhenModified()` usa um parâmetro `Path`, o que dá flexibilidade na designação do arquivo de origem para a configuração, em vez do local padrão `~/.aws/credentials` (ou `config`).

As configurações serão recarregadas quando `resolveCredentials()` for chamado somente se o SDK determinar que o conteúdo do arquivo foi modificado.

```
Path credentialsFilePath = ...

ProfileCredentialsProvider provider = ProfileCredentialsProvider
    .builder()
    .profileFile(ProfileFileSupplier.reloadWhenModified(credentialsFilePath, ProfileFile.Type.CREDENTIALS))
    .profileName("my-profile")
    .build();
/*
    A service client configured with the provider instance calls provider.resolveCredential()
    before each request.
*/
```

O método `ProfileFileSupplier.aggregate()` mescla o conteúdo de vários arquivos de configuração. Você decide se um arquivo é recarregado por chamada para o `resolveCredentials()` ou se as configurações de um arquivo são fixadas no momento em que ele foi lido pela primeira vez. 

O exemplo a seguir mostra um `DefaultCredentialsProvider` que mescla as configurações de dois arquivos que contêm configurações de perfil. O SDK recarrega as configurações no arquivo apontado pela variável `credentialsFilePath` sempre que `resolveCredentials()` é chamado e as configurações são alteradas. As configurações do objeto `profileFile` permanecem as mesmas.

```
Path credentialsFilePath = ...;
ProfileFile profileFile = ...;

DefaultCredentialsProvider provider = DefaultCredentialsProvider
        .builder()
        .profileFile(ProfileFileSupplier.aggregate(
                ProfileFileSupplier.reloadWhenModified(credentialsFilePath, ProfileFile.Type.CREDENTIALS),
                ProfileFileSupplier.fixedProfileFile(profileFile)))
        .profileName("my-profile")
        .build();
/*
    A service client configured with the provider instance calls provider.resolveCredential()
    before each request.
*/
```