Saltar al contenido principal

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

  1. Haga doble clic en el archivo AWSCLIV2.msi
  2. Siga el asistente de instalación
  3. Acepte los términos de uso
  4. Haga clic en "Install"
  5. 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
¿Por qué "test"?

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​

ComandoDescripción
aws --versionVersión de AWS CLI
aws helpAyuda general
aws <service> helpAyuda para un servicio
aws configure listMostrar la configuración
aws sts get-caller-identityVerificar 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ónDescripció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:

  1. Cierre y vuelva a abrir PowerShell
  2. Verifique el PATH: $env:PATH
  3. 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 --version funciona)
  • Perfil "localstack" configurado
  • Archivos ~/.aws/config y ~/.aws/credentials creados
  • Alias awslocal creado (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ónComando
Modificar una instanciaaws ec2 modify-instance-attribute --instance-id i-123 --instance-type m5.xlarge
Crear una AMIaws ec2 create-image --instance-id i-123abc --name "Base_Image"
Copiar AMI a otra regiónaws ec2 copy-image --source-image-id ami-123 --source-region us-east-1 --region eu-west-1 --name "prod-server"
Registrar una AMIaws ec2 register-image --root-device-name /dev/sda1 --name "linux_ami"

Comandos EBS​

AcciónComando
Crear un volumenaws ec2 create-volume --size 80 --availability-zone us-east-1a --volume-type gp3
Adjuntar un volumenaws ec2 attach-volume --volume-id vol-123 --instance-id i-abc --device /dev/sdf

Comandos S3​

AcciónComando
Crear un bucket (API)aws s3api create-bucket --bucket mon-bucket
Crear un bucket (simple)aws s3 mb s3://mon-bucket
Listar los bucketsaws s3 ls
Copiar un archivoaws s3 cp fichier.txt s3://mon-bucket/
Sincronizaraws s3 sync ./local s3://mon-bucket/

Comandos IAM​

AcciónComando
Listar los usuariosaws iam list-users
Obtener una policyaws iam get-policy --policy-arn arn:aws:iam::123:policy/X
Listar los rolesaws 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ónDescripciónEjemplo
--profileUsar un perfilaws s3 ls --profile prod
--regionEspecificar la regiónaws ec2 describe-instances --region eu-west-1
--outputFormato de salidaaws ec2 describe-instances --output table
--queryFiltrar JSONaws ec2 describe-instances --query 'Reservations[].Instances[].InstanceId'
--dry-runProbar sin ejecutaraws 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
Consejo

¡Mantenga esta referencia a mano! Estos comandos son utilizados diariamente por los administradores de AWS.


Quiz de Validación​

  1. ¿Qué comando verifica la versión de AWS CLI?
  2. ¿Dónde se almacenan las credenciales de AWS?
  3. ¿Cuál es el formato de un comando AWS CLI?
  4. ¿Por qué se utiliza --endpoint-url con LocalStack?
  5. ¿Qué comando lista los buckets S3?

Próxima sección: Cheatsheet AWS CLI Completo