Cómo configurar y gestionar múltiples perfiles de AWS CLI de manera eficiente
Aprenda a gestionar eficientemente múltiples cuentas y entornos de AWS utilizando perfiles con nombre de AWS CLI. Esta guía proporciona instrucciones paso a paso sobre cómo configurar, cambiar entre y proteger diferentes conjuntos de credenciales y configuraciones de AWS. Optimice su flujo de trabajo en la nube dominando la gestión de perfiles para mejorar la productividad y la seguridad.
Cómo configurar y gestionar múltiples perfiles de AWS CLI de manera eficiente
Los perfiles de AWS CLI mantienen separadas tus cuentas, roles, regiones y configuraciones de salida. Si gestionas los entornos de desarrollo, staging y producción desde el mismo portátil, los perfiles te ayudan a evitar ejecutar un comando contra la cuenta de AWS equivocada.
El objetivo es simple: hacer explícita la cuenta deseada, reducir las credenciales de larga duración cuando sea posible y darte comprobaciones rápidas antes de comandos destructivos.
Configuración de tu archivo de configuración de AWS CLI
La AWS CLI almacena la configuración de los perfiles en dos archivos compartidos:
~/.aws/credentialspara claves de acceso y credenciales de sesión.~/.aws/configpara región, formato de salida, configuración de roles y otras opciones de CLI.
En Windows, los mismos archivos se encuentran en %USERPROFILE%\.aws\.
Perfil predeterminado
Cuando ejecutas aws configure sin --profile, escribe la configuración para [default]. La CLI usa este perfil cuando no especificas otro y ninguna variable de entorno relevante lo anula.
# Ejemplo de un perfil predeterminado en ~/.aws/credentials
[default]
aws_access_key_id = YOUR_DEFAULT_ACCESS_KEY
aws_secret_access_key = YOUR_DEFAULT_SECRET_KEY
# Ejemplo de un perfil predeterminado en ~/.aws/config
[default]
region = us-east-1
output = json
Creación de perfiles con nombre
Puedes crear perfiles con nombre usando aws configure --profile:
aws configure --profile dev
aws configure --profile prod
También puedes editar los archivos directamente. Usa nombres de perfil simples en ~/.aws/credentials:
~/.aws/credentials:
[default]
aws_access_key_id = YOUR_DEFAULT_ACCESS_KEY
aws_secret_access_key = YOUR_DEFAULT_SECRET_KEY
[prod]
aws_access_key_id = YOUR_PROD_ACCESS_KEY
aws_secret_access_key = YOUR_PROD_SECRET_KEY
[dev]
aws_access_key_id = YOUR_DEV_ACCESS_KEY
aws_secret_access_key = YOUR_DEV_SECRET_KEY
En ~/.aws/config, los perfiles con nombre usan el prefijo profile :
~/.aws/config:
[default]
region = us-east-1
output = json
[profile prod]
region = us-west-2
output = text
[profile dev]
region = eu-central-1
output = json
Detalles importantes:
- Al definir perfiles en
~/.aws/config, debes anteponer el nombre del perfil conprofile(por ejemplo,[profile prod]). Esto es diferente de~/.aws/credentials, donde usas solo el nombre del perfil (por ejemplo,[prod]). - El perfil
[default]no actúa automáticamente como padre de los perfiles con nombre. Siprodnecesita una región, estableceregionbajo[profile prod]o proporciónala de otra manera.
Cambio entre perfiles
Una vez que tienes configurados tus perfiles con nombre, puedes usarlos especificando la opción --profile con tus comandos de AWS CLI.
Ejemplo: Para listar los buckets de S3 en tu cuenta de producción:
aws s3 ls --profile prod
Ejemplo: Para describir instancias EC2 en tu cuenta de desarrollo:
aws ec2 describe-instances --profile dev
Antes de ejecutar un comando arriesgado, verifica quién eres:
aws sts get-caller-identity --profile prod
Esto devuelve el ID de cuenta y ARN de las credenciales que la CLI está utilizando.
Configuración de un perfil predeterminado para el entorno
Escribir constantemente --profile puede ser tedioso. Puedes establecer AWS_PROFILE para tu sesión actual del shell.
Linux/macOS:
export AWS_PROFILE=prod
# Ahora, los comandos usarán el perfil 'prod' por defecto
aws s3 ls
aws ec2 describe-instances
Para desactivarlo:
unset AWS_PROFILE
Símbolo del sistema de Windows:
set AWS_PROFILE=prod
# Ahora, los comandos usarán el perfil 'prod' por defecto
aws s3 ls
Para desactivarlo:
set AWS_PROFILE=
Windows PowerShell:
$env:AWS_PROFILE = "prod"
# Ahora, los comandos usarán el perfil 'prod' por defecto
aws s3 ls
Para desactivarlo:
Remove-Item Env:\AWS_PROFILE
Las opciones de línea de comandos tienen mayor prioridad que las variables de entorno. Si AWS_PROFILE=dev está establecido pero ejecutas aws s3 ls --profile prod, el comando usa prod.
Gestión de múltiples cuentas de AWS con perfiles
Los perfiles son útiles para:
- Desarrollo vs. Producción: Mantener separados tus entornos de desarrollo y producción por seguridad.
- Diferentes equipos/proyectos: Aislar recursos y permisos para equipos o proyectos distintos.
- Acceso entre cuentas: Si eres administrador o desarrollador que necesita gestionar recursos en múltiples cuentas.
Mejor práctica: Uso de roles de IAM
Evita almacenar claves de acceso de larga duración para cada cuenta. Un patrón común es mantener un perfil de origen o perfil SSO, y luego asumir roles en las cuentas de destino.
Para la asunción de roles, configura un perfil como este:
# ~/.aws/config
[profile dev-role]
role_arn = arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME
source_profile = default
region = us-east-1
output = json
Cuando ejecutas un comando con --profile dev-role, la CLI usa el perfil default para llamar a AWS STS, asume el rol y usa credenciales temporales para el comando.
Si tu organización usa IAM Identity Center, tu perfil puede usar configuraciones de SSO en lugar de claves de acceso:
[profile sandbox]
sso_start_url = https://example.awsapps.com/start
sso_region = us-east-1
sso_account_id = 123456789012
sso_role_name = DeveloperAccess
region = us-east-1
output = json
Luego autentícate con:
aws sso login --profile sandbox
Opciones de configuración avanzadas
Además de las credenciales y la región, los perfiles pueden especificar otras configuraciones de AWS CLI:
output:json,text,tableregion: por ejemplo,us-east-1s3.max_concurrent_requests: Número de solicitudes paralelas para operaciones de S3.s3.max_queue_size: Tamaño de la cola para cargas multipartes de S3.cli_binary_format: Cómo se interpretan los parámetros binarios en AWS CLI v2.
Ejemplo: Configuración de ajustes de S3 para un perfil específico
Usa aws configure set para evitar errores de sangría:
aws configure set s3.max_concurrent_requests 20 --profile s3-optimized
aws configure set s3.max_queue_size 10000 --profile s3-optimized
Esto escribe los ajustes de S3 bajo el perfil en ~/.aws/config:
# ~/.aws/config
[profile s3-optimized]
region = us-east-1
output = json
s3 =
max_concurrent_requests = 20
max_queue_size = 10000
Consejos y mejores prácticas
- Usa nombres de perfil descriptivos: Haz que los nombres de tus perfiles sean claros e indicativos de la cuenta o entorno que representan (por ejemplo,
prod-admin,dev-web,sandbox-research). - Protege tus credenciales: Nunca subas tu archivo
~/.aws/credentialsal control de versiones. Usa roles de IAM para acceso entre cuentas siempre que sea posible para evitar almacenar claves de acceso de larga duración. - Revisa regularmente las claves de acceso: Si debes usar claves de acceso, gíralas periódicamente y desactiva las antiguas.
- Aprovecha las variables de entorno: Usa
AWS_PROFILEpara cambios temporales o para pipelines de CI/CD donde necesites apuntar a cuentas específicas. - Vigila las variables de entorno de credenciales:
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEYyAWS_SESSION_TOKENpueden anular las credenciales de los perfiles. Límpialas si la CLI parece usar la identidad incorrecta. - Nombra los perfiles según el radio de explosión: Nombres como
prod-readonly,prod-adminysandbox-devson más seguros que nombres vagos comomainotest.
Conclusión práctica
Usa perfiles para cada cuenta y rol que toques con frecuencia, y verifica aws sts get-caller-identity antes de cambiar recursos de producción. Prefiere perfiles basados en SSO o roles sobre claves de acceso de larga duración, y ten en cuenta las variables de entorno cuando un comando parezca apuntar a la cuenta equivocada.