

**Esta documentación es para la versión 1 de AWS CLI.**

Anunciamos el próximo fin del soporte para la versión 1 de AWS CLI. Recomendamos migrarse a la versión 2 de AWS CLI. Para ver las fechas, los detalles adicionales y la información sobre cómo realizar la migración, consulte el [anuncio](https://aws.amazon.com/blogs/developer/cli-v1-maintenance-mode-announcement/). Para obtener documentación relacionada con la versión 2 de AWS CLI, consulte la [Guía del usuario de la versión 2](https://docs.aws.amazon.com/cli/latest/userguide/).

# Credenciales de autenticación y acceso para la AWS CLI
<a name="cli-chap-authentication"></a>

Debe establecer cómo AWS CLI se autentica con AWS cuando desarrolla con los servicios de AWS. Para configurar las credenciales de acceso programático para la AWS CLI, elija una de las siguientes opciones. Las opciones están en orden de recomendación.


****  

| Tipo de autenticación | Finalidad | Instrucciones | 
| --- | --- | --- | 
| Credenciales a corto plazo de usuarios de IAM | Utilice las credenciales a corto plazo de los usuarios de IAM, que son más seguras que las credenciales a largo plazo. Si sus credenciales están comprometidas, tiene un tiempo limitado para usarlas antes de que caduquen. | [Autenticación con credenciales a corto plazo para la AWS CLI](cli-authentication-short-term.md) | 
| Los usuarios de IAM en una instancia de Amazon EC2  | Usar metadatos de la instancia de Amazon EC2 para consultar credenciales temporales mediante el rol asignado a la instancia de Amazon EC2. | [Uso de metadatos de instancias de Amazon EC2 como credenciales en la AWS CLI](cli-configure-metadata.md) | 
| Asumir roles para los permisos | Emparejar otro método de credenciales y asumir un rol para el acceso temporal a los Servicios de AWS a los que su usuario podría no tener acceso. | [Uso de un rol de IAM de la AWS CLI](cli-configure-role.md) | 
| Credenciales a largo plazo de usuarios de IAM | (No recomendado) Usar credenciales a largo plazo, que no tienen fecha de caducidad. | [Autenticación con credenciales de usuario de IAM para la AWS CLI](cli-authentication-user.md) | 
| Almacenamiento externo de los  | (No recomendado) Emparejar otro método de credenciales pero almacenar los valores de credenciales en una ubicación fuera de la AWS CLI. Este método es tan seguro como la ubicación externa en la que se almacenan las credenciales. | [Obtención de credenciales con un proceso externo en la AWS CLI](cli-configure-sourcing-external.md) | 

## Prioridad de configuración y credenciales
<a name="cli-chap-authentication-precedence"></a>

Las credenciales y las opciones de configuración se encuentran en varios lugares, como las variables de entorno del sistema o del usuario, los archivos de configuración de AWS locales o declarados explícitamente en la línea de comandos como un parámetro. Ciertas ubicaciones tienen prioridad sobre otras. Las credenciales de la AWS CLI y las opciones de configuración tienen prioridad en el siguiente orden:

1. **[Opciones de línea de comandos](cli-configure-options.md)**: anula la configuración en cualquier otra ubicación, como los parámetros `--region`, `--output` y `--profile`.

1. **[Variables de entorno:](cli-configure-envvars.md)** puede almacenar valores en las variables de entorno de su sistema.

1. **[Asumir rol](cli-configure-role.md)**: asuma los permisos de un rol de IAM mediante la configuración o el comando [https://docs.aws.amazon.com/cli/v1/reference/sts/assume-role.html](https://docs.aws.amazon.com/cli/v1/reference/sts/assume-role.html).

1. **[Asumir rol con identidad web](cli-configure-role.md)**: asuma los permisos de un rol de IAM con identidad web mediante la configuración o el comando [https://docs.aws.amazon.com/cli/v1/reference/sts/assume-role-with-web-identity.html](https://docs.aws.amazon.com/cli/v1/reference/sts/assume-role-with-web-identity.html).

1. **[Archivo de credenciales](cli-configure-files.md)**: los archivos `credentials` y `config` se actualizan al ejecutar el comando `aws configure`. El archivo `credentials` se encuentra en `~/.aws/credentials` en Linux o macOS, o en `C:\Users\USERNAME\.aws\credentials` en Windows.

1. **[Proceso personalizado](cli-configure-sourcing-external.md)**: obtenga sus credenciales de un origen externo.

1. **[Archivo de configuración](cli-configure-files.md)**: los archivos `credentials` y `config` se actualizan al ejecutar el comando `aws configure`. El archivo `config` se encuentra en `~/.aws/config` en Linux o macOS, o en `C:\Users\USERNAME\.aws\config` en Windows.

1. **[Credenciales contenedor](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)**: puede asociar un rol de IAM con cada una de las definiciones de tareas de Amazon Elastic Container Service (Amazon ECS). Las credenciales temporales de ese rol estarán disponibles para los contenedores de esa tarea. Para obtener más información, consulte [Roles de IAM para tareas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.

1. **[Credenciales de perfil de instancia de Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)**: puede asociar un rol de IAM con cada una de las instancias de Amazon Elastic Compute Cloud (Amazon EC2). Las credenciales temporales de ese rol estarán disponibles para el código que se ejecute en la instancia. Las credenciales se entregan a través del servicio de metadatos de Amazon EC2. Para obtener más información, consulte [Roles de IAM para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) en la *Guía del usuario de Amazon EC2* y [Uso de perfiles de instancia](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) en la *Guía del usuario de IAM*.

## Temas adicionales en esta sección
<a name="cli-chap-authentication-topics"></a>
+ [Autenticación con credenciales a corto plazo para la AWS CLI](cli-authentication-short-term.md)
+ [Uso de un rol de IAM de la AWS CLI](cli-configure-role.md)
+ [Autenticación con credenciales de usuario de IAM para la AWS CLI](cli-authentication-user.md)
+ [Uso de metadatos de instancias de Amazon EC2 como credenciales en la AWS CLI](cli-configure-metadata.md)
+ [Obtención de credenciales con un proceso externo en la AWS CLI](cli-configure-sourcing-external.md)

# Autenticación con credenciales a corto plazo para la AWS CLI
<a name="cli-authentication-short-term"></a>

Recomendamos configurar el SDK o la herramienta para utilizar la [autenticación del Centro de identidades de IAM](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html) con opciones de duración de sesión ampliada. Sin embargo, puede copiar y utilizar las credenciales temporales que están disponibles en el portal de acceso de AWS. Las credenciales nuevas deberán copiarse cuando caduquen. Puede utilizar las credenciales temporales en un perfil o como valores para las propiedades del sistema y las variables de entorno.

1. [Inicie sesión en el portal de acceso de AWS](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosignin.html).

1. Siga [estas instrucciones](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtogetcredentials.html) para copiar las credenciales del rol de IAM desde el portal de acceso de AWS.

   1. Para el paso 2 de las instrucciones vinculadas, elija la cuenta de AWS y el nombre del rol de IAM que le concede acceso para sus necesidades de desarrollo. Este rol suele tener un nombre como **PowerUserAccess** o **Developer**. 

   1. Para el paso 4, seleccione la opción **Agregar un perfil al archivo de credenciales de AWS** y copie el contenido. 

1. Cree o abra el archivo `credentials` compartido. Este archivo es `~/.aws/credentials` en sistemas Linux y macOS y `%USERPROFILE%\.aws\credentials` en Windows. Para obtener más información, consulte [Opciones de los archivos de configuración y credenciales en la AWS CLI](cli-configure-files.md). 

1. Agregue el siguiente texto al archivo `credentials` compartido. Reemplace los valores de ejemplo por las credenciales que ha copiado. 

   ```
   [default] 
   aws_access_key_id = AKIAIOSFODNN7EXAMPLE 
   aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   aws_session_token = IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE
   ```

1. Agregue la región y el formato predeterminados que prefiera al archivo compartido `config`. 

   ```
   [default]
   region=us-west-2
   output=json
   
   [profile user1]
   region=us-east-1
   output=text
   ```

Cuando el SDK cree un cliente de servicio, accederá a estas credenciales temporales y las utilizará para cada solicitud. La configuración del rol de IAM elegido en el paso 2a determina el [tiempo de validez de las credenciales temporales](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosessionduration.html). La duración máxima es de doce horas.

Repita estos pasos cada vez que caduquen las credenciales.

# Uso de un rol de IAM de la AWS CLI
<a name="cli-configure-role"></a>

Un [rol de AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) es una herramienta de autorización que permite a un usuario conseguir permisos adicionales o distintos, u obtener permisos para realizar acciones en otra cuenta de AWS. 

**Topics**
+ [Requisitos previos](#cli-role-prereqs)
+ [Información general del uso de roles de IAM](#cli-role-overview)
+ [Configuración y uso de un rol](#cli-role-prepare)
+ [Uso de la autenticación multifactor](#cli-configure-role-mfa)
+ [Roles entre cuentas e ID externo](#cli-configure-role-xaccount)
+ [Especificación de un nombre de sesión de rol para simplificar las auditorías](#cli-configure-role-session-name)
+ [Adopción de un rol con una identidad web](#cli-configure-role-oidc)
+ [Borrado de las credenciales almacenadas en memoria caché](#cli-configure-role-cache)

## Requisitos previos
<a name="cli-role-prereqs"></a>

Para utilizar los comandos de `iam`, debe instalar y configurar AWS CLI. Esto incluye la configuración de un perfil definido, como asumir que un rol está combinado con otro método de credenciales. Para obtener más información, consulte [Instalar, actualizar y desinstalar la AWS CLI](cli-chap-install.md). 

## Información general del uso de roles de IAM
<a name="cli-role-overview"></a>

Puede configurar la AWS Command Line Interface (AWS CLI) para utilizar un rol de IAM definiendo un perfil para dicho rol en el archivo `~/.aws/config`. 

En el siguiente ejemplo se muestra un perfil de rol llamado `marketingadmin`. Si ejecuta comandos con `--profile marketingadmin` (o lo especifica con la variable de entorno [AWS\$1DEFAULT\$1PROFILE](cli-configure-envvars.md)), la AWS CLI utiliza las credenciales definidas en un perfil separado de `user1` para adoptar el rol con el nombre de recurso de Amazon (ARN) `arn:aws:iam::123456789012:role/marketingadminrole`. Puede ejecutar cualquier operación permitida por los permisos asignados a ese rol.

```
[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadminrole
source_profile = user1
```

Debe especificar un `source_profile` que apunte a un perfil con nombre independiente que contenga credenciales de usuario con permiso para utilizar el rol. En el ejemplo anterior, el perfil `marketingadmin` utiliza las credenciales en el perfil `user1`. Al especificar que un comando de la AWS CLI debe utilizar el perfil `marketingadmin`, la AWS CLI busca automáticamente las credenciales del perfil `user1` vinculado y las utiliza para solicitar credenciales temporales para el rol de IAM especificado. La CLI usa la operación [sts:AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) en segundo plano para llevar esto a cabo. Estas credenciales temporales se utilizan para ejecutar el comando de la AWS CLI solicitado. El rol especificado debe tener políticas de permisos de IAM asociadas que permitan que el comando de la AWS CLI solicitado se ejecute.

Para ejecutar un comando AWS CLI desde una instancia Amazon Elastic Compute Cloud (Amazon EC2) o un contenedor de Amazon Elastic Container Service (Amazon ECS), puede utilizar un rol de IAM asociado al perfil de instancia o al contenedor. Si no especifica ningún perfil o no establece ninguna variable de entorno, ese rol se utiliza directamente. De este modo, puede evitar el almacenamiento de las claves de acceso de larga duración en las instancias. También puede utilizar esos roles de instancia o contenedor solo para obtener credenciales para otro rol. Para ello, utilice `credential_source` (en lugar de `source_profile`) para especificar cómo encontrar las credenciales. El atributo `credential_source` es compatible con los siguientes valores:
+ `Environment`: recupera las credenciales fuente de las variables de entorno.
+ `Ec2InstanceMetadata`: utiliza el rol de IAM asociado al perfil de instancia de Amazon EC2.
+ `EcsContainer`: utiliza el rol de IAM adjunto al contenedor de Amazon ECS.

En el siguiente ejemplo, se muestra el mismo rol `marketingadminrole` que se utilizó al hacer referencia a un perfil de instancia de Amazon EC2:

```
[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadminrole
credential_source = Ec2InstanceMetadata
```

Cuando invoca un rol, tiene otras opciones que puede exigir; por ejemplo, el uso de la autenticación multifactor y de un ID externo (que compañías de terceros utilizan para acceder a los recursos de sus clientes). También puede especificar nombres de sesión de roles únicos que puedan auditarse más fácilmente en registros AWS CloudTrail.

## Configuración y uso de un rol
<a name="cli-role-prepare"></a>

Cuando se ejecutan comandos utilizando un perfil que especifica un rol de IAM, la AWS CLI emplea las credenciales del perfil fuente para llamar a AWS Security Token Service (AWS STS) y solicitar credenciales temporales para el rol especificado. El usuario del perfil fuente debe tener permiso para llamar a `sts:assume-role` en el rol del perfil especificado. El rol debe tener una relación de confianza que permita al usuario del perfil de origen utilizarlo. El proceso de recuperación y posterior uso de credenciales temporales en un rol a menudo se denomina *asumir el rol*.

Puede crear un rol en IAM con los permisos que quiera que adopten los usuarios siguiendo el procedimiento de [Creación de un rol para delegar permisos a un usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) de la *Guía del usuario de AWS Identity and Access Management*. Si el rol y el usuario de del perfil de origen se encuentran en la misma cuenta, puede introducir su propio ID de cuenta al configurar la relación de confianza del rol.

Después de crear el rol, modifique la relación de confianza para permitir que el usuario de lo asuma. 

En el siguiente ejemplo se muestra una política de confianza que puede asociarse a un rol. Esta política permite asumir el rol a cualquier usuario de la cuenta 123456789012, ***si*** el administrador de dicha cuenta le concede de forma explícita el permiso `sts:AssumeRole`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

La política de confianza no concede permisos. El administrador de la cuenta debe delegar el permiso para asumir el rol a usuarios individuales asociando una política a los permisos adecuados. En el siguiente ejemplo, se muestra una política que puede asociarse a un usuario y que le permite asumir únicamente el rol `marketingadminrole`. Para obtener más información acerca de cómo conceder permisos de acceso a los usuarios para asumir un rol, consulte [Conceción de permisos de usuario para cambiar de rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_permissions-to-switch.html) en la *Guía del usuario de IAM*.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::123456789012:role/marketingadminrole"
    }
  ]
}
```

------

El usuario no necesita permisos adicionales para ejecutar los comandos de la AWS CLI con el perfil del rol. En cambio, los permisos para ejecutar el comando proceden de los asociados al *rol*. Puede asociar políticas de permisos al rol para especificar qué acciones pueden realizarse en relación con qué recursos de AWS. Para obtener más información acerca de cómo asociar permisos a un rol (que funciona exactamente igual que para un usuario), consulte [Cambio de permisos de un usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html) en la *Guía del usuario de IAM*.

Ahora que ya tiene el perfil del rol, los permisos del rol, la relación de confianza del rol y los permisos de usuario configurados correctamente, puede utilizar el rol en la línea de comandos invocando la opción `--profile`. Por ejemplo, el siguiente comando llama al comando Amazon S3 de `ls` utilizando los permisos adjuntos al rol `marketingadmin` que se definieron en el ejemplo que se incluye al principio de este tema.

```
$ aws s3 ls --profile marketingadmin
```

Si desea utilizar el rol para varias llamadas, puede configurar la variable de entorno `AWS_PROFILE` para la sesión actual desde la línea de comandos. Siempre que esa variable de entorno se haya definido, no será necesario especificar la opción `--profile` en cada comando. 

**Linux o macOS**

```
$ export AWS_PROFILE=marketingadmin
```

**Windows**

```
C:\> setx AWS_PROFILE marketingadmin
```

Para obtener información acerca de la configuración de los usuarios y los roles, consulte [Identidades de IAM (usuarios, grupos y roles)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) y [Roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id-roles.html) en la *Guía del usuario de IAM*.

## Uso de la autenticación multifactor
<a name="cli-configure-role-mfa"></a>

Para mayor seguridad, puede pedir a los usuarios que proporcionen una clave única generada a partir de un dispositivo de autenticación multifactor (MFA), un dispositivo U2F o una aplicación móvil cuando realicen una llamada utilizando el perfil del rol.

En primer lugar, puede elegir modificar la relación de confianza del rol de IAM para el que se requiere MFA. Esto impide que una persona utilice el rol sin autenticarse primero mediante MFA. A modo de ejemplo, vea la línea `Condition` en el siguiente ejemplo. Esta política permite a un usuario llamado `anika` adoptar el rol asociado a la política, pero solo si se autentica mediante MFA. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::123456789012:user/anika" },
      "Action": "sts:AssumeRole",
      "Condition": { "Bool": { "aws:multifactorAuthPresent": true } }
    }
  ]
}
```

------

A continuación, agregue una línea al perfil del rol que especifique el ARN del dispositivo MFA del usuario. El siguiente archivo `config` de ejemplo muestra dos perfiles de rol que utilizan las claves de acceso del usuario `anika` para solicitar credenciales temporales para el rol `cli-role`. El usuario `anika` tiene permisos para asumir el rol, concedidos por la política de confianza del rol.

```
[profile role-without-mfa]
region = us-west-2
role_arn= arn:aws:iam::128716708097:role/cli-role
source_profile=cli-user

[profile role-with-mfa]
region = us-west-2
role_arn= arn:aws:iam::128716708097:role/cli-role
source_profile = cli-user
mfa_serial = arn:aws:iam::128716708097:mfa/cli-user

[profile cli-user]
region = us-west-2
output = json
```

El valor `mfa_serial` puede ser un ARN, tal como se muestra, o el número de serie de un token de MFA de hardware.

El primer perfil, `role-without-mfa`, no requiere MFA. Sin embargo, como la política de confianza asociada al rol del ejemplo anterior requiere MFA, cualquier intento de ejecutar un comando con este perfil produce un error.

```
$ aws iam list-users --profile role-without-mfa

An error occurred (AccessDenied) when calling the AssumeRole operation: Access denied
```

La segunda entrada del perfil, `role-with-mfa`, identifica el dispositivo MFA que se va a utilizar. Cuando el usuario intenta ejecutar un comando de la AWS CLI con este perfil, la AWS CLI le pide al usuario que introduzca la contraseña de un solo uso (OTP) proporcionada a través del dispositivo MFA. Si la autenticación MFA se realiza correctamente, el comando realiza la operación solicitada. La OTP no se muestra en la pantalla.

```
$ aws iam list-users --profile role-with-mfa
Enter MFA code for arn:aws:iam::123456789012:mfa/cli-user:
{
    "Users": [
        {
            ...
```

## Roles entre cuentas e ID externo
<a name="cli-configure-role-xaccount"></a>

Puede permitir que los usuarios de utilicen roles que pertenezcan a diferentes cuentas si configura el rol como un rol entre cuentas. Al crear un rol, establezca el tipo de rol en **Another AWS account (Otra cuenta de )**, tal como se describe en [Creating a Role to Delegate Permissions to an IAM user (Creación de un rol para delegar permisos a un usuario de IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html). Si lo desea, seleccione **Require MFA (Requerir MFA)**. La opción **Require MFA (Requerir NFA)** configura la condición apropiada en la relación de confianza, tal y como se describe en [Uso de la autenticación multifactor](#cli-configure-role-mfa).

Si utiliza un [ID externo](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html) para ofrecer mayor control sobre quién puede utilizar un rol entre cuentas, también debe añadir el parámetro `external_id` al perfil del rol. Esto se utiliza normalmente solo cuando la otra cuenta la controla alguien ajeno a su empresa u organización.

```
[profile crossaccountrole]
role_arn = arn:aws:iam::234567890123:role/SomeRole
source_profile = default
mfa_serial = arn:aws:iam::123456789012:mfa/saanvi
external_id = 123456
```

## Especificación de un nombre de sesión de rol para simplificar las auditorías
<a name="cli-configure-role-session-name"></a>

Cuando muchas personas comparten un rol, la auditoría se convierte en un desafío más. Deseará asociar cada operación invocada con la persona que invocó la acción. Sin embargo, cuando la persona utiliza un rol, la asunción del rol por parte de la persona es una acción independiente de la invocación de una operación y debe relacionar manualmente las dos.

Puede simplificar este proceso especificando nombres de sesión de rol únicos cuando los usuarios asumen un rol. Para ello, añada un parámetro `role_session_name` a cada perfil con nombre en el archivo `config` que especifica un rol. El valor `role_session_name` se pasa a la operación `AssumeRole` y pasa a formar parte del ARN de la sesión de rol. También se incluye en los registros de AWS CloudTrail de todas las operaciones registradas.

Por ejemplo, podría crear un perfil basado en roles de la siguiente manera. 

```
[profile namedsessionrole]
role_arn = arn:aws:iam::234567890123:role/SomeRole
source_profile = default
role_session_name = Session_Maria_Garcia
```

De este modo, la sesión del rol tendría el siguiente ARN.

```
arn:aws:iam::234567890123:assumed-role/SomeRole/Session_Maria_Garcia
```

Además, todos los registros de AWS CloudTrail incluyen el nombre de la sesión del rol en la información obtenida para cada operación.

## Adopción de un rol con una identidad web
<a name="cli-configure-role-oidc"></a>

Puede configurar un perfil para indicar que la AWS CLI debe asumir un rol mediante la [identidad federada web y Open ID Connect (OIDC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html). Al especificar esto en un perfil, la AWS CLI realiza automáticamente la llamada a AWS STS de `AssumeRoleWithWebIdentity` correspondiente.

**nota**  
Cuando especifica un perfil que utiliza un rol de IAM, la AWS CLI realiza las llamadas correspondientes para recuperar las credenciales temporales. Estas credenciales se guardan en `~/.aws/cli/cache`. Los comandos de la AWS CLI posteriores que especifican el mismo perfil utilizan las credenciales temporales almacenadas en caché hasta que caducan. En ese momento, la AWS CLI actualiza automáticamente las credenciales.

Para recuperar y utilizar credenciales temporales utilizando identidades federadas web, puede especificar los siguientes valores de configuración en un perfil compartido:

[role\$1arn](#cli-configure-role)  
Especifica el ARN del rol que se va a adoptar.

web\$1identity\$1token\$1file  
Especifica la ruta a un archivo que contiene un token de acceso de OAuth 2.0 o un ID de token de OpenID Connect proporcionado por el proveedor de identidad. La AWS CLI carga este archivo y pasa su contenido como el argumento `WebIdentityToken` de la operación `AssumeRoleWithWebIdentity`.

[role\$1session\$1name](#cli-configure-role-session-name)  
Especifica un nombre opcional que se aplica a esta sesión de asunción de rol.

A continuación, se muestra un ejemplo de la configuración mínima necesaria para configurar un rol de adopción con un perfil de identidad web:

```
# In ~/.aws/config

[profile web-identity]
role_arn=arn:aws:iam:123456789012:role/RoleNameToAssume
web_identity_token_file=/path/to/a/token
```

También puede establecer esta configuración utilizando [variables de entorno](cli-configure-envvars.md):

AWS\$1ROLE\$1ARN  
ARN del rol que se va a adoptar.

AWS\$1WEB\$1IDENTITY\$1TOKEN\$1FILE  
La ruta al archivo de token de identidad web.

AWS\$1ROLE\$1SESSION\$1NAME  
El nombre aplicado a esta sesión de asunción de rol.

**nota**  
Actualmente, estas variables de entorno solo se aplican al rol que se va a adoptar con un proveedor de identidades web. No se aplican a la configuración general del proveedor de roles de adopción.

## Borrado de las credenciales almacenadas en memoria caché
<a name="cli-configure-role-cache"></a>

Al utilizar un rol, la AWS CLI almacena en caché localmente las credenciales temporales hasta que caducan. La próxima vez que intente utilizarlas, la AWS CLI intentará renovarlas en su nombre. 

Si las credenciales temporales del rol se [revocan](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html), no se renuevan automáticamente y se producirá un error al intentar utilizarlas. Sin embargo, puede eliminar la caché para obligar a la AWS CLI a que recupere nuevas credenciales.

**Linux o macOS**

```
$ rm -r ~/.aws/cli/cache
```

**Windows**

```
C:\> del /s /q %UserProfile%\.aws\cli\cache
```

# Autenticación con credenciales de usuario de IAM para la AWS CLI
<a name="cli-authentication-user"></a>

**aviso**  
Para evitar riesgos de seguridad, no utilice a los usuarios de IAM para la autenticación cuando desarrolle software especialmente diseñado o trabaje con datos reales. En cambio, utilice la federación con un proveedor de identidades como [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html).

En esta sección se explica cómo configurar las opciones básicas con un usuario de IAM. Entre ellas se incluyen sus credenciales de seguridad con los archivos `config` y `credentials`. 

**Contents**
+ [Paso 1: Crear el usuario de IAM](#cli-authentication-user-create)
+ [Paso 2: Obtener las claves de acceso](#cli-authentication-user-get)
+ [Paso 3: Configurar el AWS CLI](#cli-authentication-user-configure.title)
  + [Uso de `aws configure`](#cli-authentication-user-configure-wizard)

## Paso 1: Crear el usuario de IAM
<a name="cli-authentication-user-create"></a>

Siga el procedimiento [Creación de usuarios de IAM (consola)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) de la *Guía del usuario de IAM para crear su usuario de IAM*. 
+ Para **Opciones de permiso**, elija **Adjuntar políticas directamente** para indicar cómo desea asignar permisos a este usuario.
+ La mayoría de los tutoriales del SDK “Introducción” utilizan el servicio Amazon S3 como ejemplo. Para proporcionar a su aplicación acceso completo a Amazon S3, seleccione la política `AmazonS3FullAccess` que desea asociar a este usuario.

## Paso 2: Obtener las claves de acceso
<a name="cli-authentication-user-get"></a>

1. Inicie sesión en Consola de administración de AWS y abra la consola IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. En el panel de navegación de la consola de IAM, seleccione **Usuarios** y, a continuación, seleccione el **`User name`** del usuario que creó anteriormente. 

1. En la página del usuario, selecciona la página **Credenciales de seguridad**. A continuación, en **Claves de acceso**, seleccione **Crear clave de acceso**.

1.  En el **paso 1 de Crear clave de acceso**, elija **Interfaz de línea de comandos (CLI)**.

1. En el **paso 2 de Crear clave de acceso**, introduzca una etiqueta opcional y seleccione **Siguiente**. 

1. En el **paso 3 de Crear clave de acceso**, seleccione **Descargar archivo.csv** para guardar un archivo `.csv` con la clave de acceso y la clave de acceso secreta de su usuario de IAM. Necesitará esta información más tarde.

1. Seleccione Done (Listo).

## Paso 3: Configurar el AWS CLI
<a name="cli-authentication-user-configure.title"></a>

Para el uso general, AWS CLI necesita la siguiente información:
+ ID de clave de acceso
+ Clave de acceso secreta
+ Región de AWS
+ Formato de salida

La AWS CLI almacena esta información en un *perfil* (una colección de opciones) con el nombre `default` en el archivo `credentials`. De forma predeterminada, la información de este perfil se utiliza cuando se ejecuta un comando de la AWS CLI que no especifica explícitamente un perfil que se va a utilizar. Para obtener más información sobre el archivo `credentials`, consulte [Opciones de los archivos de configuración y credenciales en la AWS CLI](cli-configure-files.md).

Utilice uno de los siguientes procedimientos para configurar la AWS CLI.

**Topics**
+ [Uso de `aws configure`](#cli-authentication-user-configure-wizard)

### Uso de `aws configure`
<a name="cli-authentication-user-configure-wizard"></a>

Para el uso general, el comando `aws configure` es la forma más rápida de configurar la instalación de la AWS CLI. Este asistente de configuración le solicitará cada uno de los datos que necesita para empezar. A menos que se especifique lo contrario mediante el uso de la opción `--profile`, la AWS CLI almacena esta información en el perfil `default`.

En el siguiente ejemplo, se configura un perfil `default` con valores de ejemplo. Remplácelos con sus propios valores, tal y como se describe en las siguientes secciones.

```
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
```

En el siguiente ejemplo, se configura un perfil denominado `userprod` con valores de ejemplo. Remplácelos con sus propios valores, tal y como se describe en las siguientes secciones.

```
$ aws configure --profile userprod
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
```

# Uso de metadatos de instancias de Amazon EC2 como credenciales en la AWS CLI
<a name="cli-configure-metadata"></a>

Cuando ejecuta la AWS CLI desde la instancia de Amazon Elastic Compute Cloud (Amazon EC2), puede simplificar el suministro de credenciales a sus comandos. Cada instancia de Amazon EC2 contiene metadatos que la AWS CLI puede consultar directamente para comprobar la existencia de credenciales temporales. Cuando se asocia un rol de IAM a la instancia, la AWS CLI recupera automáticamente y de forma segura las credenciales de los metadatos de la instancia. 

Para deshabilitar este servicio, utilice la variable de entorno [AWS\$1EC2\$1METADATA\$1DISABLED](cli-configure-envvars.md#envvars-list-AWS_EC2_METADATA_DISABLED).

**Topics**
+ [Requisitos previos](#cli-configure-metadata-prereqs)
+ [Configuración de un perfil para metadatos de Amazon EC2](#cli-configure-metadata-configure)

## Requisitos previos
<a name="cli-configure-metadata-prereqs"></a>

Para usar credenciales de Amazon EC2 con la AWS CLI, debe completar lo siguiente:
+ Instalar y configurar la AWS CLI. Para obtener más información, consulte y [Instalar, actualizar y desinstalar la AWS CLI](cli-chap-install.md)[Credenciales de autenticación y acceso para la AWS CLI](cli-chap-authentication.md).
+ Comprende los archivos de configuración y los perfiles con nombre. Para obtener más información, consulte [Opciones de los archivos de configuración y credenciales en la AWS CLI](cli-configure-files.md). 
+ Ha creado un rol AWS Identity and Access Management (IAM) que tiene acceso a los recursos necesarios y ha asociado ese rol a la instancia de Amazon EC2 al lanzarla. Para obtener más información, consulte [Políticas de IAM para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html) en la *Guía del usuario de Amazon EC2* y [Concesión de acceso a aplicaciones que ejecutan instancias Amazon EC2 a los Recursos de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/role-usecase-ec2app.html) en la *Guía del usuario de IAM*.

## Configuración de un perfil para metadatos de Amazon EC2
<a name="cli-configure-metadata-configure"></a>

Para especificar que desea utilizar las credenciales disponibles en el perfil de instancia de Amazon EC2 de alojamiento, utilice la sintaxis siguiente en el perfil con nombre del archivo de configuración. Para obtener instrucciones adicionales, consulte estos pasos a continuación. 

```
[profile profilename]
role_arn = arn:aws:iam::123456789012:role/rolename
credential_source = Ec2InstanceMetadata
region = region
```

1. Cree un perfil en su archivo de configuración.

   ```
   [profile profilename]
   ```

1. Agregue su rol arn de IAM que tenga acceso a los recursos necesarios.

   ```
   role_arn = arn:aws:iam::123456789012:role/rolename
   ```

1. Especifique `Ec2InstanceMetadata` como fuente de credenciales.

   ```
   credential_source = Ec2InstanceMetadata
   ```

1. Establezca su región.

   ```
   region = region
   ```

**Ejemplo**

El siguiente ejemplo presupone el rol *`marketingadminrole`* y utiliza la región `us-west-2` en un perfil de instancia de Amazon EC2 denominado `marketingadmin`.

```
[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadminrole
credential_source = Ec2InstanceMetadata
region = us-west-2
```

# Obtención de credenciales con un proceso externo en la AWS CLI
<a name="cli-configure-sourcing-external"></a>

**aviso**  
En el siguiente tema, se explica cómo se obtienen credenciales desde un proceso externo. Esto puede suponer un riesgo para la seguridad si el comando que genera las credenciales llega a estar accesible para usuarios o procesos no aprobados. Se recomienda utilizar las alternativas seguras y compatibles ofrecidas por la AWS CLI y AWS para reducir el riesgo de que las credenciales se vean comprometidas. Asegúrese de proteger el archivo `config` y todos los archivos auxiliares y herramientas para evitar su divulgación.  
Asegúrese de que la herramienta de credenciales personalizada no escriba ninguna información secreta en `StdErr`, ya que los SDK y la AWS CLI pueden capturar y registrar dicha información y podrían mostrarla a usuarios no autorizados.

Si tiene un método para generar o buscar credenciales que no sea directamente compatible con la AWS CLI, puede configurar la AWS CLI para usarla configurando el ajuste de `credential_process` en el archivo `config`. 

Por ejemplo, puede incluir una entrada similar a la siguiente en el archivo `config`:

```
[profile developer]
credential_process = /opt/bin/awscreds-custom --username helen
```

**Sintaxis**  
Para crear esta cadena de forma que sea compatible con cualquier sistema operativo, siga estas reglas:
+ Si la ruta de acceso o el nombre del archivo contienen un espacio, rodee la ruta completa y el nombre del archivo con comillas dobles (" "). La ruta y el nombre de archivo solo pueden constar de los caracteres: A-Z a-z 0-9 - \$1 . espacio
+ Si un nombre de parámetro o un valor de parámetro contienen un espacio, rodee ese elemento con comillas dobles (" "). Incluya solo el nombre o el valor, no el par.
+ No incluya ninguna variable de entorno en las cadenas. Por ejemplo, no puede incluir `$HOME` ni `%USERPROFILE%`.
+ No especifique la carpeta de inicio como `~`. Debe especificar la ruta completa.

**Ejemplo para Windows**

```
credential_process = "C:\Path\To\credentials.cmd" parameterWithoutSpaces "parameter with spaces"
```

**Ejemplo para Linux o macOS**

```
credential_process = "/Users/Dave/path/to/credentials.sh" parameterWithoutSpaces "parameter with spaces"
```

**Salida prevista del programa Credentials**

La AWS CLI ejecuta el comando tal y como se especifica en el perfil y, a continuación, lee datos de `STDOUT`. El comando que especifique debe generar una salida JSON en `STDOUT` que se ajuste a la siguiente sintaxis.

```
{
  "Version": 1,
  "AccessKeyId": "an AWS access key",
  "SecretAccessKey": "your AWS secret access key",
  "SessionToken": "the AWS session token for temporary credentials", 
  "Expiration": "ISO8601 timestamp when the credentials expire"
}
```

**nota**  
En la fecha de publicación del presente documento, la clave `Version` debe establecerse en `1`. Puede aumentar con el paso del tiempo a medida que la estructura evolucione.

La clave `Expiration` es una marca temporal con formato [ISO8601](https://en.wikipedia.org/wiki/ISO_8601). Si la clave `Expiration` no está presente en la salida de la herramienta, la CLI da por hecho que las credenciales son credenciales a largo plazo que no se actualizan. De otro modo, las credenciales se consideran credenciales temporales y se actualizan automáticamente volviendo a ejecutar el comando `credential_process` antes de que caduquen.

**nota**  
La AWS CLI ***no*** almacena en caché credenciales de procesos externos de la forma que lo hace con las credenciales de asunción de rol. Si se requiere el almacenamiento en caché, debe implementarlo en el proceso externo.

El proceso externo puede devolver un código de devolución distinto de cero para indicar que se ha producido un error al intentar recuperar las credenciales.