Cómo cambiar de usuario/cuenta en AWS CLI (profiles) y arreglar “AccessDenied” en ECR

Cómo cambiar de usuario/cuenta en AWS CLI (profiles) y arreglar “AccessDenied” en ECR

Si usas AWS CLI con varias cuentas (por ejemplo, una personal y otra de tu proyecto), es común que tu terminal “se quede” usando el usuario equivocado. El síntoma típico: comandos como login a ECR o listar S3 regresan AccessDenied, aunque “según tú” sí tienes permisos.

En este tutorial verás cómo confirmar qué identidad estás usando, cómo ubicar tu perfil correcto (ej: example) y cómo forzarlo en tu terminal para que AWS CLI use la cuenta correcta.


¿Por qué pasa esto?

AWS CLI decide qué credenciales usar en este orden (resumen práctico):

  1. Variables de entorno (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_PROFILE)
  2. Perfil por defecto en ~/.aws/credentials
  3. Perfil indicado en ~/.aws/config

Si en algún momento configuraste credenciales “globales” o exportaste un profile en otra sesión, puedes terminar pegándole a otra cuenta sin darte cuenta.


Solución paso a paso: cambiar al perfil correcto (example)

1) Confirma qué identidad estás usando AHORA

Este comando te dice exactamente qué usuario/rol y qué cuenta está usando AWS CLI en esta terminal:

aws sts get-caller-identity --region $AWS_REGION

Si te sale una cuenta tipo 254568415880, significa que estás parado en el user/cuenta equivocada. Para example, lo que quieres ver es:

  • Account: 030512689265

2) Lista tus perfiles y localiza el correcto

AWS CLI guarda perfiles en dos archivos:

cat ~/.aws/config
cat ~/.aws/credentials

Busca entradas como:

  • [profile example] en ~/.aws/config
  • [example] en ~/.aws/credentials

Nota: En config se escribe profile example, pero en credentials normalmente solo example.

3) Fuerza el perfil correcto en esta terminal

La forma más simple y confiable es exportar el profile:

export AWS_PROFILE=example
aws sts get-caller-identity --region $AWS_REGION

Ahora DEBE salir algo como:

{
  "Account": "030512689265",
  ...
}

✅ Si ya ves 030512689265, ya estás usando el perfil correcto.

4) Reintenta login a ECR con el perfil correcto

Una vez que ya estás parado en la cuenta correcta, haz login a ECR:

aws ecr get-login-password --region $AWS_REGION --profile $AWS_PROFILE | \
docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com

✅ Esto ya no debería dar AccessDenied.


Troubleshooting rápido

Caso A: “Sigo viendo 254568… aunque exporté AWS_PROFILE”

Esto casi siempre significa una de estas:

  1. Tu perfil example no existe o está mal escrito
  2. Hay variables de entorno de credenciales directas que están ganando prioridad

Revisa si tienes credenciales exportadas:

env | grep AWS

Si ves AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY, bórralas (solo en esta terminal):

unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN

Vuelve a probar:

export AWS_PROFILE=example
aws sts get-caller-identity --region $AWS_REGION

Caso B: “No tengo AWS_REGION o AWS_ACCOUNT_ID”

Puedes setearlos rápido (ejemplo):

export AWS_REGION=us-east-2
export AWS_ACCOUNT_ID=030512689265

Caso C: “Quiero cambiar de cuenta solo para UN comando”

Puedes hacerlo sin export:

aws sts get-caller-identity --profile example --region $AWS_REGION

Y para ECR:

aws ecr get-login-password --region $AWS_REGION --profile example | \
docker login --username AWS --password-stdin 030512689265.dkr.ecr.${AWS_REGION}.amazonaws.com

Recomendación práctica

Cuando trabajes con varias cuentas, acostúmbrate a correr esto al inicio de cada sesión:

aws sts get-caller-identity --region $AWS_REGION

Te ahorra horas de “¿por qué me da AccessDenied si ayer jalaba?”


Bloque Yoast (para SEO)

  • Frase clave objetivo (Focus keyphrase): cambiar usuario AWS CLI
  • Slug sugerido: cambiar-usuario-aws-cli-profiles
  • Meta title (SEO title): Cómo cambiar de usuario/cuenta en AWS CLI (profiles) y evitar AccessDenied
  • Meta description: Aprende a confirmar qué cuenta usa tu AWS CLI, cambiar al profile correcto (ej. example) y solucionar AccessDenied al hacer login a ECR paso a paso.