CLI
📘 ¿Qué es la AWS CLI?
La AWS CLI es una herramienta de línea de comandos que permite interactuar con los servicios de AWS usando comandos escritos en un terminal (bash, PowerShell, CMD, etc.).
-
Facilita la automatización, scripting, y gestión remota.
-
Es una alternativa a la Consola web y a los SDKs.
-
Compatible con Windows, Linux, macOS.
📦 Versiones
| Versión | Descripción |
|---|---|
| v1 | Antigua, sin algunas funciones |
| ✅ v2 | Recomendada. Incluye mejoras, instalación simplificada, y soporte SSO. |
Instalación de v2:
-
Linux/macOS:
curl+unzipo usando package manager. -
Windows: Instalador .msi
→ https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html
🛠️ Configuración inicial
aws configure
Te pedirá:
-
AWS Access Key ID
-
AWS Secret Access Key
-
Región por defecto (ej:
us-east-1) -
Formato de salida (
json,table,text)
Archivos guardados en:
-
~/.aws/credentials→ credenciales -
~/.aws/config→ configuración general
🧪 Ejemplos básicos por servicio
☁️ EC2
aws ec2 describe-instances
aws ec2 start-instances --instance-ids i-0123456789abcdef0
aws ec2 stop-instances --instance-ids i-0123456789abcdef0
aws ec2 run-instances --image-id ami-0abc123 --count 1 --instance-type t3.micro --key-name MiClave --security-group-ids sg-123 --subnet-id subnet-abc
📦 S3
aws s3 ls
aws s3 cp archivo.txt s3://mi-bucket/
aws s3 sync ./mi_carpeta/ s3://mi-bucket/
aws s3 rm s3://mi-bucket/archivo.txt
🖼️ IAM
aws iam list-users
aws iam create-user --user-name Juan
aws iam attach-user-policy --user-name Juan --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
🧾 CloudFormation
aws cloudformation deploy --template-file plantilla.yaml --stack-name MiStack
aws cloudformation describe-stacks
aws cloudformation delete-stack --stack-name MiStack
📋 Formatos de salida
| Formato | Descripción |
|---|---|
json | Estructura legible por máquina |
table | Tablas legibles para humanos |
text | Salida plana, ideal para scripts |
Ejemplo:
aws ec2 describe-instances --output table
🌍 Perfil múltiple
Para gestionar varias cuentas:
aws configure --profile prod
aws configure --profile dev
Usar con:
aws s3 ls --profile prod
🧠 Filtros y queries (usando --query y JMESPath)
aws ec2 describe-instances --query "Reservations[*].Instances[*].InstanceId" --output text
-
Permite extraer campos específicos sin procesar JSON entero.
-
Sintaxis JMESPath → potente para scripting y automatización.
🔐 Seguridad
-
Nunca incluyas claves en scripts directamente.
-
Usa roles IAM con EC2 o perfiles temporales con
sts assume-role. -
Usa herramientas como AWS Vault para manejar credenciales.
📦 Comandos útiles
| Comando CLI | Función |
|---|---|
aws help | Ayuda general |
aws ec2 help | Ayuda por servicio |
aws configure list | Ver configuración actual |
aws sts get-caller-identity | Saber qué usuario/rol está autenticado |
aws logs tail | Ver logs de CloudWatch en tiempo real (CLI v2) |
aws ssm start-session | Acceder vía SSM a una instancia sin abrir puertos |
💸 Costos
-
La CLI es gratuita.
-
Solo se paga por los recursos utilizados al ejecutar comandos (por ejemplo: lanzar una instancia EC2, crear un bucket S3, etc.).
🧠 Buenas prácticas
-
Usa perfiles para separar cuentas/roles.
-
Automatiza tareas repetitivas con scripts Bash/Powershell.
-
Usa
--dry-runcuando esté disponible para probar sin ejecutar. -
Valida plantillas CloudFormation antes de desplegar con:
aws cloudformation validate-template --template-body file://mi_template.yaml -
Guarda tus scripts en repositorios versionados.
🎓 Preguntas tipo certificación
-
¿Cómo configuras la región por defecto en la CLI?
- ✅ Con
aws configure
- ✅ Con
-
¿Cómo accedes a una instancia EC2 sin clave SSH ni puerto 22?
- ✅ Con
aws ssm start-session
- ✅ Con
-
¿Qué comando permite desplegar un stack de CloudFormation?
- ✅
aws cloudformation deploy --template-file ...
- ✅
-
¿Qué herramienta permite trabajar con múltiples perfiles de AWS sin exponer credenciales?
- ✅ AWS Vault
🧪 Mini cheat sheet
aws configure
aws s3 ls
aws ec2 describe-instances
aws ec2 run-instances --image-id ami-xxx --instance-type t2.micro ...
aws cloudformation deploy --template-file vpc.yaml --stack-name VPCStack
aws sts get-caller-identity