

# Inicio de sesión para el desarrollo local de AWS con credenciales de consola
<a name="cli-configure-sign-in"></a>

Puede usar sus credenciales de inicio de sesión de consola de administración de AWS actuales para el acceso mediante programación a servicios de AWS. Tras un flujo de autenticación basado en un navegador, AWS genera credenciales temporales que funcionan en todas las herramientas de desarrollo locales, como la AWS CLI, AWS Tools para PowerShell y los AWS SDK. Esta característica simplifica el proceso de configuración y administración de las credenciales de AWS CLI, especialmente si prefiere la autenticación interactiva en lugar de administrar las claves de acceso a largo plazo.

Con este proceso, puede autenticarse con las credenciales raíz creadas durante la configuración inicial de la cuenta, un usuario de IAM o una identidad federada del proveedor de identidad, y la AWS CLI administra automáticamente las credenciales temporales por usted. Este enfoque mejora la seguridad al eliminar la necesidad de almacenar localmente las credenciales a largo plazo.

Al ejecutar el comando `aws login`, puede seleccionar una de las sesiones de consola activas o iniciar sesión mediante el flujo de autenticación basado en el navegador, lo que generará credenciales temporales automáticamente. La CLI actualizará automáticamente estas credenciales durante un máximo de 12 horas.

Una vez configurada, la sesión se puede utilizar en la AWS CLI y en otros AWS SDK y herramientas.

