Los 10 comandos esenciales de AWS CLI para la gestión diaria de recursos
Introducción
En el dinámico mundo de la computación en la nube, Amazon Web Services (AWS) destaca como una plataforma líder, que ofrece una gran variedad de servicios. Si bien la Consola de administración de AWS proporciona una interfaz gráfica fácil de usar, la Interfaz de línea de comandos de AWS (CLI) ofrece una potencia y flexibilidad inigualables para administrar recursos. La CLI es una herramienta de código abierto que le permite interactuar con los servicios de AWS mediante comandos en su terminal, lo que la hace indispensable para la automatización, la creación de scripts y las tareas operativas diarias eficientes.
Dominar la AWS CLI puede aumentar significativamente su productividad, permitiéndole inspeccionar, crear, modificar y eliminar rápidamente recursos en sus cuentas de AWS. Este artículo sirve como una hoja de trucos crucial, destacando los 10 comandos esenciales de AWS CLI que todo usuario de AWS debe conocer para la gestión diaria de recursos, centrándose específicamente en Amazon S3 (almacenamiento), Amazon EC2 (cómputo) y AWS IAM (identidad y administración de accesos).
Ya sea usted un desarrollador, un ingeniero de operaciones o un administrador de la nube, estos comandos le proporcionarán las herramientas para administrar su entorno de AWS de manera más efectiva, solucionar problemas más rápidamente y automatizar tareas repetitivas. Sumerjámonos en los comandos que acelerarán su flujo de trabajo diario.
Prerrequisitos
Antes de comenzar, asegúrese de tener instalada y configurada la AWS CLI en su sistema. Si no es así, siga la documentación oficial de AWS para instalarla y configurar sus credenciales (ID de clave de acceso, clave de acceso secreta y región predeterminada).
# Comprobar la versión de AWS CLI
aws --version
# Configurar AWS CLI (si aún no lo ha hecho)
aws configure
Comandos esenciales de AWS CLI para Amazon S3 (Servicio de almacenamiento simple)
Amazon S3 es un servicio de almacenamiento de objetos altamente escalable, duradero y disponible. Estos comandos son vitales para administrar sus depósitos (buckets) y objetos.
1. aws s3 ls - Listar depósitos y objetos de S3
Este comando le permite enumerar sus depósitos de S3 o los objetos dentro de un depósito específico. A menudo es el primer paso para comprender su panorama de almacenamiento.
Propósito: Ver depósitos de S3 o el contenido de un depósito.
Ejemplo:
# Listar todos los depósitos de S3 en su cuenta
aws s3 ls
# Listar objetos en un depósito específico
aws s3 ls s3://nombre-de-su-deposito/
# Listar objetos de forma recursiva con tamaños y fechas legibles para humanos
aws s3 ls s3://nombre-de-su-deposito/ --recursive --human-readable --summarize
Consejos:
* Use --recursive para enumerar todos los objetos y subcarpetas. --summarize proporciona un recuento total y un tamaño.
* También puede especificar una ruta dentro de un depósito: aws s3 ls s3://nombre-de-su-deposito/prefijo/.
2. aws s3 cp - Copiar archivos hacia y desde S3
El comando cp es fundamental para transferir archivos entre su sistema de archivos local y S3, o incluso entre depósitos de S3.
Propósito: Copiar archivos locales a S3, objetos de S3 a local, o objetos de S3 entre depósitos.
Ejemplo:
# Copiar un archivo local a un depósito de S3
aws s3 cp archivo-local.txt s3://nombre-de-su-deposito/carpeta/archivo-remoto.txt
# Copiar un objeto de S3 a su máquina local
aws s3 cp s3://nombre-de-su-deposito/carpeta/archivo-remoto.txt copia-local.txt
# Copiar un objeto de un depósito de S3 a otro
aws s3 cp s3://deposito-origen/archivo.txt s3://deposito-destino/nuevo-archivo.txt
# Copiar un directorio local a S3 de forma recursiva
aws s3 cp --recursive carpeta-local/ s3://nombre-de-su-deposito/carpeta-remota/
Consejos:
* --recursive es crucial para copiar directorios completos.
* Use --exclude y --include para filtrar archivos durante las 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. Solo copia archivos nuevos o modificados, lo que lo hace muy eficiente para copias de seguridad y implementaciones.
Propósito: Sincronizar eficientemente un directorio local con un depósito/prefijo de S3.
Ejemplo:
# Sincronizar un directorio local con un depósito de S3
aws s3 sync directorio-local/ s3://nombre-de-su-deposito/ruta-remota/
# Sincronizar un depósito de S3 con un directorio local
aws s3 sync s3://nombre-de-su-deposito/ruta-remota/ directorio-local/
# Ejecución de prueba para ver qué cambios se realizarían sin realizarlos realmente
aws s3 sync directorio-local/ s3://nombre-de-su-deposito/ruta-remota/ --dryrun
Mejor práctica: Siempre use --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 depósitos de S3
Este comando se utiliza para eliminar objetos de un depósito de S3 o para eliminar un depósito vacío.
Propósito: Eliminar objetos o depósitos vacíos de S3.
Ejemplo:
# Eliminar un solo objeto de un depósito
aws s3 rm s3://nombre-de-su-deposito/ruta/al/objeto.txt
# Eliminar todos los objetos en una carpeta (prefijo) recursivamente
aws s3 rm s3://nombre-de-su-deposito/carpeta/ --recursive
# Eliminar un depósito vacío
aws s3 rb s3://nombre-de-su-deposito/
# Eliminar por la fuerza un depósito y todo su contenido (¡ÚSELO CON EXTREMA PRECAUCIÓN!)
aws s3 rb s3://nombre-de-su-deposito/ --force
Advertencia: El comando aws s3 rb --force es destructivo e irreversible. Úselo con extrema precaución, ya que eliminará todos los objetos y versiones dentro del depósito especificado.
Comandos esenciales de AWS CLI para Amazon EC2 (Cloud Informático Elástico)
EC2 proporciona capacidad informática escalable en la nube de AWS. Estos comandos le ayudan a administrar sus servidores virtuales.
5. aws ec2 describe-instances - Obtener detalles de instancias EC2
Este es su comando principal para recopilar información sobre sus instancias EC2, incluido 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 (p. ej., Environment=Production)
aws ec2 describe-instances \n --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 (p. ej., PublicIpAddress)
aws ec2 describe-instances \n --query "Reservations[*].Instances[*].{InstanceId:InstanceId,PublicIp:PublicIpAddress,State:State.Name}" \n --output table
Consejos:
* --filters es potente para acotar los resultados basándose en el estado de la instancia, etiquetas, tipos de instancia y más.
* --query le permite extraer campos de datos específicos y reformatear la salida (p. ej., usando expresiones JMESPath).
6. aws ec2 start-instances - Iniciar instancias EC2 detenidas
Use este comando para iniciar una o más instancias EC2 detenidas. Las instancias conservarán sus direcciones IP privadas.
Propósito: Iniciar el proceso de arranque para instancias EC2 detenidas.
Ejemplo:
# Iniciar una sola instancia EC2
aws ec2 start-instances --instance-ids i-0abcdef1234567890
# Iniciar varias 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 las instancias EC2 en ejecución. No se le cobrará por el uso de la instancia mientras están detenidas, solo por los volúmenes EBS adjuntos.
Propósito: Detener instancias EC2 en ejecución.
Ejemplo:
# Detener una sola instancia EC2
aws ec2 stop-instances --instance-ids i-0abcdef1234567890
# Detener varias instancias EC2
aws ec2 stop-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210
# Forzar la detención de una instancia (use 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 apagan de forma segura.
8. aws ec2 terminate-instances - Terminar instancias EC2
Terminar una instancia la elimina permanentemente junto con sus volúmenes EBS asociados (a menos que estén configurados para persistir tras la terminación). Esta acción es irreversible.
Propósito: Eliminar permanentemente instancias EC2.
Ejemplo:
# Terminar una sola instancia EC2
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890
# Terminar varias instancias EC2
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210
Advertencia: La terminación es una acción permanente e irreversible. Asegúrese de tener copias de seguridad o instantáneas de los datos críticos antes de terminar las instancias.
Comandos esenciales de AWS CLI para IAM (Administración de identidad y accesos)
IAM le permite controlar de forma segura el acceso a los servicios y recursos de AWS. Estos comandos ayudan a administrar 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 su cuenta de AWS, junto con sus ARN, fechas de creación e ID de usuario.
Propósito: Ver todos los usuarios de IAM configurados en su 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: Revise regularmente su lista de usuarios de IAM para asegurarse de que solo existan los usuarios necesarios y de que se eliminen las cuentas antiguas e innecesarias.
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 fundamental para la seguridad y la solución de problemas de acceso. Este comando enumera las políticas administradas adjuntas directamente a un usuario específico.
Propósito: Mostrar las 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 NombreDeUsuarioIAM
# Listar políticas integradas adjuntas a un usuario de IAM específico
aws iam list-user-policies --user-name NombreDeUsuarioIAM
Consejos:
* Recuerde que los usuarios también pueden heredar permisos de grupos (aws iam list-groups-for-user) y roles, o tener políticas integradas (aws iam list-user-policies).
* Para obtener los detalles de una política específica, use aws iam get-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess y luego aws iam get-policy-version.
Conclusión
La AWS CLI es una herramienta increíblemente poderosa para cualquiera que administre recursos en Amazon Web Services. Los diez comandos descritos en esta guía, que cubren S3, EC2 e IAM, forman la base de las tareas operativas diarias, lo que le permite enumerar, crear, modificar y eliminar recursos en la nube con eficiencia y precisión.
Al integrar estos comandos en su rutina, puede optimizar sus flujos de trabajo, automatizar tareas repetitivas y obtener información más profunda sobre su entorno de AWS. Recuerde que la AWS CLI ofrece una funcionalidad extensa más allá de estos comandos esenciales; lo alentamos a explorar la documentación oficial de AWS CLI para expandir aún más su conjunto de herramientas y descubrir capacidades más avanzadas. La práctica y la exploración regulares solidificarán su experiencia y le permitirán aprovechar todo el potencial de AWS.
Comience a practicar estos comandos hoy mismo y observe cómo se dispara su productividad en la administración de la nube.