Snapshots EBS
¿Qué es un Snapshot?
Un snapshot es una copia puntual (point-in-time) de un volumen EBS. Es el mecanismo principal de respaldo para EBS.
┌─────────────────────────────────────────────────────────────┐
│ SNAPSHOT EBS │
├─────────────────────────────────────────────────────────────┤
│ │
│ Volume EBS Snapshot │
│ (100 GB) (dans S3) │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ █████████████ │ ─────────► │ ░░░░░░░░░░░░░ │ │
│ │ █████████████ │ create- │ Copie des │ │
│ │ █████████████ │ snapshot │ données │ │
│ │ ░░░░░░░░░░░░░ │ │ (compressé) │ │
│ └─────────────────┘ └─────────────────┘ │
│ Utilisé : 60 GB Stocké : ~60 GB │
│ Espace vide : 40 GB (données réelles) │
│ │
│ Caractéristiques : │
│ • Stocké dans S3 (géré par AWS) │
│ • Incrémental après le premier │
│ • Peut être copié entre régions │
│ • Base pour créer des volumes ou AMI │
│ │
└─────────────────────────────────────────────────────────────┘
Snapshots Incrementales
┌─────────────────────────────────────────────────────────────┐
│ SNAPSHOTS INCRÉMENTAUX │
├─────────────────────────────────────────────────────────────┤
│ │
│ Premier snapshot : COMPLET │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Volume : 100 GB │ │
│ │ Données : 60 GB │ │
│ │ │ │
│ │ Snapshot 1 : 60 GB copiés │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Snapshots suivants : INCRÉMENTAUX │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Depuis Snapshot 1 : │ │
│ │ • 5 GB de données ont changé │ │
│ │ • 2 GB de nouvelles données │ │
│ │ │ │
│ │ Snapshot 2 : seulement 7 GB copiés ! │ │
│ │ (pas 60 GB complet) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Avantages : │
│ ✅ Plus rapide │
│ ✅ Moins de stockage │
│ ✅ Moins coûteux │
│ │
│ Suppression : Si vous supprimez Snapshot 1, │
│ Snapshot 2 reste fonctionnel (AWS gère les dépendances) │
│ │
└─────────────────────────────────────────────────────────────┘
Crear un Snapshot
Por consola
1. EC2 → Elastic Block Store → Volumes
2. Seleccionar el volumen
3. Actions → Create snapshot
4. Description : "backup-avant-mise-a-jour"
5. Añadir tags (recomendado)
6. Create snapshot
Por CLI
# Créer un snapshot
aws ec2 create-snapshot \
--volume-id vol-0123456789abcdef0 \
--description "Backup quotidien - 2024-12-18" \
--tag-specifications 'ResourceType=snapshot,Tags=[{Key=Name,Value=daily-backup},{Key=Environment,Value=prod}]'
# Voir les snapshots
aws ec2 describe-snapshots \
--owner-ids self \
--query 'Snapshots[*].[SnapshotId,VolumeId,State,StartTime,Description]' \
--output table
Restaurar desde un Snapshot
Crear un Nuevo Volumen
# Créer un volume depuis un snapshot
aws ec2 create-volume \
--snapshot-id snap-0123456789abcdef0 \
--availability-zone us-east-1a \
--volume-type gp3 \
--tag-specifications 'ResourceType=volume,Tags=[{Key=Name,Value=restored-volume}]'
Restaurar en otra AZ/Región
┌─────────────────────────────────────────────────────────────┐
│ RESTAURATION CROSS-AZ / CROSS-REGION │
├─────────────────────────────────────────────────────────────┤
│ │
│ Volume us-east-1a ──► Snapshot ──► Volume us-east-1b │
│ │ │
│ │ (copier snapshot) │
│ ▼ │
│ Snapshot ──► Volume eu-west-1a │
│ (eu-west-1) │
│ │
│ # Copier un snapshot vers une autre région │
│ aws ec2 copy-snapshot \ │
│ --source-region us-east-1 \ │
│ --source-snapshot-id snap-xxx \ │
│ --region eu-west-1 \ │
│ --description "DR copy" │
│ │
└─────────────────────────────────────────────────────────────┘
Buenas Prácticas de Backup
Estrategia de Retención
┌─────────────────────────────────────────────────────────────┐
│ STRATÉGIE DE RÉTENTION │
├─────────────────────────────────────────────────────────────┤
│ │
│ Exemple : Stratégie "Grandfather-Father-Son" │
│ │
│ Quotidien (Son) : │
│ • Snapshot chaque nuit │
│ • Garder 7 jours │
│ │
│ Hebdomadaire (Father) : │
│ • Snapshot chaque dimanche │
│ • Garder 4 semaines │
│ │
│ Mensuel (Grandfather) : │
│ • Snapshot le 1er du mois │
│ • Garder 12 mois │
│ │
│ Résultat : │
│ • 7 + 4 + 12 = 23 snapshots maximum │
│ • Couverture d'un an │
│ • Coût maîtrisé │
│ │
└─────────────────────────────────────────────────────────────┘
Automatización con AWS Backup
┌─────────────────────────────────────────────────────────────┐
│ AWS BACKUP │
├─────────────────────────────────────────────────────────────┤
│ │
│ Service AWS pour automatiser les backups │
│ │
│ Configuration : │
│ 1. Créer un Backup Plan │
│ 2. Définir les règles (fréquence, rétention) │
│ 3. Assigner les ressources (volumes, par tags) │
│ 4. AWS crée automatiquement les snapshots │
│ │
│ Avantages : │
│ ✅ Pas de script à maintenir │
│ ✅ Gestion centralisée │
│ ✅ Compliance et reporting │
│ ✅ Cross-region automatique │
│ │
│ Alternative : Data Lifecycle Manager (DLM) │
│ Plus simple mais moins de fonctionnalités │
│ │
└─────────────────────────────────────────────────────────────┘
Costo de los Snapshots
┌─────────────────────────────────────────────────────────────┐
│ COÛT DES SNAPSHOTS │
├─────────────────────────────────────────────────────────────┤
│ │
│ Prix : ~$0.05 par GB-mois │
│ │
│ Exemple : │
│ • Volume 100 GB │
│ • 60 GB de données réelles │
│ • 7 snapshots (1 semaine quotidien) │
│ │
│ Premier snapshot : 60 GB │
│ Suivants : ~5 GB chacun (incrémental) │
│ Total stocké : 60 + (6 × 5) = 90 GB │
│ │
│ Coût mensuel : 90 × $0.05 = $4.50 │
│ │
│ ⚠️ Les snapshots oubliés coûtent ! │
│ Auditer régulièrement et supprimer les inutiles │
│ │
└─────────────────────────────────────────────────────────────┘
Snapshot vs AMI
┌─────────────────────────────────────────────────────────────┐
│ SNAPSHOT vs AMI │
├─────────────────────────────────────────────────────────────┤
│ │
│ SNAPSHOT AMI │
│ ──────── ─── │
│ • Backup d'UN volume • Image complète │
│ • Données seulement • OS + Config + Données │
│ • Pour restaurer des données • Pour lancer instances │
│ • Niveau bloc • Niveau instance │
│ │
│ Relation : │
│ AMI = Métadonnées + Snapshots des volumes │
│ │
│ ┌────────────────────────────────────────┐ │
│ │ AMI │ │
│ │ ┌──────────────────────────────────┐ │ │
│ │ │ Métadonnées (nom, arch, etc.) │ │ │
│ │ └──────────────────────────────────┘ │ │
│ │ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Snapshot │ │ Snapshot │ │ │
│ │ │ Root volume │ │ Data volume │ │ │
│ │ └──────────────┘ └──────────────┘ │ │
│ └────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
Comandos Útiles
# Lister tous les snapshots
aws ec2 describe-snapshots --owner-ids self
# Supprimer un snapshot
aws ec2 delete-snapshot --snapshot-id snap-xxx
# Copier vers une autre région
aws ec2 copy-snapshot \
--source-region us-east-1 \
--source-snapshot-id snap-xxx \
--region eu-west-1
# Partager un snapshot avec un autre compte
aws ec2 modify-snapshot-attribute \
--snapshot-id snap-xxx \
--attribute createVolumePermission \
--operation-type add \
--user-ids 123456789012
# Trouver les snapshots orphelins (sans volume source)
aws ec2 describe-snapshots \
--owner-ids self \
--query 'Snapshots[?!VolumeId]'
Quiz de Validación
- ¿Qué es un snapshot incremental?
- ¿Dónde se almacenan los snapshots?
- ¿Se puede crear un volumen en una AZ diferente a partir de un snapshot?
- ¿Cuál es la relación entre una AMI y un snapshot?
- ¿Cómo automatizar los snapshots?
Próxima sección: Lab: Almacenamiento EBS