Los 10 comandos esenciales de AWS CLI para la gestión diaria de recursos

Mantén esta chuleta de AWS CLI a mano para comprobaciones diarias de S3, EC2 e IAM, transferencias, acciones de instancias y revisiones de permisos.

Los 10 Comandos Esenciales de AWS CLI para la Gestión Diaria de Recursos

La AWS CLI suele ser la forma más rápida de responder preguntas diarias de operaciones: qué instancias EC2 están en ejecución, qué cambió en un prefijo de S3 o qué políticas están adjuntas a un usuario. La consola es útil, pero la CLI te proporciona comandos repetibles que puedes pegar en un runbook o script.

Esta chuleta de AWS CLI se centra en comandos prácticos de S3, EC2 e IAM que probablemente usarás durante comprobaciones rutinarias y resolución de problemas.

Prerrequisitos

Antes de comenzar, asegúrate de tener la AWS CLI instalada y configurada en tu sistema. Si no es así, sigue la documentación oficial de AWS para instalarla y configurar tus credenciales (ID de clave de acceso, clave de acceso secreta y región predeterminada).

# Verificar la versión de AWS CLI
aws --version

# Configurar AWS CLI si aún no lo has hecho
aws configure

Comandos Esenciales de AWS CLI para Amazon S3

Usa estos comandos para inspeccionar buckets, mover objetos y previsualizar cambios antes de una transferencia.

1. aws s3 ls - Listar Buckets y Objetos de S3

Este comando te permite listar tus buckets de S3 o los objetos dentro de un bucket específico. A menudo es el primer paso para entender tu panorama de almacenamiento.

Propósito: Ver buckets de S3 o el contenido de un bucket.

Ejemplo:

# Listar todos los buckets de S3 en tu cuenta
aws s3 ls

# Listar objetos en un bucket específico
aws s3 ls s3://tu-nombre-de-bucket/

# Listar objetos recursivamente con tamaños y fechas legibles
aws s3 ls s3://tu-nombre-de-bucket/ --recursive --human-readable --summarize

Consejos:

  • Usa --recursive para listar todos los objetos bajo un prefijo. S3 tiene prefijos, no carpetas reales, aunque la CLI los presenta de manera similar a carpetas. --summarize proporciona un conteo total y tamaño.
  • También puedes especificar una ruta dentro de un bucket: aws s3 ls s3://tu-nombre-de-bucket/prefijo/.

2. aws s3 cp - Copiar Archivos hacia y desde S3

El comando cp es fundamental para transferir archivos entre tu sistema de archivos local y S3, o incluso entre buckets de S3.

Propósito: Copiar archivos locales a S3, objetos de S3 a local, u objetos de S3 entre buckets.

Ejemplo:

# Copiar un archivo local a un bucket de S3
aws s3 cp archivo-local.txt s3://tu-nombre-de-bucket/carpeta/archivo-remoto.txt

# Copiar un objeto de S3 a tu máquina local
aws s3 cp s3://tu-nombre-de-bucket/carpeta/archivo-remoto.txt copia-local.txt

# Copiar un objeto de un bucket de S3 a otro
aws s3 cp s3://bucket-origen/archivo.txt s3://bucket-destino/nuevo-archivo.txt

# Copiar un directorio local a S3 recursivamente
aws s3 cp --recursive carpeta-local/ s3://tu-nombre-de-bucket/carpeta-remota/

Consejos:

  • --recursive es crucial para copiar directorios completos.
  • Usa --exclude e --include para filtrar archivos durante copias recursivas.

3. aws s3 sync - Sincronizar Directorios Locales con S3

sync es un comando potente que sincroniza el contenido de un directorio con un prefijo de S3, o viceversa. Copia solo archivos nuevos o modificados, lo que lo hace muy eficiente para copias de seguridad y despliegues.

Propósito: Sincronizar eficientemente un directorio local con un bucket/prefijo de S3.

Ejemplo:

# Sincronizar un directorio local con un bucket de S3
aws s3 sync directorio-local/ s3://tu-nombre-de-bucket/ruta-remota/

# Sincronizar un bucket de S3 con un directorio local
aws s3 sync s3://tu-nombre-de-bucket/ruta-remota/ directorio-local/

# Simulación para ver qué cambios se harían sin realizarlos realmente
aws s3 sync directorio-local/ s3://tu-nombre-de-bucket/ruta-remota/ --dryrun

Mejor práctica: Siempre usa --dryrun primero para previsualizar los cambios antes de ejecutar una operación sync, especialmente para datos críticos.

4. aws s3 rm - Eliminar Objetos y Buckets de S3

Este comando se usa para eliminar objetos de un bucket de S3 o para eliminar un bucket vacío.

Propósito: Eliminar objetos o buckets vacíos de S3.

Ejemplo:

# Eliminar un solo objeto de un bucket
aws s3 rm s3://tu-nombre-de-bucket/ruta/al/objeto.txt

# Eliminar todos los objetos en una carpeta (prefijo) recursivamente
aws s3 rm s3://tu-nombre-de-bucket/carpeta/ --recursive

# Eliminar un bucket vacío
aws s3 rb s3://tu-nombre-de-bucket/

# Forzar la eliminación de un bucket y todo su contenido (USAR CON EXTREMA PRECAUCIÓN)
aws s3 rb s3://tu-nombre-de-bucket/ --force

Advertencia: aws s3 rb --force es destructivo. Elimina objetos antes de borrar el bucket, pero los buckets con versiones pueden requerir limpieza de versiones con comandos de API de S3 de nivel inferior antes de la eliminación.

Comandos Esenciales de AWS CLI para Amazon EC2 (Elastic Compute Cloud)

