

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Utilice perfiles de configuración AWS compartidos en el AWS SDK for Java 2.x
<a name="credentials-profiles"></a>

Utilizando el archivo compartido de `credentials` y `config`, puede configurar varios perfiles. Esto posibilita que su aplicación utilice varios conjuntos de configuración de credenciales. El perfil `[default]` se mencionó anteriormente. El SDK usa la [ProfileCredentialsProvider](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/ProfileCredentialsProvider.html)clase para cargar la configuración de los perfiles definidos en el `credentials` archivo compartido.

El siguiente fragmento de código muestra cómo crear un cliente de servicio que utilice la configuración definida como parte del perfil denominado `my_profile`.

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

## Establecer un perfil predeterminado diferente
<a name="set-a-custom-profile-as-the-default"></a>

Para establecer como predeterminado un perfil distinto del perfil `[default]` para su aplicación, defina la variable de entorno `AWS_PROFILE` con el nombre de su perfil personalizado.

Para establecer esta variable en Linux, MacOS, o Unix, utilice `export`:

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

Para establecer estas variables en Windows, utilice `set`:

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

Como alternativa, defina la propiedad del sistema Java `aws.profile` con el nombre del perfil.

## Volver a cargar credenciales del perfil
<a name="profile-reloading"></a>

Puede configurar cualquier proveedor de credenciales que tenga un método `profileFile()` en su generador para volver a cargar las credenciales del perfil. Estas clases de perfiles de credenciales son: `ProfileCredentialsProvider`, `DefaultCredentialsProvider`, `InstanceProfileCredentialsProvider` y `ProfileTokenProvider.`

**nota**  
La recarga de credenciales de perfil solo funciona con los siguientes ajustes en el archivo de perfil: `aws_access_key_id`, `aws_secret_access_key` y `aws_session_token`.  
Los ajustes de `region`, `sso_session`, `sso_account_id` y `source_profile` no se tienen en cuenta.

Para configurar un proveedor de credenciales compatible para volver a cargar la configuración del perfil, proporcione una instancia del [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) al método de creación del `profileFile()`. El siguiente ejemplo de código demuestra un `ProfileCredentialsProvider` que recarga la configuración de credenciales desde el 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().
*/
```

Cuando se llama a `ProfileCredentialsProvider.resolveCredentials()`, el SDK para Java vuelve a cargar la configuración. `ProfileFileSupplier.defaultSupplier()` es una de las [diversas implementaciones prácticas](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/profiles/ProfileFileSupplier.html) de `ProfileFileSupplier` ofrecidas por el SDK. Si su caso lo requiere, puede proporcionar su propia implementación.

En el ejemplo siguiente, se muestra el uso del método de conveniencia `ProfileFileSupplier.reloadWhenModified()`. `reloadWhenModified()` toma un parámetro `Path`, lo que le da flexibilidad a la hora de designar el archivo de origen de la configuración en lugar de la ubicación estándar `~/.aws/credentials` (o `config`).

La configuración se volverá a cargar cuando `resolveCredentials()` se invoque solo si el SDK determina que el contenido del archivo se ha 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.
*/
```

El método `ProfileFileSupplier.aggregate()` combina el contenido de varios archivos de configuración. Usted decide si un archivo se vuelve a cargar por cada llamada a `resolveCredentials()` o si la configuración de un archivo se fija en el momento en que se leyó por primera vez. 

El siguiente ejemplo muestra un `DefaultCredentialsProvider` que combina la configuración de dos archivos que contienen la configuración del perfil. El SDK vuelve a cargar la configuración del archivo al que apunta la variable `credentialsFilePath` cada vez que se llama a `resolveCredentials()` y cambia la configuración. La configuración del objeto `profileFile` sigue siendo la misma.

```
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.
*/
```