Instalación y Configuración de AWS CLI en Linux

AWS CLI (Command Line Interface) es la herramienta oficial de Amazon para gestionar recursos de AWS directamente desde la terminal. Con AWS CLI instalado en tu VPS Linux, puedes administrar instancias EC2, buckets S3, usuarios IAM y cualquier servicio de Amazon Web Services mediante comandos simples. Esta guía cubre la instalación completa, configuración de credenciales y ejemplos prácticos para empezar a trabajar de inmediato.

Requisitos Previos

  • Servidor Linux (Ubuntu 20.04+, Debian 11+, CentOS 8+, Rocky Linux 8+)
  • Acceso root o usuario con privilegios sudo
  • Conexión a internet
  • Cuenta de AWS con credenciales IAM (Access Key ID y Secret Access Key)

Instalación de AWS CLI v2

AWS CLI v2 es la versión actual y recomendada. Se instala mediante un paquete descargable independiente.

En Ubuntu/Debian

# Descargar el instalador oficial de AWS CLI v2
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

# Descomprimir el archivo
unzip awscliv2.zip

# Ejecutar el instalador
sudo ./aws/install

# Verificar la instalación
aws --version

En CentOS/Rocky Linux

# El proceso es idéntico en distribuciones basadas en RPM
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

# Verificar que aws está disponible en el PATH
which aws
aws --version

Actualizar una instalación existente

# Descargar la nueva versión y actualizar
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update

Configuración de Credenciales

Configuración interactiva básica

# Iniciar el asistente de configuración
aws configure

El comando solicitará cuatro valores:

AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json

Archivos de configuración

AWS CLI almacena la configuración en dos archivos:

# Ver las credenciales almacenadas
cat ~/.aws/credentials

# Ver la configuración general
cat ~/.aws/config

Estructura del archivo ~/.aws/credentials:

[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Estructura del archivo ~/.aws/config:

[default]
region = us-east-1
output = json

Gestión de Perfiles

Los perfiles permiten gestionar múltiples cuentas o entornos de AWS.

# Configurar un perfil adicional (por ejemplo, para producción)
aws configure --profile produccion

# Configurar un perfil para desarrollo
aws configure --profile desarrollo

# Usar un perfil específico en cualquier comando
aws s3 ls --profile produccion

# Establecer el perfil por defecto mediante variable de entorno
export AWS_PROFILE=produccion

# Listar todos los perfiles configurados
aws configure list-profiles

Ejemplo de ~/.aws/credentials con múltiples perfiles:

[default]
aws_access_key_id = AKIA...DEFAULT
aws_secret_access_key = ...

[produccion]
aws_access_key_id = AKIA...PROD
aws_secret_access_key = ...

[desarrollo]
aws_access_key_id = AKIA...DEV
aws_secret_access_key = ...

Formatos de Salida

AWS CLI soporta varios formatos de salida:

# Salida en formato JSON (por defecto)
aws ec2 describe-instances --output json

# Salida en formato texto (útil para scripts)
aws ec2 describe-instances --output text

# Salida en formato tabla (más legible)
aws ec2 describe-instances --output table

# Filtrar campos con --query (sintaxis JMESPath)
aws ec2 describe-instances \
  --query 'Reservations[*].Instances[*].[InstanceId,State.Name,PublicIpAddress]' \
  --output table

Comandos Básicos de S3

# Listar todos los buckets
aws s3 ls

# Listar el contenido de un bucket
aws s3 ls s3://mi-bucket/

# Subir un archivo
aws s3 cp archivo.txt s3://mi-bucket/ruta/archivo.txt

# Descargar un archivo
aws s3 cp s3://mi-bucket/ruta/archivo.txt ./archivo-local.txt

# Sincronizar un directorio local con S3
aws s3 sync /var/backups/ s3://mi-bucket/backups/

# Sincronizar con exclusiones
aws s3 sync /var/www/ s3://mi-bucket/web/ --exclude "*.log" --exclude "tmp/*"

# Borrar un archivo en S3
aws s3 rm s3://mi-bucket/ruta/archivo.txt

# Crear un bucket nuevo
aws s3 mb s3://nuevo-bucket --region eu-west-1

Comandos Básicos de EC2

# Listar todas las instancias EC2
aws ec2 describe-instances

# Listar instancias con filtro por estado
aws ec2 describe-instances \
  --filters "Name=instance-state-name,Values=running" \
  --query 'Reservations[*].Instances[*].[InstanceId,InstanceType,PublicIpAddress]' \
  --output table

# Iniciar una instancia
aws ec2 start-instances --instance-ids i-1234567890abcdef0

# Detener una instancia
aws ec2 stop-instances --instance-ids i-1234567890abcdef0

# Listar grupos de seguridad
aws ec2 describe-security-groups --output table

# Obtener las regiones disponibles
aws ec2 describe-regions --output table

Variables de Entorno

Las variables de entorno tienen prioridad sobre los archivos de configuración:

# Definir credenciales como variables de entorno
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
export AWS_DEFAULT_REGION=us-east-1

# Para uso temporal en scripts
AWS_PROFILE=produccion aws s3 ls

# Ver la configuración activa
aws configure list

Para scripts de automatización, añade las variables al archivo /etc/environment o al perfil del usuario que ejecuta los scripts.

Solución de Problemas

Error: Unable to locate credentials

# Verificar que las credenciales están configuradas
aws configure list

# Comprobar los archivos de configuración
ls -la ~/.aws/
cat ~/.aws/credentials

Error: An error occurred (AuthFailure)

Las credenciales son incorrectas o han expirado. Regenera el Access Key en la consola de IAM y ejecuta aws configure de nuevo.

Error: command not found: aws

# Verificar la ruta de instalación
ls /usr/local/bin/aws

# Añadir al PATH si es necesario
echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc
source ~/.bashrc

Problemas de región

# Especificar la región directamente en el comando
aws s3 ls --region eu-west-1

# O establecerla como variable de entorno
export AWS_DEFAULT_REGION=eu-west-1

Ver detalles del error con modo debug

# Activar modo depuración para diagnóstico detallado
aws s3 ls --debug 2>&1 | head -50

Conclusión

AWS CLI es una herramienta indispensable para administrar recursos de Amazon Web Services desde cualquier servidor Linux. Con los perfiles configurados y los comandos básicos dominados, puedes automatizar backups, gestionar instancias y construir pipelines completos de infraestructura desde la línea de comandos de tu VPS.