EC2 proporciona capacidad de cómputo escalable en la nube de AWS. Estos comandos te ayudan a gestionar tus servidores virtuales.

5. aws ec2 describe-instances - Obtener Detalles de Instancias EC2

Este es tu comando de referencia para recopilar información sobre tus instancias EC2, incluyendo su estado, IPs públicas/privadas, etiquetas y más.

Propósito: Recuperar información detallada sobre una o más instancias EC2.

Ejemplo:

# Describir todas las instancias EC2 en la región actual
aws ec2 describe-instances

# Describir instancias con una etiqueta específica (ej., Environment=Production)
aws ec2 describe-instances \
    --filters "Name=tag:Environment,Values=Production"

# Describir instancias por ID de instancia
aws ec2 describe-instances --instance-ids i-0abcdef1234567890

# Describir instancias y filtrar información específica usando JMESPath (ej., PublicIpAddress)
aws ec2 describe-instances \
    --query "Reservations[*].Instances[*].{InstanceId:InstanceId,PublicIp:PublicIpAddress,State:State.Name}" \
    --output table

Consejos:

  • --filters es potente para reducir resultados basados en estado de instancia, etiquetas, tipos de instancia y más.
  • --query te permite extraer campos de datos específicos y reformatear la salida (ej., usando expresiones JMESPath).

6. aws ec2 start-instances - Iniciar Instancias EC2 Detenidas

Usa este comando para iniciar una o más instancias EC2 detenidas. Las instancias generalmente mantienen sus direcciones IPv4 privadas, pero las direcciones IPv4 públicas pueden cambiar a menos que uses una dirección IP elástica.

Propósito: Iniciar el proceso de inicio para instancias EC2 detenidas.

Ejemplo:

# Iniciar una sola instancia EC2
aws ec2 start-instances --instance-ids i-0abcdef1234567890

# Iniciar múltiples instancias EC2
aws ec2 start-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210

7. aws ec2 stop-instances - Detener Instancias EC2 en Ejecución

Este comando detiene instancias EC2 en ejecución. Para la mayoría de las instancias respaldadas por EBS, la facturación por hora de instancia se detiene mientras la instancia está detenida, pero los volúmenes EBS adjuntos, las direcciones IP elásticas, las instantáneas y algunos recursos relacionados pueden seguir generando cargos.

Propósito: Detener instancias EC2 en ejecución.

Ejemplo:

# Detener una sola instancia EC2
aws ec2 stop-instances --instance-ids i-0abcdef1234567890

# Detener múltiples instancias EC2
aws ec2 stop-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210

# Forzar la detención de una instancia (usar con precaución en sistemas de producción)
aws ec2 stop-instances --instance-ids i-0abcdef1234567890 --force

Advertencia: Forzar la detención de una instancia puede provocar pérdida de datos o corrupción del sistema de archivos si las aplicaciones no se cierran correctamente.

8. aws ec2 terminate-instances - Terminar Instancias EC2

Terminar una instancia elimina permanentemente la instancia. Los volúmenes EBS adjuntos se eliminan solo si su configuración DeleteOnTermination está habilitada.

Propósito: Eliminar permanentemente instancias EC2.

Ejemplo:

# Terminar una sola instancia EC2
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890

# Terminar múltiples instancias EC2
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210

Advertencia: La terminación es una acción permanente e irreversible. Asegúrate de tener copias de seguridad o instantáneas de datos críticos antes de terminar instancias.

Comandos Esenciales de AWS CLI para IAM (Identity and Access Management)

IAM te permite controlar de forma segura el acceso a los servicios y recursos de AWS. Estos comandos ayudan a gestionar usuarios y sus permisos.

9. aws iam list-users - Listar Usuarios de IAM

Este comando proporciona una lista de todos los usuarios de IAM en tu cuenta de AWS, junto con sus ARN, fechas de creación e IDs de usuario.

Propósito: Ver todos los usuarios de IAM configurados en tu cuenta de AWS.

Ejemplo:

# Listar todos los usuarios de IAM
aws iam list-users

# Listar usuarios y extraer campos específicos usando JMESPath
aws iam list-users --query "Users[*].{UserName:UserName,CreateDate:CreateDate,Arn:Arn}" --output table

Mejor práctica: Revisa regularmente tu lista de usuarios de IAM para asegurarte de que solo existan los usuarios necesarios y se eliminen las cuentas antiguas no utilizadas.

10. aws iam list-attached-user-policies - Listar Políticas Adjuntas a un Usuario de IAM

Comprender qué permisos tiene un usuario de IAM es crítico para la seguridad y la resolución de problemas de acceso. Este comando lista las políticas administradas adjuntas directamente a un usuario específico.

Propósito: Mostrar políticas administradas adjuntas a un usuario de IAM.

Ejemplo:

# Listar todas las políticas administradas adjuntas a un usuario de IAM específico
aws iam list-attached-user-policies --user-name TuNombreDeUsuarioIAM

# Listar políticas en línea adjuntas a un usuario de IAM específico
aws iam list-user-policies --user-name TuNombreDeUsuarioIAM

Consejos:

  • Recuerda que los usuarios de IAM pueden recibir permisos de políticas administradas adjuntas, políticas en línea y membresía de grupos. Los roles son identidades IAM separadas; los usuarios no heredan permisos de roles a menos que se les permita asumir un rol.
  • Para obtener los detalles de una política específica, usa aws iam get-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess y luego aws iam get-policy-version.

Conclusión

Comienza con comandos de solo lectura como aws s3 ls, aws ec2 describe-instances y aws iam list-users. Agrega acciones de escritura como sync, stop-instances y terminate-instances solo después de confirmar la cuenta, región, perfil e IDs de recursos objetivo.