Lab : Scénarios de Dépannage EC2
Objectifs du Lab
Ce lab vous met face à des scénarios de panne réalistes. Pour chaque scénario, vous devrez :
- Analyser les symptômes
- Formuler des hypothèses
- Proposer des tests de diagnostic
- Identifier la solution
Ce lab est un exercice d'analyse. Pas besoin d'accès AWS - travaillez sur papier ou document.
Durée Estimée
1h30 à 2h
Scénario 1 : Le Site Web Inaccessible
Contexte
Situation :
- Instance EC2 lancée il y a 1 heure
- AMI : Amazon Linux 2023
- Type : t3.micro
- Apache installé et démarré
- Vous pouvez vous connecter en SSH
- Mais http://52.1.2.3 ne répond pas (timeout)
Configuration actuelle :
- VPC : vpc-default
- Subnet : public (avec IGW)
- Security Group : sg-web
Informations Disponibles
État instance : running
Status checks : 2/2 passed
Security Group sg-web :
Inbound Rules:
- SSH (22) : 0.0.0.0/0
- HTTP (80) : 10.0.0.0/8
Outbound Rules:
- All traffic : 0.0.0.0/0
Questions
-
Quel est le symptôme précis ?
-
Listez 3 hypothèses par ordre de probabilité
-
Quelle est la cause la plus probable ?
-
Quelle commande/action corrige le problème ?
-
Comment valider que c'est résolu ?
📋 Voir la solution
1. Symptôme : HTTP timeout vers 52.1.2.3 port 80, alors que SSH fonctionne.
2. Hypothèses :
- Security Group n'autorise pas HTTP depuis Internet (HAUTE)
- Apache n'écoute pas sur le bon port (MOYENNE)
- Firewall iptables sur l'instance (BASSE)
3. Cause : Le Security Group autorise HTTP (port 80) seulement depuis 10.0.0.0/8 (réseau privé), pas depuis Internet (0.0.0.0/0).
4. Correctif :
aws ec2 authorize-security-group-ingress \
--group-id sg-web \
--protocol tcp \
--port 80 \
--cidr 0.0.0.0/0
5. Validation :
curl http://52.1.2.3
# ou
Ouvrir http://52.1.2.3 dans un navigateur
Scénario 2 : SSH Impossible
Contexte
Situation :
- Nouvelle instance lancée
- Vous avez téléchargé la clé .pem
- Instance : running, status checks OK
- IP publique : 52.2.3.4
Commande exécutée :
$ ssh -i cle.pem ec2-user@52.2.3.4
ssh: connect to host 52.2.3.4 port 22: Connection timed out
Informations Disponibles
Instance details :
- ID : i-0123456789
- State : running
- Public IP : 52.2.3.4
- Subnet : subnet-abc123 (10.0.2.0/24)
- Security Group : sg-default
Security Group sg-default :
Inbound Rules:
- (aucune règle)
Outbound Rules:
- All traffic : 0.0.0.0/0
Subnet subnet-abc123 :
- Route Table : rtb-main
- Routes :
- 10.0.0.0/16 → local
- (pas d'autre route)
Questions
-
Identifiez TOUS les problèmes dans cette configuration
-
Classez-les par priorité de correction
-
Proposez les commandes pour corriger chaque problème
📋 Voir la solution
1. Problèmes identifiés :
Problème A - Security Group : Aucune règle inbound = port 22 bloqué
Problème B - Route Table : Pas de route vers Internet Gateway = pas d'accès Internet
2. Priorité :
- Route Table (sans route, même avec SG OK, ça ne marchera pas)
- Security Group
3. Correctifs :
# 1. Créer/attacher un Internet Gateway (si pas fait)
aws ec2 create-internet-gateway
aws ec2 attach-internet-gateway --vpc-id vpc-xxx --internet-gateway-id igw-xxx
# 2. Ajouter la route vers IGW
aws ec2 create-route \
--route-table-id rtb-main \
--destination-cidr-block 0.0.0.0/0 \
--gateway-id igw-xxx
# 3. Ajouter règle SSH au Security Group
aws ec2 authorize-security-group-ingress \
--group-id sg-default \
--protocol tcp \
--port 22 \
--cidr 0.0.0.0/0
Scénario 3 : Instance qui Termine Immédiatement
Contexte
Situation :
- Vous lancez une instance
- Elle passe de "pending" à "running" puis "terminated"
- Le tout en moins de 30 secondes
- Vous avez essayé 3 fois, même résultat
Configuration :
- AMI : ami-custom-xyz (AMI personnalisée)
- Type : t3.large
- Région : us-east-1
Informations Disponibles
Console EC2 → State transition reason :
"Client.VolumeLimitExceeded: Volume limit exceeded"
Vos volumes EBS actuels :
- 45 volumes de 100 GB chacun
- Total : 4.5 TB
Votre AMI ami-custom-xyz :
- Créée il y a 6 mois
- Root volume : 200 GB
- Utilise le snapshot snap-olddata
Questions
-
Quelle est la cause de la terminaison ?
-
Comment vérifier les limites de votre compte ?
-
Quelles sont les solutions possibles ? (au moins 3)
📋 Voir la solution
1. Cause : Le message "Volume limit exceeded" indique que vous avez atteint le quota de stockage EBS pour votre compte.
2. Vérifier les limites :
aws service-quotas get-service-quota \
--service-code ebs \
--quota-code L-D18FCD1D
# Ou via la console :
# Service Quotas → Amazon Elastic Block Store (EBS)
3. Solutions :
Solution A - Supprimer des volumes non utilisés :
# Lister les volumes non attachés
aws ec2 describe-volumes \
--filters "Name=status,Values=available"
# Supprimer
aws ec2 delete-volume --volume-id vol-xxx
Solution B - Demander une augmentation de quota :
aws service-quotas request-service-quota-increase \
--service-code ebs \
--quota-code L-D18FCD1D \
--desired-value 10000
Solution C - Utiliser une autre région : Les quotas sont par région. Lancer dans eu-west-1 par exemple.
Solution D - Utiliser un type d'instance avec instance store : Certaines instances ont du stockage local, pas EBS.
Scénario 4 : Base de Données Injoignable
Contexte
Architecture :
- Instance Web (subnet public) : 10.0.1.10
- Instance BDD (subnet privé) : 10.0.2.20
- Les deux dans le même VPC
Problème :
- Depuis l'instance Web, impossible de se connecter à MySQL
- telnet 10.0.2.20 3306 → timeout
L'instance BDD fonctionne :
- Status checks OK
- MySQL est démarré (vérifié via Session Manager)
Informations Disponibles
Security Group sg-web (instance web) :
Inbound : HTTP 80, SSH 22
Outbound : All traffic 0.0.0.0/0
Security Group sg-database (instance BDD) :
Inbound : MySQL (3306) depuis 0.0.0.0/0
Outbound : All traffic 0.0.0.0/0
NACL du subnet privé (nacl-private) :
Inbound Rules :
Rule 100 : DENY TCP 3306 from 0.0.0.0/0
Rule 200 : ALLOW ALL from 0.0.0.0/0
Outbound Rules :
Rule 100 : ALLOW ALL to 0.0.0.0/0
Questions
-
Pourquoi la connexion échoue-t-elle ?
-
Expliquez pourquoi la règle du Security Group ne suffit pas
-
Comment corriger le problème ?
📋 Voir la solution
1. Cause : La NACL bloque le port 3306 avec une règle DENY (rule 100) qui est évaluée AVANT la règle ALLOW (rule 200).
2. Explication :
- Les Security Groups sont évalués ensemble (toutes les règles)
- Les NACLs sont évaluées dans l'ordre des numéros de règle
- Rule 100 (DENY 3306) est évaluée avant Rule 200 (ALLOW ALL)
- Donc le port 3306 est bloqué malgré le SG
3. Correctif : Supprimer ou modifier la règle 100 de la NACL :
# Option A : Supprimer la règle DENY
aws ec2 delete-network-acl-entry \
--network-acl-id nacl-private \
--rule-number 100 \
--ingress
# Option B : Modifier pour autoriser depuis le subnet web
aws ec2 replace-network-acl-entry \
--network-acl-id nacl-private \
--rule-number 100 \
--protocol tcp \
--port-range From=3306,To=3306 \
--cidr-block 10.0.1.0/24 \
--rule-action allow \
--ingress
Scénario 5 : Permission Denied (Défi)
Contexte
Situation :
- Instance Amazon Linux 2023 lancée avec clé "ma-cle"
- Fichier ma-cle.pem présent sur votre machine
- Permission du fichier : 400 (OK)
Commande :
$ ssh -i ma-cle.pem ec2-user@52.5.6.7
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
Tests effectués :
- Security Group : port 22 ouvert vers 0.0.0.0/0
- Instance : running, status OK
- Ping : fonctionne
Informations Supplémentaires
Vous avez deux fichiers de clé dans votre dossier :
- ma-cle.pem (créé hier)
- ma-cle.pem.bak (créé la semaine dernière)
L'instance a été lancée la semaine dernière.
Questions
-
Quelle est probablement la cause ?
-
Comment vérifier votre hypothèse ?
-
Quelles sont les options pour récupérer l'accès ?
📋 Voir la solution
1. Cause probable : Vous utilisez la mauvaise clé. Le fichier "ma-cle.pem" actuel (créé hier) n'est pas la clé qui a été associée à l'instance (lancée la semaine dernière).
2. Vérification :
# Voir quelle clé est associée à l'instance
aws ec2 describe-instances --instance-ids i-xxx \
--query 'Reservations[].Instances[].KeyName'
# Comparer l'empreinte de votre clé
ssh-keygen -l -f ma-cle.pem
ssh-keygen -l -f ma-cle.pem.bak
3. Options de récupération :
Option A - Utiliser la bonne clé :
ssh -i ma-cle.pem.bak ec2-user@52.5.6.7
Option B - EC2 Instance Connect (si AMI compatible) : Console → Instance → Connect → EC2 Instance Connect
Option C - Systems Manager Session Manager : Si l'agent SSM est installé et rôle IAM configuré.
Option D - Créer une AMI et relancer :
- Créer AMI de l'instance
- Lancer nouvelle instance avec nouvelle clé
- Monter le volume de l'ancienne instance
- Modifier ~/.ssh/authorized_keys
Livrables du Lab
Rapport de Dépannage (pour 2 scénarios au choix)
Pour chaque scénario choisi, documentez :
# Scénario X : [Titre]
## 1. Symptôme Identifié
[Description précise]
## 2. Hypothèses Formulées
1. [Hypothèse 1] - Probabilité: Haute/Moyenne/Basse
2. [Hypothèse 2]
3. [Hypothèse 3]
## 3. Tests de Diagnostic
- Test 1 : [Commande/Action] → Résultat attendu
- Test 2 : [Commande/Action] → Résultat attendu
## 4. Cause Racine
[Explication de la vraie cause]
## 5. Solution
[Commandes ou actions pour corriger]
## 6. Validation
[Comment vérifier que c'est résolu]
## 7. Prévention
[Comment éviter ce problème à l'avenir]
Grille d'Évaluation
| Critère | Points |
|---|---|
| Symptôme bien défini | 2 |
| Hypothèses pertinentes et ordonnées | 3 |
| Tests de diagnostic corrects | 3 |
| Cause racine identifiée | 3 |
| Solution correcte | 3 |
| Validation proposée | 2 |
| Clarté et structure | 2 |
| Total par scénario | 18 |
Félicitations ! Vous avez complété le lab de dépannage EC2.