Instalación de AWS CLI v2
¿Qué es AWS CLI?
AWS CLI (Command Line Interface) es la herramienta oficial de línea de comandos de Amazon para interactuar con los servicios de AWS. Permite ejecutar comandos para gestionar sus recursos de AWS desde una terminal.
┌─────────────────────────────────────────────────────────────┐
│ AWS CLI │
├─────────────────────────────────────────────────────────────┤
│ │
│ Terminal ──► aws <service> <action> <options> │
│ │ │ │ │
│ │ │ └── Parámetros │
│ │ └── Comando (create, list...) │
│ └── Servicio AWS (ec2, s3, lambda...) │
│ │
│ Ejemplos: │
│ $ aws s3 ls # Listar los buckets S3 │
│ $ aws ec2 describe-instances # Listar las instancias EC2 │
│ $ aws lambda list-functions # Listar las funciones │
│ │
└─────────────────────────────────────────────────────────────┘
Prerrequisitos
Antes de instalar AWS CLI, asegúrese de tener:
- Derechos de administrador en su máquina
- Conexión a Internet
- Terminal/PowerShell funcional
Instalación en Windows
Método 1: Instalador MSI (Recomendado)
Paso 1: Descargar el instalador
Descargue AWS CLI v2 desde el sitio oficial:
Paso 2: Ejecutar el instalador
- Haga doble clic en el archivo
AWSCLIV2.msi - Siga el asistente de instalación
- Acepte los términos de uso
- Haga clic en "Install"
- Espere a que finalice la instalación
Paso 3: Verificar la instalación
Abra un nuevo PowerShell y ejecute:
aws --version
Resultado esperado:
aws-cli/2.x.x Python/3.x.x Windows/10 exe/AMD64 prompt/off
Método 2: Vía PowerShell (Alternativa)
# Descargar e instalar
msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi /quiet
# Verificar (nueva terminal)
aws --version
Instalación en macOS
Método 1: Paquete oficial (Recomendado)
# Descargar el paquete
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
# Instalar
sudo installer -pkg AWSCLIV2.pkg -target /
# Verificar
aws --version
Método 2: Vía Homebrew
# Instalar vía Homebrew
brew install awscli
# Verificar
aws --version
Instalación en Linux
Método universal (todas las distribuciones)
# Descargar
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
# Descomprimir
unzip awscliv2.zip
# Instalar
sudo ./aws/install
# Verificar
aws --version
# Limpiar
rm -rf aws awscliv2.zip
Ubuntu/Debian
# Instalar las dependencias
sudo apt update
sudo apt install -y unzip curl
# Luego siga el método universal anterior
Configuración de AWS CLI
Configuración para LocalStack
Ya que utilizamos LocalStack (emulador local de AWS), vamos a configurar AWS CLI para que apunte a LocalStack en lugar de AWS real.
Paso 1: Crear un perfil LocalStack
aws configure --profile localstack
Ingrese los siguientes valores:
AWS Access Key ID [None]: test
AWS Secret Access Key [None]: test
Default region name [None]: us-east-1
Default output format [None]: json
LocalStack no necesita credenciales reales. Los valores "test" funcionan perfectamente.
Paso 2: Crear un alias (opcional pero recomendado)
Para evitar escribir --endpoint-url cada vez:
Windows PowerShell:
# Agregar al perfil de PowerShell
notepad $PROFILE
# Agregar esta línea:
function awslocal { aws --endpoint-url=http://localhost:4566 --profile localstack $args }
macOS/Linux:
# Agregar en ~/.bashrc o ~/.zshrc
echo 'alias awslocal="aws --endpoint-url=http://localhost:4566 --profile localstack"' >> ~/.bashrc
source ~/.bashrc
Verificación de la Configuración
# Ver la configuración
aws configure list --profile localstack
Resultado esperado:
Name Value Type Location
---- ----- ---- --------
profile localstack manual --profile
access_key ****************test shared-credentials-file
secret_key ****************test shared-credentials-file
region us-east-1 config-file ~/.aws/config
Estructura de los Archivos de Configuración
AWS CLI almacena su configuración en dos archivos:
~/.aws/
├── config # Parámetros generales (región, output)
└── credentials # Claves de acceso (access key, secret key)
Archivo ~/.aws/config
[default]
region = us-east-1
output = json
[profile localstack]
region = us-east-1
output = json
Archivo ~/.aws/credentials
[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
[localstack]
aws_access_key_id = test
aws_secret_access_key = test
Comandos Básicos de AWS CLI
Estructura de un comando
aws <service> <action> [--options]
Comandos útiles
| Comando | Descripción |
|---|---|
aws --version | Versión de AWS CLI |
aws help | Ayuda general |
aws <service> help | Ayuda para un servicio |
aws configure list | Mostrar la configuración |
aws sts get-caller-identity | Verificar la identidad |
Ejemplos por servicio
S3 (Almacenamiento):
aws s3 ls # Listar los buckets
aws s3 mb s3://mon-bucket # Crear un bucket
aws s3 cp fichier.txt s3://bucket/ # Copiar un archivo
EC2 (Compute):
aws ec2 describe-instances # Listar las instancias
aws ec2 describe-vpcs # Listar los VPCs
aws ec2 describe-security-groups # Listar los Security Groups
Lambda (Serverless):
aws lambda list-functions # Listar las funciones
aws lambda invoke --function-name X out.txt # Invocar
Opciones Globales Importantes
| Opción | Descripción |
|---|---|
--profile <name> | Usar un perfil específico |
--region <region> | Especificar la región |
--output <format> | Formato de salida (json, text, table) |
--endpoint-url <url> | URL personalizada (para LocalStack) |
--query <jmespath> | Filtrar la salida JSON |
Ejemplos con opciones
# Usar el perfil localstack
aws s3 ls --profile localstack
# Cambiar la región
aws ec2 describe-instances --region eu-west-1
# Salida en tabla
aws ec2 describe-instances --output table
# Filtrar con JMESPath
aws ec2 describe-instances --query 'Reservations[].Instances[].InstanceId'
Prueba de la Instalación
Sin LocalStack (verificación básica)
# Verificar la versión
aws --version
# Verificar la configuración
aws configure list --profile localstack
Con LocalStack (después de instalar LocalStack)
# Iniciar LocalStack primero (ver sección siguiente)
# Probar S3
aws --endpoint-url=http://localhost:4566 s3 ls --profile localstack
# O con el alias
awslocal s3 ls
Solución de Problemas
Problema: "aws command not found"
Windows:
- Cierre y vuelva a abrir PowerShell
- Verifique el PATH:
$env:PATH - Reinstale AWS CLI
macOS/Linux:
# Verificar la ubicación
which aws
# Si está vacío, agregar al PATH
export PATH="/usr/local/bin:$PATH"
Problema: "Unable to locate credentials"
# Verificar la configuración
aws configure list
# Si está vacío, reconfigurar
aws configure --profile localstack
Problema: "Connection refused"
Probablemente LocalStack no está iniciado. Vea la sección siguiente.
Captura de Pantalla Esperada
Después de una instalación exitosa, debería ver:
PS C:\Users\SuNombre> aws --version
aws-cli/2.15.0 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
PS C:\Users\SuNombre> aws configure list --profile localstack
Name Value Type Location
---- ----- ---- --------
profile localstack manual --profile
access_key ****************test shared-credentials-file
secret_key ****************test shared-credentials-file
region us-east-1 config-file ~/.aws/config
Lista de Verificación de Validación
- AWS CLI v2 instalado (
aws --versionfunciona) - Perfil "localstack" configurado
- Archivos ~/.aws/config y ~/.aws/credentials creados
- Alias
awslocalcreado (opcional)
Referencia Rápida de Comandos AWS CLI
Sintaxis General
aws [service] [operation] [parametres] [options]
Ejemplo:
aws iam get-policy --policy-arn arn:aws:iam::123456789:policy/MyPolicy
Comandos EC2
| Acción | Comando |
|---|---|
| Modificar una instancia | aws ec2 modify-instance-attribute --instance-id i-123 --instance-type m5.xlarge |
| Crear una AMI | aws ec2 create-image --instance-id i-123abc --name "Base_Image" |
| Copiar AMI a otra región | aws ec2 copy-image --source-image-id ami-123 --source-region us-east-1 --region eu-west-1 --name "prod-server" |
| Registrar una AMI | aws ec2 register-image --root-device-name /dev/sda1 --name "linux_ami" |
Comandos EBS
| Acción | Comando |
|---|---|
| Crear un volumen | aws ec2 create-volume --size 80 --availability-zone us-east-1a --volume-type gp3 |
| Adjuntar un volumen | aws ec2 attach-volume --volume-id vol-123 --instance-id i-abc --device /dev/sdf |
Comandos S3
| Acción | Comando |
|---|---|
| Crear un bucket (API) | aws s3api create-bucket --bucket mon-bucket |
| Crear un bucket (simple) | aws s3 mb s3://mon-bucket |
| Listar los buckets | aws s3 ls |
| Copiar un archivo | aws s3 cp fichier.txt s3://mon-bucket/ |
| Sincronizar | aws s3 sync ./local s3://mon-bucket/ |
Comandos IAM
| Acción | Comando |
|---|---|
| Listar los usuarios | aws iam list-users |
| Obtener una policy | aws iam get-policy --policy-arn arn:aws:iam::123:policy/X |
| Listar los roles | aws iam list-roles |
Metadata y UserData (desde una instancia EC2)
# Recuperar los metadatos de la instancia
curl http://169.254.169.254/latest/meta-data/
# Ejemplos de metadatos
curl http://169.254.169.254/latest/meta-data/instance-id
curl http://169.254.169.254/latest/meta-data/public-ipv4
curl http://169.254.169.254/latest/meta-data/ami-id
# Recuperar el user-data (script de inicio)
curl http://169.254.169.254/latest/user-data
Opciones Globales Útiles
| Opción | Descripción | Ejemplo |
|---|---|---|
--profile | Usar un perfil | aws s3 ls --profile prod |
--region | Especificar la región | aws ec2 describe-instances --region eu-west-1 |
--output | Formato de salida | aws ec2 describe-instances --output table |
--query | Filtrar JSON | aws ec2 describe-instances --query 'Reservations[].Instances[].InstanceId' |
--dry-run | Probar sin ejecutar | aws ec2 run-instances --dry-run |
Formatos de Salida
# JSON (por defecto)
aws ec2 describe-instances --output json
# Tabla legible
aws ec2 describe-instances --output table
# Texto plano
aws ec2 describe-instances --output text
¡Mantenga esta referencia a mano! Estos comandos son utilizados diariamente por los administradores de AWS.
Quiz de Validación
- ¿Qué comando verifica la versión de AWS CLI?
- ¿Dónde se almacenan las credenciales de AWS?
- ¿Cuál es el formato de un comando AWS CLI?
- ¿Por qué se utiliza
--endpoint-urlcon LocalStack? - ¿Qué comando lista los buckets S3?
Próxima sección: Cheatsheet AWS CLI Completo