**Topics**
+ [Requisitos previos](#cli-configure-sign-in-prerequisites)
+ [Inicie sesión en la AWS CLI con el comando `aws login`.](#cli-configure-sign-in-login-command)
+ [Ejecución de un comando con el perfil](#cli-configure-sign-in-with-profile)
+ [Cierre de sesión con el comando de cierre de sesión de AWS](#cli-configure-sign-in-sign-out)
+ [Solución de problemas](#cli-configure-sign-in-troubleshooting)
+ [Recursos relacionados](#cli-configure-sign-in-resources)

## Requisitos previos
<a name="cli-configure-sign-in-prerequisites"></a>
+ Instale la CLI de AWS. Para obtener más información, consulte [Instalación o actualización de la versión más reciente de AWS CLI](getting-started-install.md). Se requiere una versión mínima de 2.32.0 para usar el comando `aws login`.
+ Acceda para iniciar sesión en la consola de administración de AWS como usuario raíz, usuario de IAM o mediante federación con IAM. Si utiliza IAM Identity Center, vaya a [Configuración de la autenticación de IAM Identity Center con la AWS CLI](cli-configure-sso.md) en su lugar.
+ Asegúrese de que la identidad de IAM tiene los permisos adecuados. Adjunte la política administrada [SignInLocalDevelopmentAccess](https://docs.aws.amazon.com/signin/latest/userguide/security-iam-awsmanpol.html) al usuario de IAM, rol o grupo. Si inicia sesión como usuario raíz, no se requieren permisos adicionales.

## Inicie sesión en la AWS CLI con el comando `aws login`.
<a name="cli-configure-sign-in-login-command"></a>

Ejecute el comando `aws login` para autenticarse con las credenciales de la consola de administración de AWS existentes. Si no ha configurado un perfil anteriormente, se le solicitará información adicional. Para iniciar sesión o configurar un perfil siga los pasos que se indican a continuación.

1. En el terminal que prefiera, ejecute el comando `aws login`.

   ```
   $ aws login
   ```

   Para iniciar sesión en un perfil con nombre o crear uno nuevo, use la opción `--profile`.

   ```
   $ aws login --profile my-dev-profile
   ```
   + Si se trata de un perfil nuevo o no se ha especificado ninguna región de AWS, la AWS CLI le solicitará que proporcione una región.

     ```
     No AWS region has been configured. The AWS region is the geographic location of 
     your AWS resources. 
     
     If you've used AWS before and already have resources in your account, tell us 
     which region they were created in. If you haven't created resources in your account 
     before, you can pick the region closest to you: 
     https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html. 
     You are able to change the region in the CLI at any time with the command 
     `aws configure set region NEW_REGION`.
     
     AWS Region [us-east-1]:
     ```
   + Si el dispositivo que usa la AWS CLI no tiene un navegador, puede usar la opción `--remote` para proporcionar una URL para abrirla en un dispositivo con navegador.

     ```
     $ aws login --remote
     ```
**nota**  
Puede controlar el acceso a la autenticación en el mismo dispositivo (`aws login`) y en varios dispositivos (`aws login --remote`). Utilice los siguientes ARN de recursos en cualquier política de IAM pertinente.  
`arn:aws:signin:{{region}}:{{account-id}}:oauth2/public-client/localhost`: utilice este ARN para la autenticación en el mismo dispositivo con `aws login`.
`arn:aws:signin:{{region}}:{{account-id}}:oauth2/public-client/remote`: utilice este ARN para la autenticación entre dispositivos con `aws login --remote`.

1. La AWS CLI intenta abrir el navegador predeterminado para el proceso de inicio de sesión de la cuenta de AWS.

   ```
   Attempting to open the login page for `us-east-1` in your default browser. 
   If the browser does not open, use the following URL to complete your login:
   https://signin.us-east-1.amazonaws.com/authorize?<abbreviated>
   
   If you cannot connect to this URL, make sure that you have specified a valid region.
   ```
   + Si usó la opción `--remote`, se muestran las instrucciones para iniciar el proceso de inicio de sesión de forma manual en función del tipo de autorización que está usando. La URL que se muestra es una URL única que comienza por https://us-east-1.signin.amazonaws.com/authorize. Una vez que complete el inicio de sesión en el navegador, tendrá que copiar y pegar el código de autorización resultante en la CLI.

     ```
     Browser will not be automatically opened.
     Please visit the following URL:
     https://{{region}}.signin.amazonaws.com/authorize?<abbreviated>
     
     Please enter the authorization code displayed in the browser:
     ```

1. En el navegador, seleccione las credenciales que desee utilizar en la lista que se muestra y, a continuación, vuelva al terminal.
   + Si el perfil que está configurando tiene una sesión de inicio de sesión previamente configurada que no coincide con la nueva sesión, la AWS CLI le pide que confirme que está cambiando la sesión que corresponde al perfil existente.

     ```
     Profile signin is already configured to use session arn:aws:iam::{{0123456789012}}:{{user/ReadOnly}}. 
     Do you want to overwrite it to use arn:aws:iam::{{0123456789012}}:{{user/Admin}} instead? (y/n):.
     ```

1. Un mensaje final describe la configuración del perfil completada. Ahora puede utilizar este perfil para solicitar credenciales. Utilice el comando `aws login` para solicitar y recuperar realmente las credenciales necesarias para ejecutar comandos.

   El token de autenticación se almacena en caché en el disco en el directorio `.aws/login/cache` con un nombre de archivo basado en el perfil resuelto.

### Archivo de configuración generado
<a name="cli-configure-sign-in-generated-config"></a>

Estos pasos dan como resultado la creación del perfil `default` en el archivo `config` similar al siguiente:

```
[default]
login_session = arn:aws:iam::{{0123456789012}}:{{user/username}}
region = us-east-1
```

## Ejecución de un comando con el perfil
<a name="cli-configure-sign-in-with-profile"></a>

Una vez que haya iniciado sesión, puede utilizar sus credenciales para invocar comandos de la AWS CLI con el perfil asociado. En el ejemplo siguiente, se llama al comando `get-caller-identity` que usa el perfil `default`:

```
$ aws sts get-caller-identity
```

Para iniciar sesión en una sesión específica, utilice la opción `--profile`.

```
$ aws sts get-caller-identity --profile {{my}}-dev-profile
```

La AWS CLI y los SDK actualizarán automáticamente las credenciales almacenadas en caché cada 15 minutos, según sea necesario. La sesión general será válida hasta la duración de sesión establecida para la entidad principal de IAM (máximo de 12 horas), tras lo cual deberá volver a ejecutar `aws login`.

## Cierre de sesión con el comando de cierre de sesión de AWS
<a name="cli-configure-sign-in-sign-out"></a>

Cuando haya terminado de utilizar la sesión, puede dejar que las credenciales caduquen o ejecutar el comando `aws logout` para eliminar las credenciales almacenadas en caché. Si no se especifica ningún perfil en la línea de comandos o en la variable de entorno `AWS_PROFILE`, el comando cierra la sesión del perfil predeterminado. En el ejemplo siguiente, se cierra la sesión del perfil predeterminado.

```
$ aws logout
```

Para cerrar sesión de una sesión específica, utilice la opción `--profile`.

```
$ aws logout --profile {{my}}-dev-profile
```

Para cerrar sesión en todos los perfiles que usan credenciales de inicio de sesión, use la opción `--all`.

```
$ aws logout --all
```

### Credenciales almacenadas en caché
<a name="cli-configure-sign-in-sharing-login-creds"></a>

Las credenciales temporales en caché, así como los metadatos necesarios para actualizarlas, se almacenan de forma predeterminada en `~/.aws/login/cache` en Linux y macOS o `%USERPROFILE%\.aws\login\cache` en Windows.

Para almacenar la caché de credenciales de corta duración en una ubicación alternativa, establezca la variable de entorno `AWS_LOGIN_CACHE_DIRECTORY`.

#### Uso compartido de las credenciales de inicio de sesión como credenciales de proceso
<a name="cli-configure-sign-in-cached-credentials"></a>

Es posible que las versiones anteriores de los AWS SDK u otras herramientas de desarrollo aún no admitan las credenciales de consola. Como solución alternativa, puede configurar la AWS CLI para que sirva como proveedor de credenciales de procesos. La CLI seguirá actualizando las credenciales según sea necesario y, al mismo tiempo, las compartirá con las herramientas configuradas para usar el perfil credential\_process.

En este ejemplo, utilice la AWS CLI para iniciar sesión primero para el inicio de sesión del perfil:

```
$ aws login --profile signin
```

A continuación, configure manualmente un perfil con la opción credential\_process, que apunta al perfil de inicio de sesión. Ahora puede configurar los SDK o las herramientas para que usen el perfil de proceso, que invocará la CLI para compartir las credenciales del perfil de inicio de sesión.

```
[profile signin]
login_session = arn:aws:iam::{{0123456789012}}:{{user/username}}
region = us-east-1

[profile process] 
credential_process = aws configure export-credentials --profile signin --format process
region = us-east-1
```

## Solución de problemas
<a name="cli-configure-sign-in-troubleshooting"></a>

Esta página contiene recomendaciones para solucionar problemas relacionados con el inicio de sesión para el desarrollo local de AWS mediante las credenciales de consola de la AWS CLI.

**nota**  
Para solucionar otros problemas que puedan surgir al utilizar la AWS CLI, consulte [Solución de errores para la AWS CLI](cli-chap-troubleshooting.md).

### Errores ExpiredToken o AccessDeniedException después de usar “Inicio de sesión de AWS”
<a name="expired-token-login-troubleshooting"></a>

Al ejecutar un comando de AWS CLI después de ejecutar `aws login` para un perfil determinado, es posible que se produzca un error de credenciales caducadas o no válidas.

```
$ aws s3 ls

An error occurred (ExpiredToken) when calling the ListBuckets operation: The provided token has expired.
```

**Causa posible:** tiene una combinación de credenciales existentes y las nuevas credenciales de inicio de sesión en ese perfil

Ejecute `aws configure list` o `aws configure list --profile <profile name>` para imprimir el lugar desde el que la CLI resuelve las credenciales para el perfil predeterminado o para el perfil dado.

Si la columna TYPE no es de inicio de sesión, significa que todavía hay un tipo diferente de credenciales establecido en el perfil de destino.

En este ejemplo, las credenciales se resuelven desde el archivo de credenciales compartido del directorio principal, que tiene prioridad sobre las credenciales de inicio de sesión.

```
$  aws configure list
NAME       : VALUE                    : TYPE             : LOCATION
profile    : <not set>                : None             : None
access_key : ****************MPLE     : shared-credentials-file :
secret_key : ****************EKEY     : shared-credentials-file :
region     : us-east-1                : config-file      : ~/.aws/config
```

Para solucionar este problema, elimine manualmente las credenciales existentes del archivo de configuración y credenciales del perfil de destino. Una vez que lo haga, debería ver las credenciales de inicio de sesión cuando se vuelva a ejecutar `aws configure list`.

```
$  aws configure list
NAME       : VALUE                    : TYPE             : LOCATION
profile    : <not set>                : None             : None
access_key : ****************MPLE     : login            :
secret_key : ****************EKEY     : login            :
region     : us-east-1                : config-file      : ~/.aws/config
```

Como opción alternativa, el uso de la opción `--debug` mostrará el lugar desde el que la CLI resuelve las credenciales.

### El firewall bloquea el acceso de red cuando se ejecuta “Inicio de sesión de AWS”
<a name="firewall-blocking-login-troubleshooting"></a>

Cuando se ejecuta `aws login`, es posible que aparezca una ventana emergente o un mensaje del software de firewall que impida que la AWS CLI acceda a la red

**Causa posible:** el firewall o el software de seguridad impiden que la AWS CLI abra el puerto utilizado para gestionar la devolución de llamada de OAuth.

Para evitar este problema, utilice la opción `--remote` en su lugar. Esto pedirá que se copie y pegue el código de autorización en lugar de utilizar la devolución de llamada de OAuth.

```
$ aws login --remote
```

## Recursos relacionados
<a name="cli-configure-sign-in-resources"></a>

Los recursos adicionales son los siguientes.
+ [Instalación o actualización de la versión más reciente de AWS CLI](getting-started-install.md)
+ [`aws login` en la referencia de la AWS CLI versión 2](https://docs.aws.amazon.com/cli/latest/reference/)
+ [`aws logout` en la referencia de la AWS CLI versión 2](https://docs.aws.amazon.com/cli/latest/reference/)