Amazon EC2 — Cheat Sheet complet
Amazon EC2 (Elastic Compute Cloud) fournit des serveurs virtuels (instances) dans le cloud. Vous payez uniquement ce que vous utilisez — à la seconde (minimum 60 s) ou à l'heure.
Nomenclature des types d'instances
c 7 g n . 2xlarge
│ │ │ │ └─ Taille (nano, micro, small, medium, large, xlarge, 2xlarge...)
│ │ │ └─── Option réseau (n = réseau haute performance)
│ │ └────── Option CPU (g = processeur ARM Graviton)
│ └───────── Génération (7 = 7ème génération)
└──────────── Famille (c = Compute Optimized)
Exemples de suffixes après la génération :
d→ disques SSD NVMe locaux (ex:c5d)g→ processeur ARM Graviton (ex:r6g)n→ réseau haute performancea→ processeur AMD
Familles d'instances
| Famille | Optimisation | Cas d'utilisation |
|---|---|---|
| T, M | Usage général | Serveurs web, BDD légères, environnements dev |
| C | Calcul (CPU) | Traitement par lots, HPC, transcodage, jeux |
| R, X | Mémoire | BDD in-memory, caches, SAP, Redis |
| P, G, F | Calcul accéléré (GPU/FPGA) | Machine learning, rendu 3D, simulations |
| D, H, I | Stockage optimisé | NoSQL, Big Data, entrepôts de données |
| HPC | Calcul haute performance | Bio-informatique, simulation de fluides |
Instances T — Burst CPU (crédit CPU)
Les instances T (ex: t2.micro, t3.small) fonctionnent sur un système de crédits CPU :
- En dessous du seuil de base → accumulation de crédits
- En pic de charge → consommation des crédits
- Crédits épuisés → performances réduites au niveau de base
t2.micro = Free Tier AWS (750h/mois gratuites). Idéal pour apprendre, pas pour la prod.
Instances M — Usage général stable
Les instances M (ex: m6i.large) offrent des performances constantes sans système de crédits.
Idéales pour applications d'entreprise, BDD relationnelles, serveurs web à trafic modéré.
Tableau d'exemples d'instances
| Instance | vCPU | RAM | Réseau | Bande passante EBS |
|---|---|---|---|---|
| t2.micro | 1 | 2 Go | Faible à modéré | — |
| m5.4xlarge | 16 | 64 Go | Jusqu'à 10 Gbps | 4 750 Mbps |
| m5.8xlarge | 32 | 128 Go | 10 Gbps | 6 800 Mbps |
| r5.8xlarge | 32 | 256 Go | 10 Gbps | 6 800 Mbps |
| c5ad.large | 2 | 4 Go | Jusqu'à 10 Gbps | + SSD NVMe 75 Go |
Paires de clés (Key Pairs)
Mécanisme d'authentification SSH pour accéder aux instances EC2.
Clé publique → installée dans ~/.ssh/authorized_keys de l'instance
Clé privée → conservée localement, NE JAMAIS partager
Formats :
.pem→ connexion SSH en ligne de commande (Linux/Mac).ppk→ connexion via PuTTY (Windows)
Connexion SSH :
chmod 400 ma-cle.pem
ssh -i ma-cle.pem ec2-user@<IP-PUBLIQUE>
Utilisateur par défaut :
ec2-usersur Amazon Linux,ubuntusur Ubuntu.
Clé perdue ? Monter le volume root sur une autre instance, modifier ~/.ssh/authorized_keys, remonter le volume sur l'instance originale.
Cycle de vie des instances
┌─────────────────────────────┐
│ AMI │
└──────────────┬──────────────┘
│ Launch
▼
[Pending] ← Provisionnement en cours
│
▼
[Running] ◄──────── Seul état facturé
╱ │ ╲
Reboot ╱ │ ╲ Terminate
╱ │ ╲
[Rebooting] [Stopping] [Shutting down]
╲ │ │
╲ ▼ ▼
╲ [Stopped] [Terminated]
╲ │
╲ │ Hibernate
╲ ▼
[Hibernated]
| État | Facturation | Notes |
|---|---|---|
| Pending | ❌ | Démarrage en cours |
| Running | ✅ | Seul état facturé |
| Rebooting | ✅ | Même hôte physique, même IP publique |
| Stopped | ❌ (calcul) / ✅ (EBS) | IP publique peut changer au redémarrage |
| Terminated | ❌ | Irrécupérable |
| Hibernated | ❌ (calcul) / ✅ (EBS) | RAM sauvegardée sur EBS |
Hibernation
- Sauvegarde le contenu de la RAM sur le volume EBS racine
- Au redémarrage : état mémoire restauré, processus repris, ID conservé
- Activer dans Advanced Details → Stop - Hibernate behavior → Enable
Important : instance stoppée puis redémarrée = nouvel hôte physique + nouvelle IP publique. Utiliser une Elastic IP pour garder une adresse fixe.
Amazon Machine Image (AMI)
Modèle précconfiguré pour lancer des instances (OS + applications + configurations).
Sources d'AMI
| Type | Description |
|---|---|
| AWS | AMIs officielles (Amazon Linux, Ubuntu, Windows…) |
| AWS Marketplace | Éditeurs tiers — ⚠️ vérifier la source, risque de malware |
| Communauté | Partagées publiquement — utiliser avec précaution |
| Personnalisée | Créée par vous, privée ou partagée avec d'autres comptes |
Créer une AMI personnalisée
1. Lancer une instance EC2 de base
2. Personnaliser (installer logiciels, configurer)
3. Arrêter l'instance (pour intégrité des données)
4. Actions → Images and Templates → Create Image
5. Définir les permissions (privée / partagée / publique)
6. Utiliser l'AMI pour lancer de nouvelles instances identiques
Une AMI peut être copiée dans une autre région (pour backup ou déploiement multi-région). Penser à Deregister l'AMI et supprimer les snapshots EBS associés pour éviter les coûts.
AMI vs User Data
| AMI | User Data | |
|---|---|---|
| Usage | Configuration statique et immuable | Configuration dynamique au lancement |
| Exemples | OS préconfigurés, antivirus préinstallé | Installation de paquets, variables d'instance |
| Bonne pratique | Base commune à toutes les instances | Personnalisation spécifique à chaque instance |
Groupes de sécurité (Security Groups)
Pare-feu virtuel contrôlant le trafic entrant/sortant des instances EC2.
Principe
- Modèle liste blanche : tout ce qui n'est pas explicitement autorisé est bloqué
- Stateful : une réponse à une requête autorisée est automatiquement permise (pas besoin de règle de retour)
- Associable à plusieurs instances ; une instance peut avoir plusieurs security groups
Règles configurables
| Champ | Description |
|---|---|
| Type | SSH, HTTP, HTTPS, RDP, Custom TCP... |
| Protocole | TCP, UDP, ICMP |
| Plage de ports | Ex: 22 (SSH), 80 (HTTP), 443 (HTTPS), 3306 (MySQL) |
| Source/Destination | IP CIDR (0.0.0.0/0 = tout Internet), ou un autre Security Group |
Les noms de domaine ne peuvent pas être utilisés dans les règles.
Exemple d'architecture
Internet (0.0.0.0/0)
│ Port 80 (HTTP)
│ Port 443 (HTTPS)
▼
[sg-web] — Instance EC2 (serveur web)
│ Port 3306 (MySQL) → uniquement vers sg-db
▼
[sg-db] — Instance RDS (base de données)
← Accepte 3306 depuis sg-web uniquement
Bonne pratique : restreindre SSH (
port 22) à votre seule IP (x.x.x.x/32), jamais à0.0.0.0/0.
Stateful vs Stateless
| Security Group | NACL (Network ACL) | |
|---|---|---|
| Type | Stateful | Stateless |
| Retour automatique | ✅ Oui | ❌ Non (règle explicite requise) |
| Niveau | Instance | Sous-réseau (subnet) |
User Data — Scripts au démarrage
Exécution automatique de scripts lors du premier lancement (ou à chaque redémarrage si configuré).
#!/bin/bash # ← Shebang obligatoire sur Linux
yum install httpd -y # -y pour éviter les confirmations manuelles
systemctl enable httpd
systemctl start httpd
echo '<h1>Hello from EC2</h1>' > /var/www/html/index.html
Points clés
- Exécuté avec les droits root (Linux) ou administrateur (Windows)
- Géré par cloud-init sur Linux
- Logs :
/var/log/cloud-init.loget/var/log/cloud-init-output.log(Linux) - Logs Windows :
C:\ProgramData\Amazon\EC2-Windows\Launch\Log - ⚠️ Ne jamais mettre de secrets en clair → utiliser AWS Secrets Manager
Métadonnées d'instances (Instance Metadata)
Informations sur l'instance accessible depuis l'instance elle-même.
URL magique (accessible uniquement depuis l'intérieur de l'instance) :
http://169.254.169.254/latest/meta-data/
Exemples de données disponibles :
ami-id, instance-id, instance-type,
local-ipv4, public-ipv4, mac,
security-groups, placement/, iam/...
IMDSv1 vs IMDSv2
| IMDSv1 | IMDSv2 | |
|---|---|---|
| Authentification | Aucune (simple GET) | Token de session requis |
| Sécurité | ⚠️ Vulnérable au SSRF | ✅ Protégé contre SSRF |
| Par défaut depuis | — | Mi-2024 |
IMDSv2 — commandes :
# Obtenir le token
TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" \
-H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
# Utiliser le token
curl -H "X-aws-ec2-metadata-token: $TOKEN" \
http://169.254.169.254/latest/meta-data/local-ipv4
Activer IMDSv1 si nécessaire : Advanced Details → Metadata version → V1 and V2 (token optional)
Adresses IP élastiques (Elastic IP)
Adresse IPv4 statique et persistante louée à AWS, indépendante du cycle de vie de l'instance.
Problème sans Elastic IP
Instance démarrée → IP publique : 52.10.20.30
Instance stoppée
Instance redémarrée → IP publique : 18.45.67.89 ← IP différente !
Solution avec Elastic IP
Elastic IP 54.10.20.30 → Associée à l'instance A
→ Remappée à l'instance B si A tombe
DNS (example.com) → Pointe toujours vers 54.10.20.30
Facturation
- Depuis 2023 : facturée même si attachée à une instance en cours d'exécution
- Free Tier : 750h/mois d'une IPv4 gratuite pendant 12 mois
- ⚠️ Libérer (Release) les Elastic IP non utilisées pour éviter les frais
Surveillance avec CloudWatch
Par défaut, EC2 envoie les métriques toutes les 5 minutes à CloudWatch (1 min avec monitoring détaillé payant).
Métriques collectées automatiquement :
- Utilisation CPU, I/O réseau, I/O disque
Métriques NON collectées par défaut (nécessitent l'agent CloudWatch) :
- Utilisation RAM
- Détails des performances disque
Test de charge CPU :
sudo yum install -y stress sudo stress --cpu 8 --timeout 800 &
Mise à l'échelle (Scaling)
| Type | Description | Interruption ? |
|---|---|---|
| Vertical | Changer le type d'instance (plus grand/petit) | ✅ Oui — arrêt requis |
| Horizontal | Ajouter/supprimer des instances | ❌ Non |
Scaling vertical :
Instance stoppée → Actions → Instance Settings → Change Instance Type → Apply
⚠️ Toute instance autre que t2.micro sort du Free Tier.
Scaling horizontal → géré par Auto Scaling Groups (ASG).
Modèles de tarification EC2
1. À la demande (On-Demand)
- Paiement à l'heure ou à la seconde
- Aucun engagement, aucun paiement initial
- Idéal pour : charges imprévisibles, tests, développement
2. Instances réservées (Reserved Instances)
Engagement 1 ou 3 ans → jusqu'à 72 % de réduction
| Option de paiement | Réduction |
|---|---|
| All Upfront (tout à l'avance) | Maximale |
| Partial Upfront (partiel) | Intermédiaire |
| No Upfront (mensuel) | Moindre |
Portée (Scope) :
- Régionale : flexible entre toutes les AZ d'une région
- Zonale : garantit la capacité dans une AZ spécifique
Convertible Reserved Instances : possibilité de changer le type/OS/tenancy → jusqu'à 66 % de réduction (moins que les RI standard).
3. Savings Plans
- Engagement sur un montant horaire (ex: 10 $/h pendant 1 ou 3 ans)
- Jusqu'à 72 % de réduction
- Plus flexible que les Reserved Instances : couvre différentes tailles, OS, régions
- AWS applique les réductions automatiquement
4. Instances Spot
- Utilise la capacité inutilisée d'AWS
- Jusqu'à 90 % moins cher que l'On-Demand
- ⚠️ Interruptibles avec un préavis de 2 minutes
- Idéal pour : traitement par lots, analyse de données, simulations, CI/CD
Stratégies pour gérer les interruptions :
- Checkpoints réguliers dans le code
- Utiliser Spot Fleet (plusieurs types d'instances + AZ)
- Surveiller l'historique des prix Spot
5. Instances dédiées (Dedicated Instances)
- Matériel physique dédié à votre compte (non partagé avec d'autres clients)
- Placement géré par AWS automatiquement
- ⚠️ L'instance peut changer de serveur physique après un stop/start
- Idéal pour : conformité réglementaire, sécurité stricte
6. Hôtes dédiés (Dedicated Hosts)
- Serveur physique entier sous votre contrôle
- Vous choisissez le placement des instances sur le serveur
- L'instance reste sur le même serveur après un stop/start
- Idéal pour : licences logicielles par socket/serveur (Windows Server, SQL Server)
Comparatif Instances dédiées vs Hôtes dédiés
| Critère | Instances dédiées | Hôtes dédiés |
|---|---|---|
| Isolation physique | ✅ | ✅ |
| Placement automatique AWS | ✅ | ❌ (vous contrôlez) |
| Même serveur après restart | ❌ | ✅ |
| Gestion licences par socket | ❌ | ✅ |
Tableau comparatif des modèles de tarification
| Modèle | Réduction | Engagement | Interruptible | Idéal pour |
|---|---|---|---|---|
| On-Demand | — | Aucun | ❌ | Tests, charges imprévisibles |
| Reserved | Jusqu'à 72 % | 1 ou 3 ans | ❌ | Charges stables et prévisibles |
| Savings Plans | Jusqu'à 72 % | 1 ou 3 ans | ❌ | Flexible multi-services |
| Spot | Jusqu'à 90 % | Aucun | ✅ (2 min) | Batch, tolérant aux coupures |
| Dedicated Instances | — | — | ❌ | Conformité, isolation physique |
| Dedicated Hosts | — | — | ❌ | Licences logicielles spécifiques |
À retenir pour l'examen AWS
- Nomenclature :
c7gn.2xlarge= famille C, génération 7, GPU+réseau, taille 2xlarge- Instances T = burst CPU avec crédits ; instances M = performances constantes
- Seul état facturé : Running (EBS facturé en Stopped/Hibernated)
- Security Groups = stateful (retour automatique) ; NACL = stateless
- IMDSv2 = par défaut depuis mi-2024, protège contre les attaques SSRF
- Elastic IP = adresse IPv4 fixe, facturée même attachée (depuis 2023)
- User Data = scripts exécutés au premier démarrage, droits root, jamais de secrets en clair
- Scaling vertical = changer le type d'instance, arrêt requis
- Spot = jusqu'à 90 % moins cher, interruptible avec 2 minutes de préavis
- Reserved = jusqu'à 72 %, Spot = jusqu'à 90 %, Savings Plans = jusqu'à 72 %
- Dedicated Instances = placement auto par AWS ; Dedicated Hosts = contrôle total + licences