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):
- Variables de entorno (
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_PROFILE) - Perfil por defecto en
~/.aws/credentials - 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:
- Tu perfil
exampleno existe o está mal escrito - 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.
English

