Installation de LocalStack
Qu'est-ce que LocalStack ?
LocalStack est un émulateur cloud qui simule les services AWS sur votre machine locale. Il vous permet de développer et tester des applications AWS sans :
- Créer de compte AWS
- Payer quoi que ce soit
- Risquer de facturation accidentelle
┌─────────────────────────────────────────────────────────────┐
│ LocalStack │
├─────────────────────────────────────────────────────────────┤
│ │
│ Votre Machine "Faux" AWS │
│ ┌─────────────┐ ┌─────────────────┐ │
│ │ AWS CLI │ ──────────► │ LocalStack │ │
│ │ Scripts │ Port 4566 │ (Docker) │ │
│ │ Apps │ │ │ │
│ └─────────────┘ │ Services: │ │
│ │ • S3 │ │
│ │ • Lambda │ │
│ │ • DynamoDB │ │
│ │ • SQS/SNS │ │
│ │ • CloudWatch │ │
│ │ • etc. │ │
│ └─────────────────┘ │
│ │
│ ✅ Gratuit ✅ Local ✅ Sans compte AWS │
└─────────────────────────────────────────────────────────────┘
Prérequis
Docker Desktop (Obligatoire)
LocalStack fonctionne dans un conteneur Docker. Vous devez d'abord installer Docker Desktop.
Téléchargement :
- Windows : https://www.docker.com/products/docker-desktop/
- macOS : https://www.docker.com/products/docker-desktop/
- Linux : Instructions spécifiques à votre distribution
Vérifier Docker
# Vérifier que Docker est installé
docker --version
# Vérifier que Docker fonctionne
docker run hello-world
Résultat attendu :
Docker version 24.x.x, build xxxxx
Sur Windows, Docker Desktop doit être démarré avant d'utiliser LocalStack. Vérifiez l'icône Docker dans la barre des tâches.
Installation de LocalStack
Méthode 1 : Via Docker (Recommandée)
C'est la méthode la plus simple et la plus fiable.
Démarrer LocalStack :
docker run -d \
--name localstack \
-p 4566:4566 \
-p 4510-4559:4510-4559 \
-e SERVICES=s3,lambda,sqs,dynamodb,cloudwatch,cloudformation \
-e DEBUG=1 \
-v /var/run/docker.sock:/var/run/docker.sock \
localstack/localstack
Sur Windows PowerShell :
docker run -d `
--name localstack `
-p 4566:4566 `
-p 4510-4559:4510-4559 `
-e SERVICES=s3,lambda,sqs,dynamodb,cloudwatch,cloudformation `
-e DEBUG=1 `
localstack/localstack
Méthode 2 : Via Docker Compose (Recommandée pour ce cours)
Créez un fichier docker-compose.yml :
version: '3.8'
services:
localstack:
container_name: localstack
image: localstack/localstack:latest
ports:
- "4566:4566" # Port principal
- "4510-4559:4510-4559" # Ports additionnels
environment:
- SERVICES=s3,lambda,sqs,sns,dynamodb,cloudwatch,cloudformation,iam
- DEBUG=1
- DATA_DIR=/tmp/localstack/data
- DOCKER_HOST=unix:///var/run/docker.sock
volumes:
- "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
Démarrer avec Docker Compose :
docker-compose up -d
Méthode 3 : Via pip (Alternative)
# Installer LocalStack CLI
pip install localstack
# Démarrer LocalStack
localstack start
Vérification de l'Installation
Étape 1 : Vérifier que le conteneur tourne
docker ps
Résultat attendu :
CONTAINER ID IMAGE COMMAND STATUS PORTS
abc123def456 localstack/localstack "docker-entrypoint.sh" Up 2 minutes 0.0.0.0:4566->4566/tcp
Étape 2 : Vérifier l'état de LocalStack
curl http://localhost:4566/_localstack/health
Résultat attendu :
{
"services": {
"s3": "running",
"lambda": "running",
"sqs": "running",
"dynamodb": "running",
...
}
}
Sur Windows PowerShell :
Invoke-RestMethod http://localhost:4566/_localstack/health
Étape 3 : Tester avec AWS CLI
# Créer un bucket S3
aws --endpoint-url=http://localhost:4566 s3 mb s3://mon-premier-bucket --profile localstack
# Lister les buckets
aws --endpoint-url=http://localhost:4566 s3 ls --profile localstack
Résultat attendu :
make_bucket: mon-premier-bucket
2024-12-18 10:30:00 mon-premier-bucket
Services LocalStack Disponibles
Version Gratuite (Community)
| Service | Support | Notes |
|---|---|---|
| S3 | ✅ Complet | Stockage objet |
| Lambda | ✅ Complet | Fonctions serverless |
| SQS | ✅ Complet | File de messages |
| SNS | ✅ Complet | Notifications |
| DynamoDB | ✅ Complet | Base NoSQL |
| CloudWatch Logs | ✅ Partiel | Logs uniquement |
| CloudFormation | ✅ Basique | Templates simples |
| IAM | ✅ Basique | Rôles et politiques |
| EC2 | ⚠️ Limité | Métadonnées seulement |
| VPC | ⚠️ Limité | Simulation basique |
Ce que nous utiliserons
┌─────────────────────────────────────────────────────────────┐
│ Services LocalStack pour ce cours │
├─────────────────────────────────────────────────────────────┤
│ │
│ PRATIQUE COMPLÈTE THÉORIE UNIQUEMENT │
│ (LocalStack) (Pas de simulation) │
│ │
│ ✅ S3 📚 EC2 (instances) │
│ ✅ Lambda 📚 VPC complet │
│ ✅ SQS/SNS 📚 EBS │
│ ✅ DynamoDB 📚 ELB/ALB │
│ ✅ CloudWatch Logs 📚 Route 53 │
│ ✅ CloudFormation 📚 Auto Scaling │
│ ✅ IAM (basique) │
│ │
└─────────────────────────────────────────────────────────────┘
Commandes de Gestion LocalStack
Démarrer LocalStack
# Avec Docker
docker start localstack
# Avec Docker Compose
docker-compose up -d
# Avec CLI
localstack start
Arrêter LocalStack
# Avec Docker
docker stop localstack
# Avec Docker Compose
docker-compose down
# Avec CLI
localstack stop
Voir les logs
docker logs localstack
# Suivre les logs en temps réel
docker logs -f localstack
Redémarrer proprement
docker stop localstack
docker rm localstack
# Puis relancer la commande docker run
Script d'Automatisation
Créez un script pour faciliter le démarrage :
Windows (start-localstack.ps1)
# start-localstack.ps1
Write-Host "Démarrage de LocalStack..." -ForegroundColor Green
# Vérifier si le conteneur existe
$container = docker ps -a -q -f name=localstack
if ($container) {
Write-Host "Suppression de l'ancien conteneur..."
docker rm -f localstack
}
# Démarrer LocalStack
docker run -d `
--name localstack `
-p 4566:4566 `
-p 4510-4559:4510-4559 `
-e SERVICES=s3,lambda,sqs,dynamodb,cloudwatch,cloudformation `
localstack/localstack
Write-Host "Attente du démarrage (30 secondes)..." -ForegroundColor Yellow
Start-Sleep -Seconds 30
# Vérifier
Write-Host "Vérification..." -ForegroundColor Green
aws --endpoint-url=http://localhost:4566 s3 ls --profile localstack
Write-Host "LocalStack est prêt !" -ForegroundColor Green
macOS/Linux (start-localstack.sh)
#!/bin/bash
echo "Démarrage de LocalStack..."
# Supprimer l'ancien conteneur s'il existe
docker rm -f localstack 2>/dev/null
# Démarrer LocalStack
docker run -d \
--name localstack \
-p 4566:4566 \
-p 4510-4559:4510-4559 \
-e SERVICES=s3,lambda,sqs,dynamodb,cloudwatch,cloudformation \
localstack/localstack
echo "Attente du démarrage (30 secondes)..."
sleep 30
# Vérifier
echo "Vérification..."
aws --endpoint-url=http://localhost:4566 s3 ls --profile localstack
echo "LocalStack est prêt !"
Alias Pratiques
Pour simplifier les commandes, configurez un alias :
Windows PowerShell
Ajoutez au fichier $PROFILE :
function awslocal {
aws --endpoint-url=http://localhost:4566 --profile localstack $args
}
macOS/Linux
Ajoutez au ~/.bashrc ou ~/.zshrc :
alias awslocal='aws --endpoint-url=http://localhost:4566 --profile localstack'
Utilisation de l'alias
# Au lieu de :
aws --endpoint-url=http://localhost:4566 s3 ls --profile localstack
# Vous écrirez :
awslocal s3 ls
Test Complet de l'Environnement
Exécutez ces commandes pour valider votre installation :
# 1. Vérifier Docker
docker --version
# 2. Vérifier LocalStack
docker ps | grep localstack
# 3. Vérifier la santé
curl http://localhost:4566/_localstack/health
# 4. Créer un bucket S3
awslocal s3 mb s3://test-bucket
# 5. Lister les buckets
awslocal s3 ls
# 6. Supprimer le bucket test
awslocal s3 rb s3://test-bucket
# 7. Vérifier Lambda (devrait être vide)
awslocal lambda list-functions
Capture d'Écran Attendue
PS C:\Users\VotreNom> docker ps
CONTAINER ID IMAGE STATUS PORTS
abc123 localstack/localstack Up 5 minutes 0.0.0.0:4566->4566/tcp
PS C:\Users\VotreNom> awslocal s3 ls
2024-12-18 10:30:00 test-bucket
PS C:\Users\VotreNom> awslocal lambda list-functions
{
"Functions": []
}
Dépannage
Problème : "Cannot connect to the Docker daemon"
Solution :
- Vérifiez que Docker Desktop est démarré
- Sur Windows, cliquez sur l'icône Docker dans la barre des tâches
- Attendez que Docker soit "Running"
Problème : "Port 4566 already in use"
Solution :
# Trouver le processus
# Windows
netstat -ano | findstr 4566
# Linux/macOS
lsof -i :4566
# Tuer le processus ou changer le port
docker run -p 4567:4566 ...
Problème : "Connection refused to localhost:4566"
Solution :
- Attendez 30-60 secondes après le démarrage
- Vérifiez les logs :
docker logs localstack - Redémarrez le conteneur
Problème : Commandes AWS très lentes
Solution : LocalStack peut être lent au premier appel. C'est normal. Les appels suivants seront plus rapides.
Checklist de Validation
- Docker Desktop installé et démarré
- LocalStack conteneur en cours d'exécution
- Port 4566 accessible
- Commande
awslocal s3 lsfonctionne - Alias
awslocalconfiguré
Quiz de Validation
- Qu'est-ce que LocalStack ?
- Sur quel port LocalStack écoute-t-il par défaut ?
- Pourquoi utilise-t-on
--endpoint-urlavec AWS CLI ? - Quels services AWS LocalStack émule-t-il bien ?
- Comment vérifier que LocalStack fonctionne ?
Prochaine section : Lab : Configuration de l'environnement