DEV Community

🛠️Simula S3 Localmente con LocalStack y Docker Compose

¿Alguna vez quisiste trabajar con S3 sin necesidad de una cuenta AWS o cargos por uso? LocalStack es la solución. En este artículo te muestro cómo levantar LocalStack con Docker Compose, crear un bucket S3, subir un archivo y listar su contenido usando AWS CLI.

✅ Prerrequisitos

Antes de comenzar, asegúrate de tener instalado lo siguiente:

🐳 Paso 1: Docker Compose para LocalStack

Primero, crea un archivo llamado docker-compose.yml con el siguiente contenido:

version: '3.8'

services:
  localstack:
    image: localstack/localstack:latest
    container_name: localstack
    ports:
      - "4566:4566"   # Puerto principal de LocalStack
    environment:
      - SERVICES=s3
      - DEBUG=1
      - DATA_DIR=/tmp/localstack/data
      - AWS_ACCESS_KEY_ID=test
      - AWS_SECRET_ACCESS_KEY=test
      - DEFAULT_REGION=us-east-1
    volumes:
      - "./localstack:/tmp/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"
Enter fullscreen mode Exit fullscreen mode

Este archivo levanta un contenedor de LocalStack con soporte solo para S3 y con credenciales fijas (test/test), ideales para desarrollo local.

🚀 Levanta el contenedor

docker-compose up -d
Enter fullscreen mode Exit fullscreen mode

🔧 Paso 2: Configura AWS CLI

Configura tus credenciales con los mismos valores definidos en el docker-compose.yml:

aws configure
Enter fullscreen mode Exit fullscreen mode
- AWS Access Key ID: test
- AWS Secret Access Key: test
- Region: us-east-1
- Output Format: json
Enter fullscreen mode Exit fullscreen mode

🛠️ Paso 3: Crea un bucket S3 local

aws s3 mb s3://mi-bucket-local
  --region us-east-1 \
  --endpoint-url=http://localhost:4566
Enter fullscreen mode Exit fullscreen mode

Verifica que el bucket fue creado:

aws s3 ls --endpoint-url=http://localhost:4566
Enter fullscreen mode Exit fullscreen mode

📁 Paso 4: Sube un archivo de prueba

Primero, crea un archivo simple:

echo "Hola desde LocalStack" > ejemplo.txt
Enter fullscreen mode Exit fullscreen mode

Luego, súbelo al bucket:

aws s3 cp ejemplo.txt s3://mi-bucket-local/ --endpoint-url=http://localhost:4566
Enter fullscreen mode Exit fullscreen mode

📄 Paso 5: Lista los objetos en el bucket

aws s3 ls s3://mi-bucket-local/ --endpoint-url=http://localhost:4566
Enter fullscreen mode Exit fullscreen mode

Salida esperada:

2025-05-28 12:45:00         23 ejemplo.txt
Enter fullscreen mode Exit fullscreen mode

✅ Conclusión

Con estos simples pasos, tienes un entorno de desarrollo local que simula Amazon S3 usando LocalStack. Ideal para desarrollo, pruebas automatizadas y aprendizaje sin costos ni conexión a Internet.

¿Te gustaría extenderlo para trabajar con SDKs en Python, Node.js o integrarlo con Terraform? ¡Déjamelo saber en los comentarios! 🚀

Top comments (0)