Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

đŸ’» AWS EC2 (Elastic Compute Cloud)

Guide complet IDEO-Lab : Instances, AMI, Login (SSH/PuTTY), Security Groups & Tarification.

1.1

Concept : EC2 (La VM)

IaaS (Infrastructure). Le "Serveur Virtuel" dans le Cloud.

EC2 IaaS VM
1.2

Concept : AMI (L'OS)

Amazon Machine Image. Le "template" (OS + Logiciels).

AMI OS
1.3

Concept : Instance Types (Le "Hardware")

Le "matériel" (t2.micro, m5.large...). Familles (T, M, C, R).

Instance Type t2.micro
2.1

Lancement : 1. Choix de l'AMI

Choisir (Amazon Linux, Ubuntu, Windows...), Marketplace.

Launch AMI
2.2

Lancement : 2. Choix du Type

Choisir la taille (t2.micro pour le Free Tier).

Launch Free Tier
2.3

Lancement : 3. Key Pair (Clé SSH)

(Crucial) Fichier .pem. La "clé" de la porte (SSH).

Launch Key Pair .pem
3.1

Lancement : 4. Réseau (VPC)

VPC, Subnet (Public vs Privé), Auto-assign Public IP.

VPC Subnet Public
3.2

Lancement : 5. Security Group (SG)

Le "Pare-feu" (Autoriser Port 22 (SSH), 80 (HTTP)).

Security Group Firewall
3.3

Lancement : 6. Stockage (EBS)

Le "Disque Dur" (Volume Root). (gp3, Taille en Go).

EBS Stockage Bloc
4.1

Connexion : SSH (Linux/Mac)

ssh -i key.pem user@ip, chmod 400.

SSH chmod 400
4.2

Connexion : PuTTY (Windows)

PuTTYgen (.pem -> .ppk), PuTTY (Load .ppk).

PuTTY PuTTYgen .ppk
4.3

Connexion : Session Manager (SSM)

(Moderne) Connexion (Web/CLI) sans Key Pair, sans Port 22.

SSM Sécurité
5.1

Init : User Data (cloud-init)

Script (Bash) exécuté 1 fois au premier boot (apt update).

User Data cloud-init
5.2

Init : IAM Role (Permissions)

(Sécurité) Donner des permissions (ex: S3) à l'EC2 sans clés.

IAM Role Best Practice
5.3

Config : Elastic IP (EIP)

IP Publique Statique (Fixe). (Payante si non-attachée).

EIP IP Statique
6.1

Tarif 1 : On-Demand

Facturé à la seconde (flexible, prix plein).

On-Demand
6.2

Tarif 2 : Reserved (RI) / Savings Plans

Engagement (1-3 ans) pour réduction (40-60%).

Reserved Instances Savings Plans
6.3

Tarif 3 : Spot Instances

EnchÚres (Capacité AWS inutilisée). (Réduction 90%, interruptible).

Spot Instance Stateless
7.1

Backup : EBS Snapshots

Backup (Incrémentiel) du disque (EBS) vers S3.

Snapshot EBS
7.2

Backup : Custom AMI

"Golden Image". (Snapshot + Métadonnées de l'instance).

Custom AMI Golden Image
7.3

Scaling : Auto Scaling Group (ASG)

HA (Auto-réparation) & Scalabilité (Scale-out/in).

ASG HA
11. Cas d’usage typiques (EC2)
11.1. Serveur Web / API Backend (Général)

C'est le cas d'usage le plus simple. L'instance EC2 (ex: t3.micro, m6g.large) exécute un serveur web (Nginx, Apache, Caddy) ou une API (backend simple).

Dans cette architecture, l'EC2 est (généralement) "stateless" (sans état) et placée derriÚre un Application Load Balancer (ALB) et dans un Auto Scaling Group (ASG) pour la scalabilité et la résilience.

Architecture (Architecture 3-Tiers Standard)
                    (Internet) -> [ALB (Subnet Public)] -> [ASG (EC2-Web) (Subnet Privé)] -> [RDS (Subnet Isolé)]
                
Pourquoi EC2 (vs Lambda) ?
  • Connexions persistantes : (ex: WebSockets) qu'Lambda (max 15 min) ne gĂšre pas bien.
  • ComplexitĂ© : ContrĂŽle total sur la configuration (nginx.conf) et les modules.
  • CoĂ»t (Baseline) : Si vous avez un trafic constant (baseline) (ex: 100 req/sec, 24/7), EC2 (avec Savings Plan) est (souvent) moins cher que Lambda (facturĂ© Ă  la requĂȘte/ms).
11.2. Serveur d’Applications (Django, Flask, Node.js
)

C'est une spécialisation du (11.1). L'EC2 exécute le runtime applicatif (ex: Gunicorn/uWSGI (Python), PM2 (Node.js), Tomcat (Java)).

Pourquoi EC2 (vs Beanstalk ou Lambda) ?

Vous utilisez EC2 (plutÎt qu'un PaaS comme Beanstalk ou FaaS comme Lambda) lorsque vous avez besoin de contrÎle total sur l'environnement d'exécution :

  • DĂ©pendances OS : L'application (Python/Django) a besoin de apt-get install lib-geospatial-xyz (une librairie C/OS) qui n'est pas incluse dans les runtimes Lambda/Beanstalk.
  • Configuration SpĂ©cifique : NĂ©cessitĂ© de "tuner" (optimiser) le Kernel (sysctl.conf) (ex: net.core.somaxconn) pour des performances rĂ©seau (haute connexion) que le PaaS n'expose pas.
  • Workers Longue DurĂ©e : L'application (Django) utilise Celery (Workers) qui doit tourner (en daemon) 24/7 (pas seulement 15 min comme Lambda).
  • Stockage Local : L'application a besoin d'un accĂšs (temporaire) trĂšs rapide Ă  un disque local (ex: Instance Store (NVMe)) pour un traitement (que Lambda (/tmp 512MB) ne peut pas offrir).
11.3. Applications "Legacy" (Lift-and-Shift)

C'est la migration "Lift & Shift" (Tel quel). C'est le cas d'usage oĂč EC2 est (souvent) la seule option (car l'application "legacy" (ancienne) ne peut pas ĂȘtre modernisĂ©e (container/serverless)).

Scénarios (Migration "P1")
  • (OS) Application Windows (ex: .NET 3.5) tournant sur Windows Server 2008 / 2012 (On-Premise).
    • Solution : Lancer une EC2 (Windows) avec une AMI (Windows Server 2012) et y (rĂ©)installer l'application (.exe) (ou utiliser AWS Migration Service (MGN) pour cloner le disque).
  • (Logiciel) Application "Monolithique" (ex: Oracle Forms, SAP R/3) qui dĂ©pend d'une version spĂ©cifique (ex: Java 6) ou de drivers matĂ©riels (ex: ClĂ© USB "Dongle" (via VM Import/Export)).
    • Solution : Lancer une EC2 (Linux/Windows) et recrĂ©er (manuellement) l'environnement exact.
  • (Licence) Application (ex: Oracle DB) dont la licence (BYOL) est liĂ©e au matĂ©riel (Sockets/CƓurs physiques).
    • Solution : Utiliser EC2 Dedicated Host (HĂŽte DĂ©diĂ©) (qui vous donne le serveur physique) pour la conformitĂ© de la licence.
11.4. Serveur de Bases de Données "Custom" (Self-Managed)

C'est le cas d'usage oĂč vous choisissez EC2 (IaaS) plutĂŽt que RDS (PaaS).

(RÚgle) : Toujours utiliser RDS (ou Aurora) (managé) d'abord. N'utilisez EC2 (self-managed) que si RDS ne peut (absolument) pas répondre au besoin.

Pourquoi EC2 (vs RDS) ? (Besoin de ContrĂŽle)
  • Moteur Non-SupportĂ© : Vous avez besoin d'une BDD que RDS ne propose pas (ex: MongoDB, Cassandra, Neo4j (Graphe), ClickHouse (Analytics)).
  • Version Non-SupportĂ©e : Vous avez (Legacy) besoin de PostgreSQL 9.6 (que RDS n'offre plus) ou (Bleeding Edge) de PostgreSQL 17 (Beta) (que RDS n'offre pas encore).
  • Extension Non-SupportĂ©e : Vous avez besoin d'une extension PostgreSQL (ex: timescaledb) qui n'est pas (encore) supportĂ©e (approuvĂ©e) par RDS.
  • AccĂšs OS (Root) : Vous (DBA) avez besoin d'un accĂšs root (SSH) au serveur (OS) pour installer un agent de monitoring (custom), "tuner" (optimiser) sysctl.conf (Kernel) ou postgresql.conf (paramĂštres avancĂ©s "unsafe" que RDS bloque).
    • (Alternative : RDS Custom (pour Oracle/SQL Server) offre l'accĂšs SSH).

(Inconvénient) : VOUS devenez 100% responsable des Patchs, Backups (Snapshots), de la HA (Multi-AZ) (Replication, Failover), et du Scaling (Read Replicas).

11.5. Machine GPU (Intelligence Artificielle / Machine Learning)

EC2 fournit des "Instances Accélérées" (GPU) pour les 2 phases du ML : Training (Entraßnement) et Inference (Déploiement).

1. Training (EntraĂźnement de ModĂšles) (Cher, Puissant)
  • Instances (Famille P, Trn) : p4d (GPU Nvidia A100), p5 (GPU Nvidia H100), trn1 (AWS Trainium).
  • Usage : EntraĂźner (calcul matriciel intensif) des modĂšles (LLM, Vision) de zĂ©ro (ex: model.fit() sur des TĂ©raoctets de donnĂ©es).
  • RĂ©seau : NĂ©cessite une bande passante rĂ©seau extrĂȘme (EFA - Elastic Fabric Adapter) pour le "Distributed Training" (ex: 32 instances p5 qui travaillent ensemble).
2. Inference (Inférence / Prédiction) (Moins cher, Rapide)
  • Instances (Famille G, Inf) : g5 (GPU Nvidia A10G), inf2 (AWS Inferentia2).
  • Usage : HĂ©berger (servir) le modĂšle (dĂ©jĂ  entraĂźnĂ©) (model.predict()) derriĂšre une API (ex: via AWS SageMaker Endpoints, qui utilise ces EC2 en backend).
  • Objectif : CoĂ»t ($) par infĂ©rence le plus bas, Latence (ms) la plus faible. (Inferentia (inf) est souvent le meilleur ratio prix/perf (vs GPU Nvidia) pour l'infĂ©rence).
11.6. Rendering (Rendu) Vidéo / 3D (VFX)

Cas d'usage (similaire au 11.5) qui utilise des instances (GPU) pour le calcul graphique (non-ML).

  • Instances (Famille G) : g4dn, g5. (GPU Nvidia (ex: T4, A10G) + Drivers GRID (pour le graphique/workstations)).
  • Usage :
    • Workstations Virtuelles (Studio) : (Streaming (Protocole NICE DCV)) L'artiste (3D) (Ă  la maison) se connecte (via DCV) Ă  une instance g5 (puissante) (dans le Cloud) qui exĂ©cute Maya / Blender / Nuke (sur une AMI Windows/Linux custom).
    • Render Farms (Fermes de Rendu) : (Batch) Lancement de 1000 instances EC2 (Spot (9.4)) (g5 ou c5 (CPU-rendering)) (via un orchestrateur (ex: AWS Thinkbox Deadline)) pour calculer (renderer) les 100 000 "frames" (images) d'un film (VFX).

(Spot (9.4)) : Le "Rendering" (Batch) est le cas d'usage parfait pour les Instances Spot (jusqu'à -90% de réduction), car si l'instance (Frame 50) est interrompue (préavis 2min), l'orchestrateur (Deadline) la relance (simplement) sur une autre instance Spot (Frame 50 - retry).

11.7. HPC (High Performance Computing)

Calcul Scientifique (Météo, Fluides (CFD), Génomique, Simulation (Crash-test)).

Architecture (Tightly-Coupled vs Loosely-Coupled)

1. Tightly-Coupled (MPI) (Ex: Simulation Fluides)

Les NƓuds (EC2) doivent communiquer Ă©normĂ©ment (et Ă  trĂšs faible latence) entre eux (MPI - Message Passing Interface).

  • Instances : Hpc7g (Graviton), Hpc6a (AMD).
  • RĂ©seau : EFA (Elastic Fabric Adapter) (Bande passante 100/200 Gbps, Latence microsecondes, OS-Bypass (Kernel)).
  • Placement : Placement Group (Cluster) (Garantit que les NƓuds sont sur le mĂȘme Rack physique).
  • Stockage (PartagĂ©) : FSx for Lustre (SystĂšme de fichiers (parallĂšle) ultra-performant).

2. Loosely-Coupled (Batch) (Ex: Analyse Génomique)

"Embarrassingly parallel". 1000 NƓuds (EC2) qui font 1000 calculs indĂ©pendants (ne communiquent pas entre eux). (Similaire au Rendering (11.6)).

  • Instances : Familles C (Compute) (c6g, c7g) ou M (General) (m6g).
  • RĂ©seau : ENA (Standard) (Pas besoin d'EFA).
  • Placement : (Aucun) (Spread (par dĂ©faut)).
  • Orchestration : AWS Batch (PaaS) (qui gĂšre la file (Job Queue) et provisionne (automatiquement) des EC2 (Spot ou On-Demand) pour exĂ©cuter les jobs (Conteneurs Docker)).
10. Automatisation & DevOps (EC2)
10.1. EC2 + Systems Manager (SSM)

SSM est la "boßte à outils" (PaaS) d'AWS pour l'administration et l'automatisation des EC2, sans nécessiter d'accÚs SSH (ni de Bastion).

(Pré-requis) : L'instance EC2 doit avoir l'Agent SSM (installé par défaut) et un IAM Role (attaché) avec la policy AmazonSSMManagedInstanceCore.

Outils d'Automatisation SSM
  • Run Command : ExĂ©cute un script (bash, PowerShell) (ex: "Restart-Nginx") Ă  la demande (Ad-Hoc) sur une (ou 1000) instance(s) cible(s) (via Tags).
  • Patch Manager : Automatise le patching OS (SĂ©curitĂ©). Vous dĂ©finissez des "Baselines" (RĂšgles, ex: "Installer Patchs Critiques, 7 jours aprĂšs release") et des "Maintenance Windows" (Quand patcher, ex: Dimanche 2h du matin).
  • State Manager : Garantit (enforce) un "Ă©tat" (Configuration Management (10.5)). (Ex: "S'assure (toutes les 30 min) que l'Agent CloudWatch (7.2) est running").
  • Automation (Documents) : CrĂ©e des "Runbooks" (workflows) complexes. (Ex: "Automatiser le Hardening CIS (4.5)", "CrĂ©er une AMI (10.2)", "RedĂ©marrer une instance EC2 et vĂ©rifier son Ă©tat").
  • Session Manager : (AccĂšs) Permet un accĂšs Shell (CLI) sĂ©curisĂ© (via IAM, sans Port 22 ouvert).
10.2. EC2 Image Builder (Pipeline d'AMI)

C'est la méthode moderne (DevOps) pour automatiser la création d'AMIs "Golden Images" (sécurisées, patchées, et à jour).

Il remplace les scripts packer (legacy) ou les "backups" (Snapshots) manuels d'instances.

Composants d'un Pipeline Image Builder
  • 1. Image Recipe (Recette) :
    • Source Image (Source) : L'AMI de base (ex: Ubuntu 22.04 LTS (derniĂšre version)).
    • Components (IngrĂ©dients) : Les scripts d'installation/configuration (ex: yum install nginx, install-cloudwatch-agent, cis-hardening-level-1 (Script de durcissement)).
  • 2. Infrastructure Configuration :
    • OĂč "cuire" (Bake) l'image ? (Type Instance (t3.micro), VPC/Subnet PrivĂ©, IAM Role (Build)).
  • 3. Distribution Settings :
    • OĂč "livrer" l'AMI finale ? (ex: Donner le nom mon-app-prod-).
    • (Optionnel) Copier l'AMI (automatiquement) vers d'autres RĂ©gions (ex: eu-central-1) (pour la DR).
    • (Optionnel) Partager l'AMI (automatiquement) avec d'autres Comptes AWS (ex: Compte "Prod").
  • 4. Pipeline :
    • L'orchestrateur (le "Cron") qui lance la "Recette" (ex: "Tous les 1er du mois" (pour patcher) ou "AprĂšs un commit (Git) sur la Recette").
10.3. Infrastructure as Code (IaC)

Le principe de l'IaC est de définir et provisionner votre infrastructure (VPC, EC2, SG, IAM...) en utilisant du code (fichiers texte) (ex: YAML, HCL, Python) plutÎt qu'en cliquant (manuel) dans la console AWS.

Avantages : Reproductibilité (Dev=Prod), Audit (Git blame), Peer Review (Pull Requests), Automatisation (CI/CD).

OutilLangageAvantagesInconvénients
AWS CloudFormationYAML / JSONAWS Natif. Intégré (StackSets). Gestion "atomique" (Transactions, Rollback).TrÚs Verbeux (1000 lignes YAML pour 1 EC2). Difficile à lire/maintenir.
AWS CDK (Cloud Dev Kit)Python, TypeScript, Go...Moderne (AWS). (Code "Impératif" (Python) qui compile en CloudFormation (YAML)).
Constructs (L3) (ex: new Vpc(...) crée 1 VPC, 6 Subnets, 2 NATs... en 1 ligne).
(Courbe d'apprentissage).
Terraform (HashiCorp)HCL (Langage DĂ©claratif)Standard de l'Industrie. Multi-Cloud (AWS, Azure, GCP, VMWare...). ÉcosystĂšme (Modules) immense.GĂšre son propre "État" (terraform.tfstate) (un fichier JSON (Ă  stocker sur S3) qui "mappe" le code aux ressources rĂ©elles).
                    # Exemple (Terraform HCL) - Simple et lisible
                    resource "aws_instance" "web" {
                    ami           = "ami-0abcdef123"
                    instance_type = "t3.micro"
                    vpc_security_group_ids = [ aws_security_group.web.id ]

                    tags = { Name = "Serveur-Web-Prod" }
                    }
                
10.4. CI/CD (Déploiement Continu sur EC2)

Comment (automatiquement) déployer votre nouveau code applicatif (ex: app-v2.py) sur votre flotte d'EC2 (v1) (gérée par un ASG) ?

1. AWS CodeDeploy (PaaS de Déploiement)

C'est le service AWS qui gÚre le "déploiement" (physique) sur la flotte EC2.

  • PrĂ©-requis : L'Agent CodeDeploy (codedeploy-agent) doit tourner sur les EC2s.
  • appspec.yml : Un fichier (YAML) (dans votre code) qui dit Ă  l'Agent "Quoi faire" (Hooks) :
    • BeforeInstall: (ex: systemctl stop nginx)
    • Install: (ex: Copier les nouveaux fichiers (v2) de /source vers /var/www/html)
    • AfterInstall: (ex: chmod 755 ...)
    • ApplicationStart: (ex: systemctl start nginx)
    • ValidateService: (ex: curl http://localhost/health) (VĂ©rifie si v2 a dĂ©marrĂ©).
Stratégies de Déploiement (CodeDeploy)
  • In-Place (Sur Place) : (RisquĂ© / Downtime) (AllAtOnce ou Rolling). Met Ă  jour les instances existantes (v1 -> v2). (S'il Ă©choue, l'app est cassĂ©e).
  • Blue/Green (Bleu/Vert) : (SĂ»r / ZĂ©ro Downtime)
    1. (ASG) L'ASG (v1) (Bleu) tourne.
    2. (CodeDeploy) Crée (via l'ASG) un nouveau "Groupe de Remplacement" (Vert) (avec v2).
    3. (CodeDeploy) Teste (fumée) le (Vert).
    4. (CodeDeploy) Demande au Load Balancer (ALB) de basculer (Shift) 100% du trafic (Public) de (Bleu) vers (Vert).
    5. (CodeDeploy) (AprĂšs 1h (Wait)) Termine (Tue) l'ancienne flotte (Bleu).
Orchestrateurs (CI/CD)
  • AWS CodePipeline : L'orchestrateur 100% Natif AWS. (Source: CodeCommit/S3/GitHub -> Build: CodeBuild -> Deploy: CodeDeploy).
  • GitHub Actions / GitLab CI : (Populaire) (Trigger: on push) -> (Runner) 1. Build Image/ZIP -> 2. Push (S3/ECR) -> 3. (CLI) aws deploy create-deployment ... (DĂ©clenche CodeDeploy (Blue/Green)).
10.5. Configuration Management (vs Immutable)

Comment s'assurer que vos 100 EC2 (longue durée) sont (et restent) configurées à l'identique (ex: ntp.conf, sshd_config) ?

Approche 1 : "Mutable" (Gestion de Configuration)

Vous "patchez" (modifiez) les serveurs (Pets) (longue durée) (ex: BDD self-managed, Active Directory).

  • Ansible : (Populaire) Agentless (Sans Agent) (ModĂšle "Push"). (Utilise SSH (ou SSM (10.1)) pour se connecter et "pousser" (push) la configuration (Playbooks YAML)). (Bon pour le "bootstrap" (1er setup) ou tĂąches ad-hoc).
  • Chef / Puppet / SaltStack : (Enterprise / Legacy) Agent-based (ModĂšle "Pull"). (Un Agent (ex: chef-client) tourne sur chaque EC2, et "pull" (tire) (toutes les 30 min) sa configuration (Recipes) depuis un "Master" (Serveur Chef/Puppet)). (Lourd, mais garantit la convergence de l'Ă©tat).
  • AWS SSM State Manager (10.1) : (Moderne AWS) L'alternative "Agent-based" (Agent SSM) (Pull/Enforce) Ă  Chef/Puppet/Ansible.
Approche 2 : "Immutable Infrastructure" (Moderne)

Vous ne "patchez" jamais un serveur (Cattle) (jetable) en production.

Flux (Blue/Green) :

  1. (Code) (Jour 1) Vous trouvez un bug (nginx.conf v1).
  2. (Dev) Vous modifiez le Component (10.2) (nginx.conf v2).
  3. (Pipeline) EC2 Image Builder (10.2) "Bake" (cuit) une nouvelle AMI (mon-app-v2) (contenant nginx.conf v2).
  4. (Pipeline) CodeDeploy (10.4) (Blue/Green) :
    • DĂ©marre une nouvelle flotte (Green) (ASG) (avec l'AMI v2).
    • Bascule le trafic (ALB) sur (Green).
    • Termine (Tue) l'ancienne flotte (Blue) (qui avait nginx.conf v1).

(Résultat) : La configuration est "atomique" (l'AMI). Pas de "drift" (dérive) de configuration. Rollback facile (il suffit de re-scaler l'ASG (Bleu) v1).

💾 Calculateur de Prix (EstimĂ©) EC2 On-Demand
Estimation de Coût (On-Demand)

Attention : Ce calculateur utilise des prix fictifs (estimés) à des fins de démonstration (je n'ai pas accÚs aux API de pricing live). Les prix réels varient (à la minute) et selon la Région.

Résultats (Estimés)
Prix (USD) $

Coût Horaire:

$0.0000

Coût Mensuel (730h):

$0.00

Prix (EUR) €

Coût Horaire (Estimé):

€0.0000

Coût Mensuel (Estimé 730h):

€0.00

Disclaimer & Limitations (Lecture Obligatoire)

ATTENTION : Je suis un assistant IA. Je n'ai pas accÚs aux API de pricing (tarification) en temps réel d'AWS.

Les prix utilisés dans ce calculateur sont des données fictives (estimations statiques) basées sur des exemples connus, et sont utilisés uniquement pour démontrer le fonctionnement du calculateur JavaScript.

Ce qui est exclu de ce calcul :
  • Prix RĂ©els : Les prix AWS (On-Demand) changent constamment.
  • Taux de Change : Le taux (USD -> EUR) est fixĂ© (fictif) dans le script (0.92) et n'est pas un taux de change rĂ©el.
  • Stockage EBS : Le prix du Volume EBS (Disque Dur) (facturĂ© au GB/mois et aux IOPS) n'est PAS inclus.
  • Data Transfer : Le coĂ»t du transfert de donnĂ©es (Sortant/Egress) (facturĂ© au GB) n'est PAS inclus.
  • Autres CoĂ»ts : N'inclut pas les EIPs (non-attachĂ©es), les Snapshots, le Detailed Monitoring, etc.

Conclusion : Utilisez cet outil pour voir (conceptuellement) comment le prix change (ex: Linux vs Windows, us-east-1 vs eu-west-3), mais utilisez toujours le Calculateur Officiel AWS pour des estimations réelles.

9. Modalités de Facturation (FinOps EC2)
9.1. On-Demand Instances (À la demande)

C'est le modÚle de facturation par défaut. Il est 100% flexible (Pay-as-you-go).

  • Principe : Vous payez pour la capacitĂ© de calcul (c5.large) Ă  la seconde (avec un minimum de 60 secondes pour la plupart des instances Linux/Windows).
  • Avantage : FlexibilitĂ© totale. Pas d'engagement. Vous dĂ©marrez (Start) et arrĂȘtez (Stop/Terminate) quand vous voulez.
  • InconvĂ©nient : C'est le prix le plus Ă©levĂ© (le "prix public").
  • Cas d'usage :
    • Dev/Test : Workloads (charges) temporaires.
    • Nouvelles Applications : Quand la charge est inconnue ou imprĂ©visible.
    • Pics (Spiky) : UtilisĂ© par les Auto Scaling Groups (ASG) pour gĂ©rer les pics de trafic (Scale-Out) au-dessus de votre "baseline" (couverte par RI/SP).
9.2. Reserved Instances (RI) (ModĂšle "Legacy")

C'est l'ancien modÚle d'engagement. Il offre une réduction importante (jusqu'à -72% vs On-Demand) en échange d'un engagement (1 an ou 3 ans) sur une famille d'instance spécifique (ex: m5) dans une Région spécifique (ex: eu-west-3).

(Note) : Les RIs sont (aujourd'hui) largement remplacées par les Savings Plans (9.3) (plus flexibles), mais elles sont toujours utilisées (notamment pour la garantie de capacité).

Type RIFlexibilitéRéductionCas d'usage
Standard RIRigide (Verrouillé sur Famille/OS/Région/Tenancy).La plus élevée.Charge 100% stable et prévisible (ex: un m5.large qui tourne 24/7/365).
Convertible RIFlexible (Permet de changer de Famille/OS/Tenancy).Plus faible (que Standard).(Remplacé par Compute Savings Plan (9.3)).
Garantie de Capacité (Capacity Reservation)

Un avantage (parfois) oubliĂ© des RIs (Zonales) : elles garantissent (rĂ©servent) la capacitĂ© (hardware) pour vous dans une AZ spĂ©cifique. (MĂȘme si AWS est en "rupture de stock" sur p4d.24xlarge dans us-east-1a, votre RI est garantie).

9.3. Savings Plans (SP) (ModĂšle Moderne)

C'est le modÚle d'engagement moderne (recommandé). Il offre la flexibilité de l'On-Demand avec la réduction des RIs.

Principe : Vous ne réservez pas une "instance" (m5.large). Vous vous engagez à dépenser un montant ($) (ex: $10.00 / heure) en "Compute" (Calcul) pendant 1 ou 3 ans.

Types de Savings Plans
Type SPFlexibilitĂ© (Quoi & OĂč)RĂ©ductionUsage (RecommandĂ©)
Compute Savings PlanTotale (Flexibilité maximale).
S'applique automatiquement Ă  :
‱ EC2 (Toute Famille, Toute RĂ©gion)
‱ AWS Fargate (Conteneurs)
‱ AWS Lambda (Serverless)
ÉlevĂ©e (similaire aux RI Convertibles).(RecommandĂ© par DĂ©faut). IdĂ©al si vous (migrez (rĂ©gion), modernisez (EC2->Fargate), changez (Intel->Graviton)).
EC2 Instance Savings PlanRigide (Verrouillé).
S'applique uniquement Ă  :
‱ 1 Famille d'Instance (ex: m6g)
‱ 1 RĂ©gion (ex: eu-west-3)
La plus élevée (similaire aux RI Standard).(Identique RI Standard) Si vous avez une charge 100% stable (ex: 10 m6g à Paris pour 3 ans).

(Flux) : Vous vous engagez ($10/h). AWS facture votre usage (EC2, Fargate, Lambda) au tarif (réduit) Savings Plan (jusqu'à $10/h), puis facture tout surplus (ex: $12/h) au tarif On-Demand (9.1).

9.4. Spot Instances (EnchĂšres)

C'est le modÚle "basé enchÚres". Vous "achetez" la capacité EC2 inutilisée (spare) d'AWS.

Avantages & Inconvénients
  • Avantage (CoĂ»t) : RĂ©duction massive (jusqu'Ă  -90%) par rapport au prix On-Demand.
  • InconvĂ©nient (Risque) : Interruptible. Si AWS a besoin de cette capacitĂ© (pour un client On-Demand/RI) ou si le "prix Spot" (enchĂšre) dĂ©passe votre "prix max" (optionnel), AWS termine (tue) votre instance (avec un prĂ©avis (Warning) de 2 minutes).
Cas d'Usage (Workloads Tolérants aux Pannes)

(RĂšgle d'Or) : Ne jamais utiliser Spot pour un workload (charge) qui ne peut pas ĂȘtre interrompu (ex: BDD Master, API Web unique).

Idéal pour :

  • Batch Processing : (Calcul scientifique, analyse gĂ©nomique). (Si le job est tuĂ©, on le relance plus tard).
  • Rendering Farms : (Rendu 3D / VFX).
  • CI/CD : (ex: Jenkins Workers, GitLab Runners).
  • Big Data (Stateless) : (ex: NƓuds "Worker" Spark / EMR).
  • Auto Scaling Group (Mixte) : (Bonne Pratique) Configurer l'ASG (8.1) pour utiliser une "Mixed Instance Policy" (ex: 30% On-Demand (Baseline stable) + 70% Spot (Scaling pas cher)).
9.5. Dedicated Hosts & Dedicated Instances

Ces deux modÚles garantissent que vos instances EC2 tournent sur un serveur physique (Hardware) qui vous est dédié (isolé) (pas de "voisins" (multi-tenant)).

Cas d'Usage (Compliance & Licence)
  • 1. Compliance (RĂ©glementaire) : Pour des workloads (charges) trĂšs sensibles (ex: HDS (SantĂ© France), HIPAA (SantĂ© US), PCI) qui (parfois) exigent une isolation physique (matĂ©rielle) (et pas seulement virtuelle (Hyperviseur)).
  • 2. Licences (BYOL - Bring Your Own License) : Pour des logiciels "legacy" (anciens) (ex: Oracle DB, Microsoft SQL Server) dont la licence est (stupidement) liĂ©e au matĂ©riel physique (Sockets, CƓurs).
ModĂšleNiveau de ContrĂŽleFacturationUsage
Dedicated InstancesNiveau Instance (Facile).
Vous demandez "Tenancy=Dedicated". AWS garantit qu'elle tourne sur un HĂŽte "mono-client".
Par Instance (/heure) (+Frais $/heure/région).Compliance (Isolation simple).
Dedicated HostsNiveau HĂŽte (Serveur) (ContrĂŽle total).
Vous "allouez" (réservez) tout le serveur physique (ex: m5.metal).
Par HĂŽte (/heure) (Cher).Licences (BYOL) (Vous contrĂŽlez l'affinitĂ© CƓurs/Sockets).
8. Scalabilité & Haute Disponibilité
8.1. Auto Scaling Group (ASG)

L'ASG est le service (PaaS) qui automatise le cycle de vie (création/destruction) des instances EC2 (IaaS) pour gérer la scalabilité (performance) et la haute disponibilité (pannes).

Configuration (Launch Template) : L'ASG utilise un "Launch Template" (ModÚle de Lancement) qui définit quoi lancer (AMI, Type d'Instance, SG, IAM Role, etc.).

Configuration (Limites)
  • MinSize (Taille Min) : (ex: 2) Le nombre d'instances minimum (garanti) que l'ASG doit maintenir (pour la HA).
  • DesiredCapacity (DĂ©sirĂ©) : (ex: 3) L'Ă©tat "normal" (l'ASG dĂ©marre 3 instances).
  • MaxSize (Taille Max) : (ex: 10) Le nombre maximum (plafond) que l'ASG ne dĂ©passera jamais (pour le contrĂŽle des coĂ»ts).
Fonctionnalités (Scaling & Health)
  • Scale-Out (Ajouter) : (Politique de Scaling) Si CPUUtilization > 70% (Alarme CloudWatch) -> Augmenter DesiredCapacity (ex: +2 instances).
  • Scale-In (Retirer) : (Politique de Scaling) Si CPUUtilization < 30% (Alarme CloudWatch) -> Diminuer DesiredCapacity (ex: -1 instance).
  • Health Checks (ELB) : (Auto-RĂ©paration / Auto-Heal) L'ASG utilise les "Health Checks" (Sonde de santĂ©) du Load Balancer (8.2). Si l'ALB marque une EC2 (i-123) comme Unhealthy (ex: App crashĂ©e) -> L'ASG termine (tue) i-123 et lance (automatiquement) une nouvelle instance (i-456) (pour revenir Ă  DesiredCapacity).
  • Cooldowns (Temps de Rechargement) : (ex: 300 sec) Une "pĂ©riode de grĂące" (temporisation) aprĂšs un Scale-Out. L'ASG attend 5 minutes (que la nouvelle instance dĂ©marre, prenne du trafic, et que le CPU (mĂ©trique) se stabilise) avant d'Ă©valuer (Ă  nouveau) si un autre Scale-Out est nĂ©cessaire. (EmpĂȘche les "flapping" (oscillations)).
  • Instance Refresh (Mise Ă  jour) : (Rolling Update) Permet de mettre Ă  jour la flotte (ex: nouvelle AMI, nouveau Type d'Instance). L'ASG remplace (automatiquement) les instances (une par une, ou 10% par 10%) (tue v1 -> lance v2 -> attend v2 "Healthy" -> tue v1 (next)...) tout en respectant MinSize (pas de downtime).
8.2. Elastic Load Balancing (ELB)

ELB est un service (PaaS) qui distribue (répartit) le trafic (entrant) sur plusieurs cibles (ex: Instances EC2 (ASG)). C'est le point d'entrée (DNS) de votre application.

TypeNiveau (Layer)ProtocoleUsage (Cas d'usage)
ALB (Application)Niveau 7 (HTTP)HTTP, HTTPS, WebSocket, gRPC(Recommandé) Applications Web, APIs REST, Microservices.
(Routage "Intelligent" (Content-based) : /api/* -> ASG-API, /images/* -> ASG-Images).
(Terminaison SSL (ACM), Intégration OIDC/Cognito, WAF).
NLB (Network)Niveau 4 (Transport)TCP, UDP, TLS(Ultra-Haute Performance) (Millions req/sec, latence ultra-faible).
(Adresse EIP Statique (Fixe) par AZ).
(Usage: Gaming (UDP), IoT, BDD (Haute Perf), trafic non-HTTP).
CLB (Classic)Niveau 4 / 7 (Hybride)TCP, SSL, HTTP(Ancien / Legacy) Ne plus utiliser. (Remplacé par ALB/NLB).
8.3. Déploiement Multi-AZ (Haute Disponibilité)

(La RĂšgle d'Or de la RĂ©silience) Une Availability Zone (AZ) est un Datacenter (physique) isolĂ©. Pour ĂȘtre "Haute DisponibilitĂ©" (HA) (rĂ©sister Ă  une panne d'un datacenter), une application doit ĂȘtre dĂ©ployĂ©e sur (au minimum) 2 AZs.

Importance du Placement Multi-AZ (ASG)

(Mauvaise Pratique) : Configurer l'ASG (8.1) pour utiliser uniquement subnet-private-a (qui est dans AZ-A).

(Panne) : L'AZ-A (Datacenter) tombe (panne électrique).

(Résultat) : L'ASG (Min=2) veut lancer 2 instances, mais le seul Subnet (subnet-private-a) qu'il connaßt est mort. (Downtime Total).


(Bonne Pratique) : Configurer l'ASG (8.1) pour utiliser deux Subnets : subnet-private-a (AZ-A) et subnet-private-b (AZ-B).

(Panne) : L'AZ-A tombe.

(Résultat) : L'ASG détecte que subnet-private-a est inaccessible. Il lance (automatiquement) les 2 instances (Min=2) dans le seul Subnet (sain) qu'il lui reste : subnet-private-b (AZ-B). (Application en ligne).

Policies ASG Cross-Zone
  • ASG (Équilibrage) : L'ASG tente (par dĂ©faut) de garder un nombre Ă©gal d'instances (ex: 3 en AZ-A, 3 en AZ-B). C'est la policy AZRebalance.
  • ALB (Cross-Zone Load Balancing) : (ActivĂ© par dĂ©faut / Payant) Le nƓud ALB (en AZ-A) peut (et va) envoyer du trafic vers les EC2 (en AZ-B), et vice-versa. (Garantit une rĂ©partition 50/50 du trafic, mĂȘme si l'ASG (ex: 1 en A, 3 en B) est dĂ©sĂ©quilibrĂ©).
8.4. Architecture Résiliente Typique (Multi-AZ 3-Tiers)

C'est la mise en pratique (complĂšte) de tous les concepts (VPC (9.4) + RDS (3.1) + EC2 (8.3)).

                    (Internet) --> [Route 53 (DNS)]
                    |
                    v
                    [ 🌐 Subnet Public (AZ-A) ]    [ 🌐 Subnet Public (AZ-B) ]
                    |                              |
                    +-- [ ⚖ ALB (Node 1) ]         +-- [ ⚖ ALB (Node 2) ]  <-- (Health Checks)
                        | (Cross-Zone)         |
                        +---------- (Trafic) --+
                        |                      |
                        v                      v
                        [ 🔒 Subnet PrivĂ© (AZ-A) ]     [ 🔒 Subnet PrivĂ© (AZ-B) ]
                        | (Route -> NAT-A)             | (Route -> NAT-B)
                    |                              |
                    +-- [ đŸ’» EC2 (ASG) ]           +-- [ đŸ’» EC2 (ASG) ]  <-- (Auto Scaling Group)
                    |                              |
                    +-- [ đŸ’» EC2 (ASG) ]           +-- [ đŸ’» EC2 (ASG) ]
                    | (Port 5432)          |
                    v                      v
                    [ 🔑 Subnet Data (AZ-A) ]      [ 🔑 Subnet Data (AZ-B) ]
                    |                              |
                    +-- [ 🐘 RDS Master ] <--(Sync)--> [ 🐘 RDS Standby ] <-- (RDS Multi-AZ)
                    
Checklist de Résilience (Panne AZ-A)
  1. (Panne AZ-A) (subnet-public-a, private-a, data-a) tombent.
  2. (ALB) Le NƓud 1 (ALB) (AZ-A) tombe. Route 53 (Health Check) arrĂȘte d'envoyer du trafic Ă  ce nƓud. 100% du trafic DNS va au NƓud 2 (ALB) (AZ-B). (Downtime: ZĂ©ro).
  3. (ASG) L'ALB (NƓud 2) dĂ©tecte (Health Check) que les EC2 (AZ-A) sont Unhealthy. L'ASG (8.1) termine les instances (mortes) (AZ-A) et lance (Scale-Out) de nouvelles instances (remplacement) dans le Subnet (sain) (AZ-B). (Downtime: ZĂ©ro, charge rĂ©partie sur AZ-B).
  4. (RDS) RDS (service) détecte (Health Check) que le Master (AZ-A) est mort. RDS (automatiquement) promeut le Standby (AZ-B) en nouveau Master. RDS (automatiquement) bascule le DNS (interne) (...rds.amazonaws.com) vers l'IP (privée) du nouveau Master (AZ-B). (Downtime: 30-60 sec, le temps du failover BDD).
  5. (NAT) Les EC2 (AZ-B) (saines) utilisent le NAT-B (sain) (via leur Route Table (AZ-B)) pour les apt update. (Downtime: Zéro).
7. Monitoring & Observabilité (EC2)
7.1. CloudWatch Metrics (L'Hyperviseur)

Par défaut, chaque instance EC2 envoie (gratuitement) des métriques (toutes les 5 minutes) à CloudWatch. C'est le monitoring de "base" au niveau de l'Hyperviseur (la "boßte" qui fait tourner l'EC2).

(Bonne Pratique) : Activer le "Detailed Monitoring" (payant) pour passer la granularité à 1 minute (essentiel pour réagir vite, ex: Auto Scaling).

Métriques Clés à Surveiller (et Alarmer)
MétriqueDescriptionUsage (Action)
CPUUtilizationPourcentage d'utilisation des vCPU (alloués).Action : Scaler (ASG) si > 80%. (Si t3.micro, surveiller aussi CPUCreditBalance).
NetworkIn / NetworkOutNombre de Bytes (Octets) entrants/sortants.Action : Détecter les pics (DDoS) ou les coûts (Data Transfer Out).
StatusCheckFailed_System(Binaire 0/1) Échec Systùme (AWS).
(Panne de l'hÎte physique, perte réseau AWS...).
Action : (Alarme) EC2-Recover. (AWS va Stop/Start l'instance sur un nouvel hĂŽte sain).
StatusCheckFailed_Instance(Binaire 0/1) Échec Instance (OS).
(Échec boot (Kernel panic), FS corrompu, config rĂ©seau OS cassĂ©e).
Action : (Alarme) EC2-Reboot. (Si échec, investiguer : (Syslog / Console Screenshot)).
DiskReadOps / DiskWriteOpsIOPS (Opérations/sec) sur les Volumes EBS attachés.Action : Détecter la saturation (Throttling) du disque (goulot d'étranglement).
7.2. CloudWatch Logs (L'Agent)

(PiÚge) : Contrairement à Lambda, une instance EC2 n'envoie AUCUN log (/var/log/syslog, nginx.log...) à CloudWatch par défaut.

Les logs (par défaut) "vivent" et "meurent" sur le disque EBS de l'instance.

La Solution : L'Agent CloudWatch (CloudWatch Agent)

Pour centraliser vos logs (applicatifs, OS) dans CloudWatch Logs (pour analyse, alerte, rétention), vous devez installer et configurer l'Agent CloudWatch (un logiciel) sur l'OS de l'EC2.

Pré-requis (IAM)

L'instance EC2 doit avoir un IAM Role attaché avec (au minimum) la Policy CloudWatchAgentServerPolicy (qui contient logs:PutLogEvents, logs:CreateLogStream...).

Exemple de Configuration (config.json de l'Agent)

Vous stockez ce JSON (ex: dans SSM Parameter Store) et vous dites Ă  l'Agent de l'utiliser :

                    {
                    "logs": {
                    "logs_collected": {
                    "files": {
                    "collect_list": [
                    {
                    "file_path": "/var/log/nginx/access.log",
                    "log_group_name": "/mon-app/prod/nginx-access",
                    "log_stream_name": "{instance_id}"
                    },
                    {
                    "file_path": "/var/log/auth.log",
                    "log_group_name": "/mon-app/prod/auth",
                    "log_stream_name": "{instance_id}"
                    }
                    ]
                    }
                    }
                    }
                    }
                

(Résultat) : L'Agent "tail" (surveille) ces fichiers (access.log, auth.log) en temps réel et "streame" (envoie) les nouvelles lignes vers les Log Groups spécifiés (/mon-app/prod/...).

7.3. CloudWatch Alarms (Actions)

Une Alarme "surveille" (watch) une Métrique (7.1). Si la Métrique dépasse un "Seuil" (Threshold) (ex: 80%) pendant une "Période" (ex: 15 min), l'Alarme passe à l'état ALARM et déclenche des Actions.

Actions (Que faire en cas d'Alarme ?)
ActionUsage (Cas d'usage)
Notification (SNS)(Alerte Humaine) L'Alarme (CPU > 95%) envoie un message Ă  un Topic SNS (Simple Notification Service).
(SNS) "Fan-out" (distribue) ensuite l'alerte (Email, Slack (via Lambda), PagerDuty...).
Auto Scaling (ASG)(Scaling) L'Alarme (CPU > 70%) déclenche une Policy d'Auto Scaling (ASG).
(ASG) Exécute l'action "Scale-Out" (Add 2 instances).
Action EC2 (Recover)(Auto-Réparation / Auto-Heal) L'Alarme (StatusCheckFailed_System = 1) déclenche l'action EC2-Recover.
(EC2) Exécute un Stop/Start (migre l'instance sur un HÎte (Hardware) sain).
Action EC2 (Reboot)(Auto-Réparation) L'Alarme (StatusCheckFailed_Instance = 1) déclenche l'action EC2-Reboot (soft reboot).
7.4. Monitoring Avancé (APM & Tracing)

CloudWatch (7.1) vous dit : "Le CPU est Ă  90%" (Le SymptĂŽme).

Le monitoring avancé (APM) vous dit : "Le CPU est à 90% parce que la fonction process_payment() (Java) est bloquée (Lock)". (La Cause Racine).

AWS X-Ray (Tracing Distribué)

X-Ray n'est pas un moniteur de "serveur", c'est un moniteur de "requĂȘte" (Trace). Il suit une requĂȘte (ex: 1 ID de Trace) Ă  travers plusieurs services (Microservices).

Usage : Indispensable pour les architectures distribuées (ex: API GW -> Lambda -> EC2-API -> RDS).

(Exemple de Trace X-Ray) :

                    Trace (550ms)
                    ├─ API Gateway (10ms)
                    └─ Lambda:FonctionA (540ms)
                    ├─ (Init) (120ms)
                    └─ (Invoke) (420ms)
                    ├─ (Appel HTTP: api.stripe.com) (300ms)
                    └─ (Appel Boto3: dynamodb:PutItem) (120ms)
                

(Analyse) : Le goulot d'étranglement (300ms) est l'API externe (Stripe), pas la BDD (DynamoDB).

(Installation) : Nécessite 1. L'Agent/Daemon X-Ray (sur l'EC2) et 2. Le SDK X-Ray (aws-xray-sdk) (dans votre code Python/Java/Node) pour "instrumenter" (patcher) les appels (boto3, requests).

Intégration Tiers (Datadog, New Relic, Grafana...)

Ce sont des plateformes d'Observabilité (SaaS ou OSS) qui combinent tout (Metrics, Logs, Traces (APM)).

  • Datadog / New Relic : (SaaS) Vous installez leur Agent (propriĂ©taire) sur l'EC2. L'Agent collecte (en haute rĂ©solution) les MĂ©triques (OS, App), les Logs (fichiers), et les Traces (APM) et les envoie Ă  leur plateforme (Cloud). (Ils utilisent aussi une IntĂ©gration IAM (Cross-Account) pour "puller" (tirer) les mĂ©triques CloudWatch (7.1) (ex: RDS, ALB)).
  • Grafana (OSS) : (Auto-hĂ©bergĂ©)
    • (Source 1) Vous installez Prometheus Node Exporter (sur l'EC2) et Prometheus (scrapeur) -> Grafana (Dashboard).
    • (Source 2) Vous donnez (via IAM) Ă  Grafana un accĂšs (API) Ă  CloudWatch, et Grafana "importe" les mĂ©triques CloudWatch (7.1) pour les afficher.
6. Stockage & Volumes EBS
6.1. Types de Volumes EBS (Disque Réseau)

EBS (Elastic Block Store) est un service de stockage en bloc (rĂ©seau) (similaire Ă  un SAN On-Premise) conçu pour les instances EC2. Il est persistent (les donnĂ©es survivent Ă  l'arrĂȘt (Stop) de l'EC2).

Comparatif des Types de Volumes (SSD vs HDD)
CatégorieNom APIUsage Principal (Workload)Performance
SSD (General Purpose)gp3(Recommandé / Défaut) Volumes de boot (OS), Apps Web, BDD (Dev/Prod Standard).Baseline Garantie : 3 000 IOPS & 125 MB/s (indépendamment de la taille). (Scalable jusqu'à 16 000 IOPS).
SSD (Provisioned IOPS)io2 Block ExpressBDD Critiques (OLTP) (ex: SAP HANA, Oracle, SQL Server). Workloads < 1ms latence.IOPS Garantis (Provisionnés). Ratio IOPS/GB élevé (jusqu'à 1000:1). Max 256 000 IOPS. 99.999% Durabilité. (TrÚs cher).
HDD (Throughput)st1Big Data (Séquentiel). Data Warehouse, Logs (ELK), Kafka.Optimisé Débit (MB/s) (Max 500 MB/s). Mauvais en IOPS (accÚs aléatoire).
HDD (Cold)sc1Stockage "Froid" (Rare). AccÚs trÚs peu fréquent.Coût / GB le plus bas. (Optimisé Débit (Max 250 MB/s)).
(Legacy)gp2(Ancien "General Purpose").IOPS liés à la taille (3 IOPS/GB). Utilise un systÚme de "Crédits Burst". (Toujours migrer gp2 -> gp3).
6.2. Choisir le Bon Type (Workload vs Coût)
Workload 1 : Volume de Boot (OS) / Serveur Web (Standard)
  • Choix : gp3.
  • Pourquoi : gp3 (par dĂ©faut) offre 3000 IOPS garantis, mĂȘme pour un petit disque (ex: 30GB).
  • (Anti-Pattern) : Utiliser gp2 (Legacy) (30GB * 3 IOPS/GB = 90 IOPS de base). Le systĂšme (apt update, logs...) serait extrĂȘmement lent (goulot d'Ă©tranglement disque).
Workload 2 : Base de Données (OLTP) (Postgres, MySQL)
  • Choix (Prod) : io2 Block Express (ou io1).
  • Pourquoi : Les BDD (OLTP) sont sensibles Ă  la latence et nĂ©cessitent des IOPS garantis (prĂ©visibles) (accĂšs alĂ©atoires). io2 garantit une latence sub-milliseconde et les IOPS que vous payez (ex: 20 000 IOPS).
  • Choix (Dev/Test) : gp3 (avec IOPS/Throughput augmentĂ©s manuellement si besoin).
Workload 3 : Data Warehouse / Log Processing (Kafka)
  • Choix : st1 (HDD).
  • Pourquoi : Ce workload est "SĂ©quentiel" (scan de gros fichiers). Il se moque des IOPS (accĂšs alĂ©atoire), il a besoin de DĂ©bit (MB/s). st1 offre un haut dĂ©bit (jusqu'Ă  500 MB/s) pour un coĂ»t (GB/mois) beaucoup plus bas que gp3.
Alternative (Latence ExtrĂȘme) : Instance Store
  • Choix : (Pas EBS) Instances i4i, c6gd...
  • Pourquoi : Si la latence (microsecondes) est reine et que la persistance n'est pas requise (ex: Caches (Redis), Buffers). Les disques NVMe (locaux) sont physiquement sur la machine (pas sur le rĂ©seau). (Attention : DonnĂ©es perdues si Stop/Terminate).
6.3. Snapshots (Backups EBS)

Un Snapshot (Instantané) est un backup (une "photographie") d'un volume EBS, stocké (à moindre coût) dans S3 (géré en arriÚre-plan par AWS).

Caractéristique Clé : Inbound (Incrémentiel)

Les snapshots sont incrémentiels (ils ne copient que les "blocs" (données) modifiés depuis le dernier snapshot).

  • Dimanche (Snap A) : Volume (100GB) (10GB utilisĂ©s) -> Snapshot A (Taille facturĂ©e : 10GB).
  • Lundi (Snap B) : (Vous modifiez 2GB de donnĂ©es) -> Snapshot B (Taille facturĂ©e : 2GB (le delta)).
  • Mardi (Snap C) : (Vous supprimez Snap A) -> (Magie) Snap B (2GB) "absorbe" (garde) les 8GB (de A) dont il dĂ©pend. (AWS ne supprime que les 2GB (de A) qui ont Ă©tĂ© modifiĂ©s par B).
Automatisation (AWS Data Lifecycle Manager - DLM)

C'est l'outil (PaaS) recommandé pour gérer les snapshots (plutÎt que des scripts cron/boto3).

Exemple de Policy (DLM) : "Backup-Prod-Daily"

  • Cible (Target) : (Ressources) (Tag) Backup=Prod-Daily.
  • FrĂ©quence (Schedule) : cron(0 2 * * ? *) (Tous les jours Ă  02:00 UTC).
  • RĂ©tention (Retention) : Garder 7 (Type: "Count") snapshots. (DLM supprime automatiquement le 8Ăšme (le plus ancien)).
Chiffrement & Cross-Region Backup (DR)
  • Chiffrement (Encryption) : Si le Volume EBS (source) est chiffrĂ© (KMS), le Snapshot (backup) est automatiquement chiffrĂ© (avec la mĂȘme clĂ©).
    (Lors d'une "Copie" (Copy) de Snapshot, vous pouvez changer la clé KMS (re-chiffrer) ou chiffrer (un snapshot non-chiffré)).
  • Cross-Region Backup (DR) : DLM (ou l'API) permet de Copier (Copy) (automatiquement) le snapshot (créé Ă  Paris eu-west-3) vers une autre RĂ©gion (ex: Francfort eu-central-1) (pour un Plan de Reprise d'ActivitĂ© (PRA) en cas de panne "RĂ©gion").
6.4. Montage & Redimensionnement (Resize) (Linux)
Flux (Montage d'un NOUVEAU Volume)
  1. (AWS) Create Volume (EBS) (ex: 100GB).
  2. (AWS) Attach Volume (Ă  l'EC2) (ex: Attribue le device /dev/sdf).
  3. (EC2 SSH) lsblk (Vérifie que nvme1n1 (Nitro) ou xvdf (Xen) (mappé à /dev/sdf) apparaßt).
  4. (EC2 SSH) sudo file -s /dev/nvme1n1 (Vérifie "data" (vide)).
  5. (EC2 SSH) sudo mkfs -t xfs /dev/nvme1n1 (Formater. XFS (recommandé) ou ext4).
  6. (EC2 SSH) sudo mkdir /data (Créer le point de montage).
  7. (EC2 SSH) sudo mount /dev/nvme1n1 /data (Monter).
  8. (EC2 SSH) sudo blkid (Trouver l'UUID du device (ex: uuid-123...)).
  9. (EC2 SSH) (Crucial) sudo vi /etc/fstab (Ajouter UUID=uuid-123... /data xfs defaults,nofail 0 0) (pour le montage au reboot).
Flux (Redimensionnement (Resize) Ă  Chaud)

Pour agrandir (ex: 100GB -> 150GB) un volume existant (monté) (/data).

  1. (AWS Console/CLI) Modify Volume (EBS) (Changer 100 -> 150). (Attend Optimizing -> Completed).
  2. (EC2 SSH) lsblk (Le Disque (nvme1n1) (150G) est maintenant plus grand que la Partition (nvme1n1p1) (100G)).
  3. (EC2 SSH) sudo growpart /dev/nvme1n1 1 (Agrandir la "Partition" 1 (pour /dev/nvme1n1p1)).
  4. (EC2 SSH) (Si XFS) sudo xfs_growfs /data
  5. (EC2 SSH) (Si EXT4) sudo resize2fs /dev/nvme1n1p1
  6. (EC2 SSH) df -h (Vérifie que /data affiche 150G).

(À Chaud) : Ce processus (sur les OS modernes + XFS/EXT4) se fait Ă  chaud (live), sans "unmount" (dĂ©monter) le volume (zĂ©ro downtime applicatif).

6.5. Performance Tuning (IOPS, Throughput, Burst)
IOPS vs Throughput (Débit)
  • IOPS (Input/Output Operations Per Second) : (Nb OpĂ©rations/sec). Important pour les petites lectures/Ă©critures alĂ©atoires (ex: BDD OLTP, Boot OS).
  • Throughput (DĂ©bit) : (Vitesse MB/s). Important pour les grosses lectures/Ă©critures sĂ©quentielles (ex: Data Warehouse (st1), Streaming vidĂ©o, Copie de gros fichiers).
Le PiĂšge (Goulot) : Instance vs EBS

(Le Goulot d'Étranglement) : La performance (IOPS/Throughput) que vous obtenez est le MINIMUM de (A) ce que l'Instance (EC2) peut gĂ©rer, et (B) ce que le Volume (EBS) peut fournir.

ScĂ©nario (Échec) :

  1. (EBS) Vous provisionnez un io2 (Volume) capable de 50 000 IOPS.
  2. (EC2) Vous l'attachez Ă  une t3.micro (Instance).
  3. ProblĂšme : L'instance t3.micro a une limite (Baseline) (goulot) de (ex:) 2 000 IOPS (max).
  4. Résultat : Vous payez pour 50 000 IOPS (EBS), mais vous n'obtenez (throttling) que 2 000 IOPS (limite EC2).

(Bonne Pratique) : Toujours utiliser des instances "EBS-Optimized" (ex: m6g.large, r6g.xlarge...) (activé par défaut) qui garantissent une bande passante (réseau) dédiée (ex: 10 Gbps / 10 000 IOPS) entre l'EC2 et le service EBS.

Crédits Burst (gp2 / Legacy)

Les volumes gp2 (Legacy) utilisaient un systÚme de "Crédits Burst" (similaire au CPU (3.1)).

  • IOPS de base (3 IOPS/GB) (ex: 100GB = 300 IOPS).
  • Accumule des crĂ©dits (idle).
  • "Burst" (DĂ©pense) Ă  3000 IOPS (pendant 30 min).
  • (CrĂ©dits Vides) -> Performance s'effondre Ă  300 IOPS (Baseline).

(Solution gp3) : gp3 n'a pas de crédits Burst. Il offre une performance garantie (Baseline) (Défaut 3000 IOPS) 24/7. (Toujours préférer gp3 à gp2).

5. Réseau (VPC) & Connectivité EC2
5.1. Placement dans un VPC

Une instance EC2 doit (obligatoirement) ĂȘtre lancĂ©e dans un Subnet (Sous-rĂ©seau) d'un VPC (Virtual Private Cloud).

Le VPC fournit l'isolation réseau (c'est votre datacenter virtuel privé).

Ce que l'EC2 obtient du VPC/Subnet
  • Interface RĂ©seau (ENI) : Une "carte rĂ©seau virtuelle" (Elastic Network Interface) est créée et attachĂ©e Ă  l'EC2.
  • IP PrivĂ©e : L'ENI reçoit une IP PrivĂ©e (ex: 10.0.1.50) issue de la plage CIDR du Subnet (ex: 10.0.1.0/24). C'est son identitĂ© principale sur le rĂ©seau.
  • DNS PrivĂ© : Un nom DNS interne (ex: ip-10-0-1-50.eu-west-3.compute.internal).
  • Routage : L'instance hĂ©rite (est soumise) aux rĂšgles de la Route Table attachĂ©e Ă  son Subnet.
  • Pare-feu (Subnet) : L'instance hĂ©rite (est soumise) aux rĂšgles de la Network ACL (NACL) attachĂ©e Ă  son Subnet.

(Configuration EC2) : Lors du lancement, vous attachez (aussi) un Security Group (SG) Ă  l'ENI de l'EC2. C'est le pare-feu de l'instance.

Conclusion : Le choix du Subnet (Public ou Privé) est la décision de sécurité la plus critique lors du lancement d'une EC2.

5.2. Subnets Publics vs Privés

La distinction (Public/PrivĂ©) ne dĂ©pend pas du Subnet lui-mĂȘme, mais de la Table de Routage (Route Table) (5.3) qui lui est attachĂ©e.

CritÚreSubnet PublicSubnet Privé
Définition (Routage)La Route Table a une route (0.0.0.0/0) vers un Internet Gateway (IGW).La Route Table n'a PAS de route vers un IGW.
AccĂšs Internet (Entrant)Oui (si l'EC2 a une IP Publique/EIP et un SG l'autorise).Non (Jamais. L'IGW ne sait pas comment l'atteindre).
AccÚs Internet (Sortant)Oui (si l'EC2 a une IP Publique/EIP).Non (par défaut). (Sauf si (cf 5.3) la Route Table a une route (0.0.0.0/0) vers un NAT Gateway).
Cas d'Usage (Ressources)‱ Load Balancers (ALB/NLB)
‱ Bastion Hosts (5.6)
‱ NAT Gateways (5.3)
‱ Serveurs Applicatifs (EC2) (Web, API)
‱ Bases de DonnĂ©es (RDS)
‱ Caches (ElastiCache)
‱ Fonctions Lambda (VPC)

(Bonne Pratique) : Toujours placer les EC2 (applicatives) dans un Subnet Privé, et mettre un Load Balancer (ALB) (dans un Subnet Public) devant.

5.3. Routage vers Internet (IGW vs NAT)
Option 1 : Internet Gateway (IGW) (Subnet Public)

Pour les ressources (ex: ALB) qui ont besoin d'un accĂšs bidirectionnel (Entrant + Sortant) avec Internet.

  • Route Table (Publique) : 0.0.0.0/0 -> igw-123...
  • Ressource : Doit avoir une IP Publique/EIP.
  • Flux : L'IGW gĂšre le NAT 1:1 (IP PrivĂ©e <-> IP Publique).
Option 2 : NAT Gateway (Subnet Privé)

Pour les ressources (ex: EC2-App) qui n'ont besoin que d'un accĂšs sortant (Egress-Only) (ex: apt-get update, pip install, appel API Stripe), tout en restant injoignables depuis Internet.

  • Composant (PaaS) : Le NAT Gateway (PaaS) est placĂ© dans le Subnet Public (il a besoin d'une EIP (5.4)).
  • Route Table (PrivĂ©e) : 0.0.0.0/0 -> nat-456... (L'ID du NAT GW).
  • Ressource : L'EC2 (PrivĂ©e) n'a pas d'IP Publique.
  • Flux (Sortant) : (EC2 10.0.1.50) -> (Route nat-456) -> (NAT GW) -> (NAT GW fait du SNAT : 10.0.1.50 devient EIP_DU_NAT) -> (IGW) -> (Internet).
  • Flux (Entrant) : (Internet) -> (NAT GW) -> (BloquĂ©). Le NAT GW (Stateful) n'accepte que les rĂ©ponses (Retour) aux connexions qu'il a initiĂ©es.

(Coût) : Les NAT Gateways sont facturés $/Heure + $/GB (Data Processed). (Peut coûter trÚs cher).

5.4. Elastic IP (EIP)

Une Adresse IP Élastique (EIP) est une adresse IPv4 publique statique (fixe) que vous "allouez" (rĂ©servez) dans votre compte AWS.

EIP (Statique) vs IP Publique (ÉphĂ©mĂšre)
  • IP Publique (Auto-assign) : (ÉphĂ©mĂšre) AssignĂ©e au dĂ©marrage (Start) de l'EC2. Perdue (libĂ©rĂ©e) Ă  l'arrĂȘt (Stop). (ProblĂšme pour les DNS).
  • Elastic IP (Statique) : (Fixe) Vous l'associez (manuellement) Ă  l'EC2. Elle survit Ă  un Stop/Start. (L'IP ne change pas).
Cas d'Usage
  • (Obligatoire) NAT Gateways (5.3) : Un NAT GW requiert 1 EIP pour son IP sortante (fixe).
  • (RecommandĂ©) Bastion Hosts (5.6) : Pour avoir une IP (fixe) Ă  (Whitelist) dans vos SGs et Ă  mettre dans votre client SSH.
  • (Legacy) Serveurs Uniques : (Anti-Pattern) Un serveur Web (unique) qui ne peut pas ĂȘtre derriĂšre un Load Balancer et nĂ©cessite un Record DNS A.

(PiÚge de Coût FinOps) : Une EIP est GRATUITE si elle est attachée à une instance EC2 Running. Une EIP non-attachée (ou attachée à une instance Stopped) est facturée (cher) (pour éviter la pénurie d'IPv4).

5.5. DNS Interne (AmazonProvidedDNS & Route 53)
1. AWS DNS (Le ".2 Magique")

Par défaut (via DHCP), chaque ressource (EC2/Lambda) dans votre VPC est configurée pour utiliser le DNS Resolver d'AWS.

Il est toujours situé à l'adresse [Base_CIDR] + 2. (Ex: Si VPC = 10.0.0.0/16, le DNS est 10.0.0.2).

Ce DNS est "Split-Horizon" (intelligent) :

  • (Public) Il rĂ©sout les noms publics (ex: google.com) (si l'EC2 a un accĂšs Internet (5.3)).
  • (PrivĂ©) Il rĂ©sout les noms DNS privĂ©s (ex: ip-10-0-1-50.eu-west-3.compute.internal -> 10.0.1.50).
2. Route 53 (Private Hosted Zones)

C'est la Bonne Pratique (vs IP hardcodées) pour le "Service Discovery" (Découverte de services).

Scénario : L'EC2-App (10.0.1.50) doit appeler l'EC2-API (10.0.1.60).

  • (Mauvais) : config.py -> API_HOST = "10.0.1.60". (Si l'EC2-API est remplacĂ©e (IP .61), le code est cassĂ©).
  • (Bon) :
    1. (Route 53) Créer une "Private Hosted Zone" (Zone DNS Privée) : my-app.internal.
    2. (Route 53) Attacher cette Zone (my-app.internal) au VPC.
    3. (Route 53) Créer un Record (A) : api.my-app.internal -> 10.0.1.60.
    4. (Code) config.py -> API_HOST = "api.my-app.internal".

(Résultat) : L'EC2-App (utilisant le DNS .2) résout api.my-app.internal en 10.0.1.60. Si l'API change d'IP (.61), il suffit de mettre à jour le DNS (pas le code).

5.6. Bastion Hosts (Serveurs de Rebond / Jump Servers)

C'est l'architecture "classique" (Legacy) pour accéder (SSH/RDP) à des instances (EC2, RDS-Tunnel) situées dans un Subnet Privé (5.2).

Un "Bastion" est une (petite) instance EC2 (Linux/Windows) qui "vit" dans le Subnet Public (5.2) et qui est durcie (Harden).

Architecture de Sécurité (Flux SSH)
                    (Admin PC) (Mon IP: 80.1.2.3)
                    |
                    (Port 22) (Autorisé par 'sg-bastion')
                    |
                    v
                    [ 🌐 Subnet Public ]
                    |
                    +-- [ đŸ’» EC2-Bastion (EIP: 54.1.2.3) ] (SG: 'sg-bastion')
                    |
                    (Port 22) (Autorisé par 'sg-app')
                    |
                    v
                    [ 🔒 Subnet PrivĂ© ]
                    |
                    +-- [ đŸ’» EC2-App (IP: 10.0.1.50) ] (SG: 'sg-app')
                
Configuration des Security Groups (SG)
  • sg-bastion (Sur le Bastion) :
    • Inbound : Allow TCP/22 (Source: 80.1.2.3/32 (Mon IP Bureau)).
  • sg-app (Sur l'EC2 PrivĂ©e) :
    • Inbound : Allow TCP/22 (Source: sg-bastion (L'ID du SG du Bastion)).

(InconvĂ©nients) : NĂ©cessite d'ouvrir le Port 22 (mĂȘme si limitĂ©), nĂ©cessite de gĂ©rer/roter des clĂ©s SSH (.pem), nĂ©cessite de patcher (apt update) l'OS du Bastion.

(Alternative Moderne) : SSM Session Manager (5.7).

5.7. Alternative : SSM Session Manager (Mode Moderne)

(La Meilleure Pratique 2024) SSM Session Manager est un service AWS (partie de Systems Manager) qui vous donne un accĂšs Shell (bash) ou PowerShell (sĂ©curisĂ©, auditĂ©) Ă  vos instances (mĂȘme privĂ©es)... SANS Bastion, SANS ClĂ© SSH (.pem), et SANS ouvrir le Port 22 (SSH).

Pré-requis (3 Conditions)
  1. Agent SSM : L'EC2 (Privée) doit avoir l'Agent SSM (installé par défaut sur Amazon Linux, Ubuntu...).
  2. IAM Role : L'EC2 (Privée) doit avoir un IAM Role (Instance Profile) attaché, avec la Policy (AWS) AmazonSSMManagedInstanceCore.
  3. Routage (Sortant) : L'EC2 (Privée) doit pouvoir contacter (en Sortie, HTTPS/443) l'API (Publique) de SSM.
    • (Option A) via un NAT Gateway (5.3).
    • (Option B) (Plus sĂ©curisĂ©/moins cher) via des VPC Endpoints (Interface) (pour ssm, ssmmessages, ec2messages).
Architecture de Sécurité (Flux SSM)
                    (Admin PC) (Avec Perms IAM 'ssm:StartSession')
                    |
                    (API Call (443))
                    |
                    v
                    [ ☁ AWS SSM API (Service) ]
                    |
                    (Initie le "Tunnel" (WebSocket))
                    |
                    v
                    [ 🔒 Subnet PrivĂ© ]
                    |
                    +-- [ đŸ’» EC2-App (IP: 10.0.1.50) ] (SG Inbound: VIDE (Port 22 FermĂ©))
                    |
                    (L'Agent SSM (local) a une connexion (Outbound 443) vers l'API SSM)
                

(Avantages) : Zéro exposition réseau (Pas de Port 22, pas de Bastion). AccÚs via IAM (pas de clés .pem). Audit complet (toutes les commandes (ls, rm) sont logguées sur S3/CloudWatch).

4. Sécurité & Gouvernance EC2
4.1. Security Groups (SG) - Le Pare-feu "Stateful"

Le Security Group (SG) est le pare-feu principal (le plus important) qui opĂšre au niveau de l'Instance (ENI) (ex: EC2, RDS).

Caractéristiques Clés (Stateful)
  • Niveau : Instance (ENI). (La "porte" du bureau).
  • RĂšgles : Allow (Autoriser) uniquement.
  • DĂ©faut : Deny All (Tout est bloquĂ©, sauf ce qui est explicitement autorisĂ© (Whitelist)).
  • État : STATEFUL (Contextuel).
    • (La Force) : Si vous autorisez (Inbound) le Port 80 (HTTP Entrant), le trafic de rĂ©ponse (Outbound) (sur un port Ă©phĂ©mĂšre 49152+) est automatiquement autorisĂ© (le SG "se souvient" de la connexion).
    • (ConsĂ©quence) : Vous n'avez (presque) jamais besoin de modifier les rĂšgles Outbound (Sortantes) (qui sont Allow All par dĂ©faut).
Bonnes Pratiques (Least Privilege)

(Mauvaise Pratique) : Autoriser (Inbound) Port 22 (SSH) (Source: 0.0.0.0/0). (Ouvre l'administration (SSH) Ă  toute la planĂšte -> Attaques Brute Force garanties).

(Bonne Pratique) :

  • sg-alb (Load Balancer) : Allow Port 443 (HTTPS) (Source: 0.0.0.0/0).
  • sg-app (EC2 App) : Allow Port 8080 (App) (Source: sg-alb (ID du SG)).
  • sg-admin (Bastion) : Allow Port 22 (SSH) (Source: MON_IP_BUREAU/32).

(RĂšgle d'Or) : Toujours utiliser des ID de SG (sg-xxxx) comme Source (plutĂŽt que des IPs/CIDR) pour lier les services (ex: App -> DB).

4.2. Network ACL (NACL) - Le Pare-feu "Stateless"

Le NACL est une couche de défense optionnelle (facultative) qui opÚre au niveau du Subnet (le "bùtiment" entier).

Caractéristiques Clés (Stateless)
  • Niveau : Subnet. (S'applique Ă  toutes les EC2 dans ce Subnet).
  • RĂšgles : Allow ET Deny. (ÉvaluĂ©es par N° (100, 200...)).
  • État : STATELESS (AmnĂ©sique).
    • (Le PiĂšge) : Si vous autorisez (Inbound) le Port 80, vous devez aussi autoriser (Outbound) les ports "Ă©phĂ©mĂšres" (1024-65535) (le trafic de rĂ©ponse).
Meilleure Pratique (Utilisation)

(Bonne Pratique) : Laissez la NACL par Défaut (celle créée avec le VPC), qui est Allow All (In/Out). Ne la touchez pas.

Gérez 100% de votre sécurité réseau "applicative" (Port 80, 5432, 22) via les Security Groups (SG) (4.1) (qui sont Stateful et plus faciles à gérer).

(Seul Cas d'Usage) : N'utilisez une NACL que pour "Blacklister" (Deny) une IP (ou plage d'IP) malveillante (ex: attaque DDoS, scan) au niveau du Subnet (avant mĂȘme qu'elle n'atteigne vos SGs).

4.3. IAM Roles pour EC2 (L'Identité de la Machine)

(NE JAMAIS FAIRE) : Ne jamais copier des clés (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) (d'un "User IAM") dans le code (config.py) ou les variables d'environnement (.env) de l'instance EC2.

(Risque) : Si l'instance est compromise (via faille Web), l'attaquant vole ces clés (longue durée) et peut (potentiellement) détruire tout votre compte AWS.

La Bonne Pratique : IAM Role (Instance Profile)

C'est l'identité (temporaire) que l'EC2 "assume" (endosse). C'est la seule façon sécurisée de donner des permissions AWS à votre code (Boto3, SDK...).

Flux (Automatique)
  1. (Admin) Vous créez un IAM Role (ex: Role-App-Web).
    • (Trust Policy) : Fait confiance Ă  ec2.amazonaws.com.
    • (Permission Policy) : Allow s3:GetObject (sur Bucket-Assets), Allow secretsmanager:GetSecretValue (sur Secret-RDS).
  2. (Admin) Vous attachez ce RĂŽle (via un "Instance Profile") Ă  l'instance EC2.
  3. (Code Python/Boto3) (sur l'EC2) Vous faites : client = boto3.client('s3') (sans clés !).
  4. (SDK) (Automatique) Le SDK appelle l'IMDS (2.3) (169.254.169.254).
  5. (AWS STS) (Automatique) AWS (via IMDS) génÚre des clés temporaires (1h) (basées sur le Role-App-Web).
  6. (SDK) (Automatique) Le SDK utilise ces clés (temporaires) pour appeler s3:GetObject.

(Résultat) : Zéro clé secrÚte sur la machine. Sécurité maximale (Least Privilege, Clés temporaires).

4.4. AWS Systems Manager (SSM) - Gestion (Sans SSH)

SSM est la "console de gestion" (PaaS) de votre flotte EC2 (et On-Premise).

(Pré-requis) : 1. L'instance EC2 doit avoir l'Agent SSM (installé par défaut sur Amazon Linux, Ubuntu...). 2. L'instance doit avoir un IAM Role (4.3) avec la Policy AmazonSSMManagedInstanceCore.

SSM Session Manager (Le "Tueur" de SSH)

(Bonne Pratique n°1) : C'est un accÚs Shell (bash) ou PowerShell (sécurisé, audité) à votre instance... SANS ouvrir le Port 22 (SSH) ou 3389 (RDP).

  • RĂ©seau : Le Security Group (4.1) (Inbound) peut ĂȘtre 100% fermĂ© (Vide).
  • Flux : L'Agent SSM (sur EC2) initie une connexion Sortante (Outbound) (Port 443) vers l'API (Publique) de SSM.
  • AccĂšs (Admin) : L'Admin (via Console AWS/CLI) demande Ă  l'API SSM : "Connecte-moi (via ce tunnel) Ă  l'instance i-123".
  • SĂ©curitĂ© (IAM) : L'accĂšs est contrĂŽlĂ© par IAM (ssm:StartSession), pas par des clĂ©s SSH (.pem).
  • Audit : Toutes les commandes (ls, rm) peuvent ĂȘtre logguĂ©es (CloudWatch Logs / S3).
Autres Fonctionnalités SSM
  • Run Command : ExĂ©cuter un script (ex: Restart-Nginx) (asynchrone) sur 1000 serveurs en mĂȘme temps.
  • Patch Manager : (AutomatisĂ©) Scanne (Compliance) et dĂ©ploie (Patche) les mises Ă  jour OS (ex: "Appliquer patchs Critiques (CVE) tous les Dimanches Ă  2h").
  • Inventory : Collecte (automatiquement) l'inventaire (Applications installĂ©es, Services, Versions...) de toute la flotte.
4.5. Durcissement OS (Hardening)

Le "Hardening" (Durcissement) est l'action de sĂ©curiser l'OS (SystĂšme d'Exploitation) lui-mĂȘme, en partant du principe que le rĂ©seau (SG/NACL) pourrait Ă©chouer (DĂ©fense en profondeur (6.1)).

CIS Benchmarks

Le CIS (Center for Internet Security) fournit des "Benchmarks" (guides/checklists) (ex: "CIS Benchmark for Ubuntu 22.04 LTS") qui sont le standard de l'industrie.

(Bonne Pratique) : Utiliser (ou acheter sur le Marketplace (2.2)) des "CIS Hardened AMIs" (AMIs pré-durcies).

Exemples d'Actions de Hardening
  • DĂ©sactivation services inutiles :
    • systemctl disable avahi-daemon (mDNS)
    • systemctl disable cups (Imprimantes)
    • systemctl disable postfix (Serveur Mail)
  • Configuration sshd_config (si SSH utilisĂ©) :
    • PermitRootLogin no (Jamais de login root)
    • PasswordAuthentication no (ClĂ©s SSH (.pem) uniquement, pas de mot de passe)
  • Configuration SystĂšme de Fichiers (/etc/fstab) :
    • Monter /tmp (temporaire) et /var/tmp avec les options noexec, nosuid, nodev (empĂȘche l'exĂ©cution de binaires (malware) depuis /tmp).
  • Audit Logs (OS) :
    • Configurer auditd (Linux) ou Windows Event Forwarding.
    • Installer l'Agent CloudWatch pour "streamer" (envoyer) les logs (ex: /var/log/auth.log, /var/log/secure) vers CloudWatch Logs (pour alerte/rĂ©tention).
3. Performances EC2 (CPU, RAM, Réseau, Stockage)
3.1. CPU (Processeurs)

Le vCPU (Virtual CPU) est l'unitĂ© de calcul. Sur la plupart des instances, 1 vCPU = 1 Thread (Hyperthreading). (1 CƓur physique = 2 vCPU).

Choix du Processeur (Famille)
ProcesseurSuffixe (Instance)ArchitectureAvantages
Intel Xeonm7i, c7i (i = Intel)x86_64Standard, performances AVX-512 (calcul intensif).
AMD EPYCm6a, c6a (a = AMD)x86_64TrĂšs bonnes performances, ~10% moins cher que Intel.
AWS Gravitonm6g, c7g (g = Graviton)ARM (arm64)Meilleur prix/perf (jusqu'à -40%). Nécessite une AMI (OS) compatible ARM.
Mode "Burst" (Familles T2, T3, T4g)

Les instances "T" (Burstable) sont conçues pour les workloads "imprévisibles" (ex: site web faible trafic, serveur de dev).

  • CrĂ©dits CPU : L'instance accumule des "CrĂ©dits CPU" quand elle est idle (inactive).
  • Baseline : Elle a une performance de base garantie (ex: 20% d'1 vCPU).
  • Burst (Rafale) : Quand un pic de trafic arrive, l'instance "dĂ©pense" ses crĂ©dits pour "burster" Ă  100% CPU pendant une courte pĂ©riode.
  • Épuisement (Throttling) : Si les crĂ©dits tombent Ă  zĂ©ro, l'instance est bridĂ©e (throttled) Ă  sa performance de "baseline" (ex: 20% CPU), rendant l'application trĂšs lente.

(Mode "Unlimited" - Défaut T3/T4g) : Si les crédits sont à zéro, l'instance (T3) continue de burster, mais AWS vous facture (cher) le surplus de CPU (CPUSurplusCreditsCharged).

3.2. Mémoire RAM

La RAM (Mémoire) est fixe (liée au Type d'Instance (2.1)). Elle n'est pas "burstable" (contrairement au CPU (3.1) ou au Disque (gp2)).

Workloads "Memory-Bound" (Gourmands en RAM)

Si votre application est "memory-bound" (limitée par la RAM), utilisez les familles optimisées (Ratio CPU:RAM élevé 1:8+) :

  • Famille R : (Standard) (ex: r6g.large) - (Bases de donnĂ©es RDS, Caches In-Memory).
  • Famille X : (Ex: x2iedn.xlarge) - (TrĂšs haute RAM, pour SAP HANA, Caches In-Memory massifs).
  • Famille Z : (Haute frĂ©quence CPU + Haute RAM).
Impact sur le Swap (Linux)

Le PiÚge : Par défaut, les AMIs (Amazon Linux, Ubuntu...) ne provisionnent PAS de partition SWAP (espace d'échange sur disque).

Conséquence (Manque de RAM) :

  1. (App) L'application (Java, Python) consomme toute la RAM (FreeableMemory (CloudWatch) = 0).
  2. (OS) Le Kernel Linux (n'ayant pas de SWAP) panique.
  3. (OS) L'OOM (Out-of-Memory) Killer se déclenche.
  4. (OS) L'OOM Killer "tue" (SIGKILL) un processus (généralement le plus gourmand) pour sauver le systÚme (ex: tue le process postgres ou nginx).

Solution : 1. (Mieux) Monitorer FreeableMemory (CloudWatch) et scaler (Upgrade) l'instance (ex: r6g.large -> r6g.xlarge). 2. (Dépannage) Créer (manuellement) un fichier SWAP (dd if=/dev/zero ..., mkswap) sur le disque EBS (mais ce sera lent).

3.3. Réseau (Bande Passante & Placement)
Bande Passante & Enhanced Networking (ENA)

La bande passante (Débit) est liée à la taille (type) de l'instance.

  • t3.micro : "Jusqu'Ă  5 Gbps" (Burstable).
  • m6g.large : "Jusqu'Ă  10 Gbps".
  • m6g.16xlarge : "40 Gbps".

Enhanced Networking (ENA) : C'est le "driver" (interface réseau virtuelle) moderne (basé sur SR-IOV) qui permet d'atteindre ces hautes performances (>10 Gbps). (Activé par défaut sur toutes les instances modernes (ex: M5, M6, C5, C6...)).

Placement Groups (Groupes de Placement)

Vous (Client) pouvez influencer le placement physique (Rack, Datacenter) de vos instances EC2 (pour optimiser la performance réseau ou la résilience).

Type (Stratégie)Description (Placement Physique)Cas d'Usage (Objectif)
Cluster (Colocation)Place toutes les instances EC2 (du groupe) dans le mĂȘme Rack (physique), dans 1 seule AZ.Performance RĂ©seau Maximale (Latence Minimale).
(Big Data (Hadoop), HPC, calcul MPI).
(Risque : Si le Rack tombe (panne), tout tombe).
Spread (Anti-Colocation)Place chaque instance (max 7/AZ) sur un Rack (Hardware) distinct.Disponibilité Maximale (HA).
(Minimise les pannes "corrélées" (matérielles)).
(Ex: NƓuds Master (Zookeeper, Kafka), BDD (DC), ASG (Min=3)).
Partition (Hybride)Place les instances dans des "Partitions" (groupes logiques), oĂč chaque Partition est sur un Rack (ou groupe de racks) distinct.HA pour Big Data (HDFS, Cassandra).
(Ex: RĂ©partir 100 nƓuds sur 7 Partitions (racks) pour garantir la rĂ©plication (HDFS) tout en gardant une bonne localitĂ©).
3.4. Stockage (EBS vs Instance Store)
Instance Store (Stockage Local/ÉphĂ©mĂšre)

C'est un disque (SSD NVMe) physiquement connecté (PCIe) au serveur (Host) AWS. (Ex: instances i4i, d3, c6gd).

  • Avantage (Perf) : ExtrĂȘmement rapide (IOPS (Millions) et latence (microsecondes) imbattables).
  • InconvĂ©nient (Non-Persistent) : ÉphĂ©mĂšre (Temporaire). Les donnĂ©es sont PERDUES si l'instance est StoppĂ©e, TerminĂ©e, ou en cas de panne matĂ©rielle (Host).
  • Usage : Caches (Redis/Memcached), Buffers (Kafka), Scratch space (calcul), BDD (NoSQL) qui gĂšrent la rĂ©plication (ex: Cassandra).
EBS (Elastic Block Store) (Stockage Réseau/Persistent)

C'est un volume réseau (SAN) (disque dur "virtuel") qui est attaché (via le réseau) à l'instance EC2. (99% des instances (t3, m5, r6) bootent sur EBS).

  • Avantage (Persistent) : Les donnĂ©es survivent Ă  un Stop/Start ou Ă  une panne (le volume peut ĂȘtre dĂ©tachĂ©/rĂ©-attachĂ© Ă  une autre EC2).
  • InconvĂ©nient (Perf) : Plus lent (latence millisecondes) que l'Instance Store (latence microsecondes).
Types d'EBS (SSD vs HDD)
  • gp3 (SSD - General Purpose) : (RecommandĂ©) Le meilleur rapport prix/perf. (Base: 3000 IOPS / 125 MB/s). (IOPS/Throughput scalables indĂ©pendamment de la taille (GB)).
  • gp2 (SSD - Legacy) : (Ancien) IOPS liĂ©s Ă  la taille (3 IOPS/GB). (Toujours migrer vers gp3).
  • io2 Block Express (SSD - Max IOPS) : (Pour BDD (SAP/Oracle)) Si vous avez besoin de > 16,000 IOPS garantis (jusqu'Ă  256,000 IOPS). (TrĂšs cher).
  • st1 (HDD - Throughput) : (Disque dur "ScS") OptimisĂ© DĂ©bit (MB/s) (gros blocs sĂ©quentiels). Pas IOPS (petits blocs alĂ©atoires). (Usage: Data Warehouse, Logs (ELK)).
Fonctionnalités (EBS)
  • EBS Multi-Attach : (Pour io1/io2) Permet d'attacher 1 seul volume EBS Ă  plusieurs (max 16) EC2s (dans la mĂȘme AZ). (NĂ©cessite un "clustering file system" (GFS2, OCFS2) pour gĂ©rer le locking).
  • Encryption (Chiffrement) : (Bonne Pratique) Cocher "Encrypt this volume" (At-Rest) (via KMS). (Transparent, impact performance nĂ©gligeable).
2. Concepts Fondamentaux (Instance, AMI, Metadata, Lifecycle)
2.1. Types d’Instances (Nomenclature & Familles)

Le "Type d'Instance" définit le "Hardware" virtuel (vCPU, RAM, Réseau, Stockage) de votre VM EC2.

Nomenclature (Exemple : m6g.large)
                    m   6   g   .   large
                    |   |   |       |
                    |   |   |       +---- Taille (vCPU/RAM) (nano, micro, small, large, xlarge, 2xlarge...)
                    |   |   +------------ Attribut (g=Graviton (ARM), i=Intel, a=AMD, d=Disque local, n=Réseau)
                    |   +---------------- Génération (6 = 6Úme gen. Plus haut = Mieux/Plus récent)
                    +-------------------- Famille (M = General, C = Compute, R = RAM...)
                
Familles d'Instances (Cas d'usage)
Famille (Lettre)TypeUsage Principal (Workload)Exemples
T (Burstable)General PurposeSites faible trafic, Dev/Test. (Utilise des "Crédits CPU").t2.micro, t3.medium
M (General)General PurposeLe "standard". Équilibre CPU/RAM (1:4). Serveurs Web (Prod), APIs.m6g.large, m7i.xlarge
C (Compute)Compute OptimizedCPU élevé, RAM faible (1:2). Batch, Transcodage, Gaming, HPC.c6a.2xlarge, c7i.large
R, X, Z (Memory)Memory OptimizedRAM élevée, CPU faible (1:8+). Bases de données (RDS), Caches (Redis), SAP HANA.r6g.large, x2iedn.xlarge
I, D, H (Storage)Storage OptimizedStockage NVMe (Instance Store) local trĂšs rapide (IOPS). Data Warehousing, Kafka, Elasticsearch.i4i.large, d3.xlarge
P, G, Inf, TrnAccelerated (GPU)Machine Learning (Training (P/Trn)), Inférence (Inf), Graphisme (G). (GPU Nvidia).p4d.24xlarge, g5.xlarge
2.2. AMI (Amazon Machine Image)

L'AMI est le template (modÚle) utilisé pour démarrer (boot) une instance EC2. C'est l'équivalent d'un .iso ou d'une image VMWare.

Une AMI contient (principalement) :

  • Un Snapshot EBS (l'image du disque dur / OS).
  • Des mĂ©tadonnĂ©es (ex: Architecture (x86/ARM), Kernel, Mappage des disques).
Sources des AMIs
SourceDescriptionOS Supportés (Exemples)
AMI Publiques (AWS)(Quick Start) AMIs officielles, maintenues et patchées par AWS. (Recommandé).Amazon Linux 2/2023, Ubuntu, RHEL, SUSE, Windows Server 2022.
AMI "My AMIs" (Privées)AMIs que vous avez créées (cf. ci-dessous). Visibles uniquement par votre compte.(Vos images custom).
AWS MarketplaceAMIs (payantes ou gratuites) vendues par des tiers (Vendors). (Souvent OS + Logiciel pré-installé).Palo Alto (Firewall), WordPress (Bitnami), SAP, Oracle...
Community AMIsAMIs (non-vérifiées) partagées par d'autres utilisateurs AWS.(Risque de Sécurité) N'utilisez jamais ces AMIs pour la production.
CrĂ©ation d’une AMI PersonnalisĂ©e ("Golden Image")

C'est une Bonne Pratique (vs User Data). Au lieu de démarrer (lentement) une instance "nue" (Ubuntu) et d'installer (apt install nginx...) à chaque fois, vous "pré-installez" (Bake) l'AMI.

  1. (Jour 1) Lancer 1 EC2 (Ubuntu).
  2. (Jour 1) S'y connecter (SSH) : apt update, apt install nginx, apt install cloudwatch-agent...
  3. (Jour 1) (Console EC2) Clic Droit -> "Create Image (AMI)". (Nom : mon-app-web-v1.0).
  4. (Jour 2) (ASG) L'Auto Scaling Group (ASG) démarre 10 EC2 depuis mon-app-web-v1.0.
  5. Résultat : Boot en 30 secondes (Nginx est déjà installé).
2.3. Instance Metadata (IMDS)

Le Service de MĂ©tadonnĂ©es (IMDS) est une "API" (REST) magique, accessible uniquement depuis l'EC2 elle-mĂȘme, Ă  une adresse IP fixe (Link-Local) :

http://169.254.169.254
RĂŽle (Qu'est-ce qu'on y trouve ?)

Il permet Ă  l'instance (EC2) de "savoir qui elle est" (introspection), sans connaĂźtre son contexte (via curl ou Boto3) :

  • .../latest/meta-data/instance-id (Retourne: i-12345...)
  • .../latest/meta-data/local-ipv4 (Retourne: 10.0.1.50)
  • .../latest/meta-data/public-ipv4 (Retourne: 54.1.2.3)
  • .../latest/meta-data/placement/availability-zone (Retourne: eu-west-3a)
  • .../latest/meta-data/iam/info (Info sur le RĂŽle IAM attachĂ©)
IMDSv1 vs IMDSv2 (Sécurité Cruciale)

IMDSv1 (Legacy) : Un simple curl http://169.../iam/security-credentials/ROLE (requĂȘte GET) suffisait.
(Faille) : Si un site (sur l'EC2) avait une faille SSRF (Server-Side Request Forgery), un attaquant (externe) pouvait "tromper" le serveur pour qu'il curl cette URL (interne) et vole les credentials (clés secrÚtes) du RÎle IAM.

IMDSv2 (Moderne - Défaut) : Oblige l'utilisation d'un Token (Session). (ProtÚge contre SSRF).

                    # (Étape 1) Demander un Token (Session) (via PUT)
                    $ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`

                    # (Étape 2) Utiliser ce Token (Header) pour accĂ©der aux mĂ©tadonnĂ©es
                    $ curl -H "X-aws-ec2-metadata-token: $TOKEN" "http://169.254.169.254/latest/meta-data/instance-id"
                

(Bonne Pratique) : Toujours forcer IMDSv2 (Option "HttpTokens: required") lors du lancement d'EC2.

2.4. Instance Lifecycle (Cycle de Vie)

Une instance EC2 passe par différents états (états facturés en gras).

Pending -> Running (En cours) -> Stopping -> Stopped (ArrĂȘtĂ©) -> Pending -> Running ... (ou) ... -> Shutting-down -> Terminated (TerminĂ©)

Différence (Cruciale) : Stop vs Terminate

C'est la diffĂ©rence entre "Éteindre" (Stop) et "Jeter Ă  la poubelle" (Terminate).

ActionÉtat "Stop" (ArrĂȘter)État "Terminate" (Terminer)
Pré-requis (Disque)EBS-backed (Disque Réseau) Uniquement.EBS-backed ou Instance Store (Disque Local).
État FinalStoppedTerminated
RedĂ©marrage (Start)Oui. (Peut ĂȘtre redĂ©marrĂ©e (Start)).NON. (Destruction finale. IrrĂ©versible).
Stockage (Root EBS)Le Volume EBS (Disque OS) persiste.Le Volume EBS (Root) est supprimé (Détruit) (si DeleteOnTermination=True).
IP Publique (ÉphĂ©mĂšre)Perdue. (Une nouvelle IP est assignĂ©e au Start).Perdue (LibĂ©rĂ©e).
Elastic IP (EIP)Reste attachée (mais facturée (PiÚge)).Détachée.
Facturation (Calcul)Stoppée. (Vous ne payez pas le CPU/RAM).Stoppée.
Facturation (Stockage)Continue. (Vous payez (toujours) le Volume EBS).Stoppée (car disque détruit).
Reboot (Redémarrer)

Action Reboot = RedĂ©marrage de l'OS (sudo reboot). L'instance ne s'arrĂȘte pas (Running -> Running). Les IPs (Publique/EIP) et le disque (EBS) persistent.

1. Introduction Générale à AWS EC2
1.1. Qu’est-ce qu’Amazon EC2 ?

EC2 (Elastic Compute Cloud) est le service de calcul (compute) fondamental d'AWS. C'est le pilier central de l'IaaS (Infrastructure as a Service).

Son rÎle est de fournir des VMs (Machines Virtuelles) à la demande, appelées "Instances".

VM Ă  la Demande (Le concept "Elastic")

Le terme "Elastic" (Élastique) signifie que vous pouvez :

  • Provisionner (DĂ©marrer) : Lancer une nouvelle VM (Windows, Linux...) en quelques minutes (voire secondes).
  • Scaler (Adapter) : Lancer 1 instance (pour un test) ou 10 000 instances (pour un calcul intensif), via Auto Scaling.
  • DĂ©truire (ArrĂȘter) : Terminer l'instance (VM) dĂšs que vous n'en avez plus besoin.
  • Payer (Facturation) : Vous ĂȘtes facturĂ© Ă  la seconde (Pay-as-you-go), uniquement pour ce que vous utilisez.
ÉlĂ©ment Central de l'Infrastructure AWS

EC2 est le "cerveau" de votre infrastructure. C'est l'équivalent d'un serveur physique (On-Premise) ou d'une VM (VMware) dans votre datacenter, mais dans le cloud. C'est là que votre OS (SystÚme d'Exploitation) et votre application (Code) s'exécutent.

1.2. Pourquoi utiliser EC2 ? (vs PaaS/FaaS)

La réponse principale est : la Liberté (ContrÎle Total). Contrairement à RDS (PaaS) ou Lambda (FaaS) (qui sont des "boßtes noires" gérées), avec EC2, vous avez les "clés" (l'accÚs root ou Administrateur).

ContrĂŽle Total
  • OS : Vous choisissez l'OS (Amazon Linux, Ubuntu, Windows Server, RHEL...) et vous ĂȘtes responsable des patchs de sĂ©curitĂ© (apt update).
  • Logiciels : Vous pouvez installer n'importe quel logiciel (apt-get, .exe), drivers spĂ©cifiques, ou binaires custom.
  • RĂ©seau : Vous contrĂŽlez 100% du rĂ©seau (Security Groups, IP PrivĂ©e/Publique, ENI multiples).
  • Stockage : Vous choisissez le type (gp3, io2) et la taille du disque (EBS).
Compatible "Workload Legacy" (Migration)

C'est le cas d'usage "Lift & Shift". Si vous avez une application "legacy" (monolithique, ancienne, ex: un vieil Oracle, une app .NET 3.5) qui tourne sur un serveur physique (On-Premise), vous ne pouvez pas la mettre sur Lambda.

Vous pouvez (quasiment toujours) la "migrer" (Lift & Shift) sur une instance EC2 (Windows/Linux) configurée à l'identique (ex: via AWS Migration Service).

Multi-Usage (Flexibilité)

EC2 est la "brique" de base pour tout type de charge :

  • Web : HĂ©berger des serveurs Nginx, Apache, Django (Gunicorn), Node.js...
  • Compute/Batch : Calculs scientifiques (HPC), jobs de batch (ex: traitement de fin de mois).
  • Data : HĂ©berger des bases de donnĂ©es "self-managed" (ex: Cassandra, MongoDB) (si RDS ne convient pas).
  • IA / Machine Learning : Instances G (GPU Nvidia, InfĂ©rence) ou P (GPU Nvidia, Training).
  • Conteneurs : Les "Worker Nodes" (NƓuds de travail) de vos clusters EKS (Kubernetes) ou ECS sont des instances EC2.
1.3. Rîle d’EC2 dans l’Écosystùme AWS

EC2 est l'équivalent cloud d'un serveur physique/On-Premise. Il est au centre de l'IaaS et interagit (directement ou indirectement) avec la quasi-totalité des services AWS.

Interactions Principales (Écosystùme)
Service AWSInteraction avec EC2
VPC (Réseau)EC2 "vit dans" (est lancé dans) un Subnet (privé/public) de votre VPC. C'est le VPC qui lui donne son IP privée.
IAM (Sécurité)EC2 "assume" (endosse) un IAM Role (Instance Profile) pour avoir les permissions d'appeler d'autres API AWS (ex: s3:GetObject).
AMI (Template)L'AMI (Amazon Machine Image) est le "template" (OS + logiciels) utilisé pour démarrer (boot) l'instance EC2.
EBS (Stockage)L'EBS (Elastic Block Store) est le disque dur (Volume) (ex: /dev/sda1) attaché à l'instance EC2.
Load Balancers (ELB)L'ALB (Application Load Balancer) distribue (route) le trafic (HTTP/HTTPS) vers un "Target Group" (Groupe Cible) composé d'instances EC2.
Autoscaling (ASG)L'ASG (Auto Scaling Group) crée (scale-out) et détruit (scale-in) (automatiquement) des instances EC2 en fonction de la charge (ex: CPU > 70%).
SSM (Systems Manager)SSM est l'outil (moderne) pour gérer (patcher, exécuter des commandes, se connecter en shell sans SSH) vos instances EC2.
Route 53 (DNS)Route 53 (DNS) pointe un nom de domaine (ex: www.monsite.com) vers l'IP Publique (EIP) ou l'ALB (qui pointe vers EC2).
S3 (Stockage Objet)L'application (sur EC2) (via son IAM Role) lit/écrit des fichiers (objets, assets) sur S3.
1.1 Concept : EC2 (Elastic Compute Cloud)
Qu'est-ce qu'EC2 ?

EC2 (Elastic Compute Cloud) est le service IaaS (Infrastructure as a Service) fondamental d'AWS. C'est (tout simplement) un serveur virtuel (VM) (un "VPS") que vous louez (Ă  la seconde) dans le cloud AWS.

Il fournit du "Calcul" (Compute) (CPU/RAM) de maniĂšre "Élastique" (vous pouvez en lancer 1 ou 10 000, et les arrĂȘter Ă  tout moment).

Analogie (IaaS)

Si AWS était une "Pizza as a Service" :

  • EC2 est le modĂšle IaaS.
  • AWS vous fournit l'infrastructure (le four, la cuisine, les ingrĂ©dients bruts).
  • Vous (Client) gĂ©rez tout le reste :
    • L'installation de l'OS (via l'AMI).
    • Les Patchs de SĂ©curitĂ© (apt update).
    • Le Firewall (Security Group).
    • L'installation des Logiciels (Nginx, Java...).
    • L'Application (votre code).
1.2 Concept : AMI (Amazon Machine Image)

L'AMI est le "template" (modÚle) de disque (OS) utilisé pour démarrer (boot) l'instance EC2. C'est la premiÚre chose que vous choisissez lors du lancement.

Qu'est-ce qu'une AMI ?

Une AMI (stockée/basée sur un Snapshot EBS) contient :

  • L'OS (ex: Ubuntu 22.04, Amazon Linux 2, Windows Server 2022).
  • L'architecture (x86 ou ARM (Graviton)).
  • Le "boot loader" (chargeur de dĂ©marrage).
  • (Optionnel) Des logiciels prĂ©-installĂ©s (ex: une AMI "WordPress").
OĂč trouver les AMIs ?
TypeDescription
AWS (Quick Start)(Recommandé) Images officielles, maintenues et patchées par AWS (ex: Amazon Linux 2, Ubuntu).
MarketplaceImages (payantes ou gratuites) vendues par des tiers (ex: "AMI Fortinet Firewall", "AMI WordPress par Bitnami").
My AMIs (Custom)(Bonne Pratique) (Voir 7.2) Vos propres images ("Golden Images") que vous avez créées à partir de vos Snapshots.
Community AMIs(Non-vérifiées) AMIs partagées par d'autres utilisateurs. (Risque de sécurité).
1.3 Concept : Instance Types (Le "Hardware" Virtuel)

L'"Instance Type" (Type d'Instance) définit le "matériel" (Hardware) virtuel (vCPU, RAM, Réseau) de votre EC2.

Comprendre la Nomenclature (Ex: t3.micro)
PartieExempleSignification
FamilletT (Burstable), M (General), C (Compute), R (Memory), G (GPU)...
Génération33Úme génération (plus récente et moins chÚre que t2).
Taillemicronano, micro, small, medium, large, xlarge, 2xlarge...
Familles Courantes (Pour Débutants)
  • Famille T (Burstable) : (ex: t2.micro, t3.medium)
    • (Free Tier) t2.micro est (gĂ©nĂ©ralement) inclus dans le Free Tier (12 mois).
    • Concept (CPU Credits) : L'instance a un CPU de base (faible), mais peut "burster" (exploser) Ă  100% CPU pendant une courte pĂ©riode (en utilisant des "CrĂ©dits CPU").
    • Usage : IdĂ©al pour sites Ă  faible trafic (blog), tests, serveurs de dev. (Ne pas utiliser pour de la production soutenue).
  • Famille M (General Purpose) : (ex: m5.large)
    • Le "standard" pour la production. (Ratio Ă©quilibrĂ© CPU/RAM).
    • Usage : Serveurs web (prod), APIs, microservices.
  • Famille C (Compute Optimized) : (CPU Ă©levĂ©, RAM faible).
  • Famille R (Memory Optimized) : (RAM Ă©levĂ©e, CPU faible). (ex: Caches, BDDs).
2.1 Lancement (Étape 1) : Choix de l'AMI

C'est la premiÚre étape de l'assistant ("Launch an instance") dans la console EC2.

Recommandations (Débutant) :

  • Amazon Linux 2 / 2023 : (RecommandĂ© par AWS) AMI optimisĂ©e (sĂ©curisĂ©e, rapide), basĂ©e sur RHEL. (Utilisateur par dĂ©faut : ec2-user).
  • Ubuntu Server 22.04 : (TrĂšs populaire) Standard (apt). (Utilisateur par dĂ©faut : ubuntu).
  • Windows Server : (Si besoin .NET/IIS).

Architecture : Toujours choisir 64-bit (x86) (le standard) ou 64-bit (Arm) (si vous utilisez les instances "Graviton" (g), moins chĂšres).

2.2 Lancement (Étape 2) : Choix du Type d'Instance

C'est le choix du "Hardware" (CPU/RAM) (voir 1.3).

(Free Tier) Pour rester dans le niveau gratuit (12 premiers mois), vous devez sélectionner un type éligible "Free Tier eligible".

Généralement : t2.micro (ou t3.micro selon la Région).

2.3 Lancement (Étape 3) : Key Pair (ClĂ© SSH)

Étape la plus cruciale pour la connexion (Login).

L'AMI (Linux) est (par défaut) configurée pour désactiver la connexion par mot de passe (Password) SSH.

La seule façon de se connecter est d'utiliser une Clé SSH Asymétrique (Cryptographie).

Flux (Création)
  1. (Wizard AWS) Vous "Créez une nouvelle Key Pair".
  2. (AWS) GénÚre une Clé Privée et une Clé Publique.
  3. (AWS) "Injecte" la Clé Publique dans le fichier ~/.ssh/authorized_keys de l'instance (EC2).
  4. (AWS) Vous force à télécharger la Clé Privée (le fichier .pem).

Attention : C'est votre unique chance de télécharger le .pem. Si vous le perdez, vous ne pourrez plus jamais vous connecter à cette instance (il faudra la détruire).

Usage (Login) : (Voir 4.1 / 4.2) Vous utilisez ce fichier .pem (ClĂ© PrivĂ©e) pour prouver (au serveur) que vous ĂȘtes bien "vous" (possĂ©dant la clĂ© privĂ©e) (via SSH).

3.1 Lancement (Étape 4) : RĂ©seau (VPC/Subnet)

C'est ici que vous "placez" votre EC2 dans le réseau (voir guide AWS 3.3 / 4.1).

Configuration (Débutant)
  • VPC : Laisser le VPC par dĂ©faut (default). (AWS en crĂ©e un pour vous dans chaque RĂ©gion).
  • Subnet (Sous-rĂ©seau) : Choisir un Subnet "Public" (ex: ... (AZ-a)).
    • (Un Subnet Public est un subnet qui a une route vers l'Internet Gateway (IGW)).
  • Auto-assign Public IP (IP Publique) : Mettre Enable (Activer).
    • Ceci est vital. Si "Disabled", l'instance n'aura qu'une IP PrivĂ©e (ex: 172.31.x.x) et sera inaccessible depuis Internet.
3.2 Lancement (Étape 5) : Security Group (Pare-feu)

C'est le pare-feu (Stateful) de l'instance (voir guide AWS 2.3). Il est DENY ALL (Tout bloquer) par défaut (en entrée).

(PiÚge n°2 du Login) : Si vous ne configurez pas le Security Group (SG), le Port 22 (SSH) sera bloqué. Votre connexion (4.1) échouera (Timeout).

Configuration (Serveur Web)

Vous devez "Créer un nouveau Security Group" et ajouter (Whitelist) des rÚgles Inbound (Entrantes) :

TypeProtocolePortSourceDescription
SSHTCP22My IP (ou 80.1.2.3/32)(Permet votre IP (Admin) de se connecter en SSH).
HTTPTCP800.0.0.0/0 (Anywhere)(Permet à Internet d'accéder au site Web).
HTTPSTCP4430.0.0.0/0 (Anywhere)(Permet à Internet d'accéder au site Web (SSL)).

Ne jamais mettre 0.0.0.0/0 (Anywhere) sur le port 22 (SSH) ! (Sauf pour un test temporaire).

3.3 Lancement (Étape 6) : Stockage (EBS)

Configuration du "disque dur" (Volume EBS) de l'instance.

  • Volume Root (Racine) : C'est le disque /dev/sda1 (OS).
    • Taille : (DĂ©faut : 8 Go ou 10 Go). (Pour le Free Tier, restez < 30 Go).
    • Type : gp3 (RecommandĂ©) ou gp2 (Legacy).
  • (Optionnel) Ajouter un Volume : (ex: /dev/sdb) (Pour les donnĂ©es, ex: 100 Go gp3).
  • Delete on Termination (Supprimer Ă  la fin) :
    • CochĂ© (DĂ©faut) : Si vous terminez (Terminate) l'instance EC2, le Volume EBS (Disque) est dĂ©truit (supprimĂ©) en mĂȘme temps. (OK pour le Boot).
    • DĂ©cochĂ© : Si vous terminez l'EC2, le Volume EBS (DonnĂ©es) survit (et continue d'ĂȘtre facturĂ©). (Bonne pratique pour les disques de DonnĂ©es).
4.1 Connexion : SSH (Linux / macOS / WSL)

Une fois l'instance "Running", sélectionnez-la dans la console AWS et cliquez sur "Connecter".

Étape 1 : Permissions (chmod 400) (1 seule fois)

(PiÚge n°1) SSH (sécurité) refusera d'utiliser une clé (.pem) qui est "publique" (lisible par d'autres).

# (Rendre la clé 'Read-Only' pour vous seul)
                $ chmod 400 /chemin/vers/ma-cle.pem
            
Étape 2 : Connexion (ssh -i)
# Syntaxe: ssh -i [CLE_PRIVEE] [USER]@[IP_PUBLIQUE]

                # (IP Publique ou DNS : ex: 'ec2-34-1-2-3.eu-west-3.compute.amazonaws.com')

                $ ssh -i /chemin/vers/ma-cle.pem ec2-user@34.1.2.3
            
Quel "Utilisateur" (user) ?

L'utilisateur dépend de l'AMI (2.1) que vous avez choisie :

AMIUtilisateur (user)
Amazon Linux 2 / 2023ec2-user
Ubuntuubuntu
Debianadmin
RHELec2-user ou root
CentOScentos
4.2 Connexion : PuTTY (Windows)

PuTTY (Windows "legacy") ne peut pas lire le format .pem (OpenSSH). Il a besoin de son propre format : .ppk (PuTTY Private Key).

Étape 1 : Conversion (PuTTYgen) (1 seule fois)
  1. Ouvrir PuTTYgen (l'outil de conversion).
  2. Cliquer "Load".
  3. Sélectionner "All Files (*.*)" (pour voir le .pem).
  4. Charger ma-cle.pem.
  5. Cliquer "Save private key" (Ignorer la "passphrase" pour le moment).
  6. Sauvegarder ma-cle.ppk.
Étape 2 : Connexion (PuTTY)
  1. Ouvrir PuTTY.
  2. Session (Accueil) :
    • Host Name: ec2-user@34.1.2.3 (user@IP)
  3. Connection -> SSH -> Auth :
    • Cliquer "Browse..." (Parcourir).
    • SĂ©lectionner ma-cle.ppk.
  4. (Optionnel) Session -> Save (Sauvegarder la session).
  5. Cliquer Open.
4.3 Connexion : Session Manager (SSM) (Moderne)

AWS Systems Manager (SSM) Session Manager est la méthode moderne (et la plus sécurisée) pour se connecter (Shell) à une instance (Linux ou Windows).

Avantages (Sécurité)
  • Pas de ClĂ© SSH (.pem) : (Pas de risque de vol de clĂ©).
  • Pas de Port 22 (SSH) : Le Security Group (3.2) peut ĂȘtre 100% fermĂ© (Inbound). (Surface d'attaque nulle).
  • Authentification (IAM) : La connexion est autorisĂ©e par le RĂŽle IAM (5.2) (pas par une clĂ©).
  • Audit (Logs) : Toutes les commandes (Shell) peuvent ĂȘtre logguĂ©es (CloudWatch/S3).
Pré-requis
  1. L'instance (EC2) doit avoir l'Agent SSM (installé par défaut sur Amazon Linux, Ubuntu 18+).
  2. L'instance doit avoir un RÎle IAM (5.2) attaché, avec la Policy (gérée par AWS) : AmazonSSMManagedInstanceCore.
  3. (Si en Subnet Privé) L'EC2 doit pouvoir joindre les "VPC Endpoints" de SSM (via NAT (4.2) ou VPC Endpoint).
Connexion (UI)

Console EC2 -> Sélectionner l'Instance -> Clic "Connecter" -> Onglet "Session Manager" -> Clic "Connect". (Ouvre un terminal (shell) dans le navigateur).

5.1 Initialisation : User Data (cloud-init)

Le User Data (Données Utilisateur) est un script (cloud-init) que vous fournissez (dans le Wizard de Lancement, section "Advanced details") pour initialiser l'instance.

Il est exécuté 1 SEULE FOIS, au premier démarrage (boot) de l'instance. (Il ne s'exécute pas lors d'un "Reboot").

Exemple (cloud-init - Bash)

Utilisé pour "bootstrapper" un serveur web (ex: apt install ...).

#!/bin/bash
                # (Le 'shebang' est important)

                # (Exécuté en tant que 'root')

                # (Exemple Ubuntu/Debian)
                apt-get update -y
                apt-get install -y nginx
                systemctl enable --now nginx

                # (Exemple Amazon Linux 2 / RHEL)
                yum update -y
                yum install -y httpd
                systemctl enable --now httpd
                echo "Hello from EC2" > /var/www/html/index.html
            

Usage : Permet de crĂ©er des "Golden Images" (7.2) ou de configurer des nƓuds (ASG) (7.3) de maniĂšre automatisĂ©e.

5.2 Initialisation : RĂŽle IAM (Permissions)

ProblÚme (Mauvaise Pratique) : Une application (Python) sur un EC2 doit lire un fichier sur S3. Le développeur "hardcode" (écrit en dur) les clés (AWS_ACCESS_KEY) d'un "User" (IAM) dans le code (config.ini).

(FAILLE) Si le code (Git) fuite, l'attaquant a les clés (longue durée) de votre compte.

Solution (RĂŽle IAM)

C'est la meilleure pratique de sécurité. On "attache" un RÎle IAM (une "casquette" de permissions) à l'instance EC2 lors du lancement.

  1. (Console IAM) Créer une Policy (ex: "AllowReadMonBucket").
  2. (Console IAM) Créer un RÎle (ex: "MonRoleEC2") qui fait confiance au Service EC2 (ec2.amazonaws.com).
  3. (Console IAM) Attacher la "Policy" au "RĂŽle".
  4. (Console EC2) Lancer l'instance en lui attachant "MonRoleEC2".
Flux (Magique)
  1. L'application (Python/Boto3 SDK) sur l'EC2 fait : boto3.client('s3') (sans clés).
  2. Le SDK "voit" qu'il est sur un EC2 avec un RĂŽle.
  3. Il appelle (automatiquement) le "Metadata Service" (169.254.169.254).
  4. AWS (STS) génÚre des clés temporaires (1h) (basées sur la Policy du RÎle).
  5. Le SDK utilise ces clés temporaires pour appeler S3.

Résultat : Zéro clé "hardcodée". Sécurité maximale.

5.3 Config : Elastic IP (EIP)

ProblĂšme : L'IP Publique (Auto-assignĂ©e, 3.1) d'une instance EC2 est dynamique (Ă©phĂ©mĂšre). Si vous Stoppez (ArrĂȘtez) et RedĂ©marrez (Start) l'instance, l'IP Publique change. (L'IP PrivĂ©e (VPC) ne change pas).

(ProblĂšme DNS) Votre enregistrement DNS (A) (ex: www.ideolab.com) pointe vers l'ancienne IP (morte).

Solution : Elastic IP (EIP)

Une EIP est une adresse IPv4 Publique Statique (Fixe) (réservée à votre compte).

Flux
  1. (Console VPC) Allouer (Allocate) une nouvelle EIP (ex: 54.1.2.3).
  2. (Console EC2) Lancer l'instance (sans IP publique auto-assignée).
  3. (Console VPC) Associer (Associate) l'EIP (54.1.2.3) Ă  l'Instance EC2.
  4. (DNS) Faire pointer www.ideolab.com vers 54.1.2.3.

(PiĂšge de CoĂ»t) Les EIPs sont gratuites (1 par instance) tant qu'elles sont ATTACHÉES Ă  une instance RUNNING (en cours).

Une EIP non-attachée (ou attachée à une instance STOPPED) est facturée (cher) (pour éviter la pénurie d'IPv4).

6.1 Tarification 1 : On-Demand (À la demande)

C'est le modÚle de tarification (Compute) par défaut. (Le plus cher, mais le plus flexible).

Principe : Pay-as-you-go (Paiement Ă  l'utilisation).

  • Facturation : À la seconde (minimum 60 secondes).
  • CoĂ»t : Prix plein (ex: t3.micro = ~$0.01/heure).
  • Engagement : Aucun.
Usage
  • DĂ©veloppement & Test : (Besoin d'instances pour 2 heures).
  • Applications "Spiky" (Ă  Pics) : (ex: Un site e-commerce pendant le Black Friday, gĂ©rĂ© par un ASG (3.2)).
  • Applications (Stateless) : (Si combinĂ© avec Spot).
6.2 Tarification 2 : Reserved Instances (RI) & Savings Plans (SP)

ModÚles de réduction basés sur l'Engagement (Commitment).

Principe : Vous vous engagez (auprÚs d'AWS) à payer pour une certaine quantité de "Compute" pendant 1 an ou 3 ans, en échange d'une réduction massive (jusqu'à -72% vs On-Demand).

Usage : Charges de travail stables et prévisibles (ex: "Je sais que j'aurai besoin de ces 2 EC2 (BDD) 24/7 pendant 3 ans").

Reserved Instances (RI)

Engagement (Rigide) : Vous vous engagez sur une Famille (ex: m5) + Région (ex: eu-west-3) + OS (Linux) ... pendant 1/3 ans.

Avantage : (Convertible RI) Permet de changer de famille (ex: m5 -> c5).

Savings Plans (SP) (Recommandé)

Engagement (Flexible) : Vous ne vous engagez pas sur une instance, mais sur un montant ($).

Exemple : "Je m'engage à dépenser $10.00 / heure en Compute (EC2, Fargate, Lambda) pendant 3 ans."

Avantage : Flexibilité totale. La réduction s'applique automatiquement (jusqu'à $10/h) à tous vos types d'instances (t3, m5, c5) et services (EC2, Fargate, Lambda) dans le monde entier.

6.3 Tarification 3 : Spot Instances (EnchĂšres)

Les Instances Spot sont le modÚle de coût le moins cher (jusqu'à -90% de réduction vs On-Demand).

Le "Deal" (Marché)

Principe : Vous achetez (via "enchÚres") la capacité EC2 inutilisée (spare) d'AWS.

L'Inconvénient (Le "PiÚge") : C'est une capacité interruptible. Si AWS (ou un client On-Demand) a besoin de cette capacité, AWS vous envoie un "avis d'interruption" (2 minutes) et termine (tue) votre instance Spot.

Usage (Tolérance aux Pannes)

Ne jamais utiliser Spot pour des charges "Stateful" (ex: une BDD) ou critiques (ex: un serveur web unique).

Idéal pour :

  • TĂąches "Stateless" (Batch) : (Rendu vidĂ©o, Calcul scientifique, Jobs Spark). (Si le job est tuĂ©, on le relance plus tard).
  • ASG (Mixte) : (Bonne pratique) Configurer un ASG (3.2) (ex: MaxSize=10) pour utiliser 70% Spot (pas cher) et 30% On-Demand (stable).
7.1 Backup : EBS Snapshots

Un Snapshot EBS (voir 3.3) est un backup (sauvegarde) "point-in-time" (instantané) d'un Volume EBS (Disque).

Fonctionnement
  • Stockage (S3) : Les snapshots sont (cachĂ©s) stockĂ©s sur S3 (moins chers que l'EBS).
  • IncrĂ©mentiel : Le 1er Snapshot (A) est complet. Le 2Ăšme (B) ne copie que les blocs modifiĂ©s (deltas) depuis A. (Optimisation coĂ»t/temps).
  • Crash-Consistent : (Prise "Ă  chaud" (live)).
Usage
  • Backup/Restore : (Sauvegarde) (Action : CrĂ©er Snapshot).
  • Restauration : Vous pouvez crĂ©er un nouveau Volume EBS (disque) Ă  partir d'un Snapshot (n'importe oĂč, mĂȘme dans une autre AZ (1.2) -> (HA)).
  • Clonage : (Snapshot -> Nouveau Volume -> Attacher Ă  une nouvelle EC2).
  • CrĂ©ation d'AMI (7.2) : C'est la base des AMIs "Custom".
7.2 Backup : Custom AMI (Golden Image)

ProblÚme : Utiliser "User Data" (5.1) (apt install nginx...) est lent. (Chaque nouvelle instance de l'ASG prend 5 minutes pour démarrer/installer).

Solution : AMI "Golden Image" (Pré-installé)

Une "Custom AMI" est un Snapshot (7.1) + des Métadonnées (ex: "Type de Kernel"). C'est votre "Golden Image" (Image de référence).

Workflow (Baking)
  1. (Jour 1) Lancer 1 EC2 (Ubuntu).
  2. (Jour 1) S'y connecter (SSH) : apt update, apt install nginx, apt install monit, apt install cloudwatch-agent...
  3. (Jour 1) (Console EC2) Clic Droit -> "Create Image (AMI)". (Nom : mon-app-v1.0).
  4. (Jour 2) Modifier le Launch Template (3.2) de l'ASG (7.3) pour utiliser ami-mon-app-v1.0 (au lieu de l'AMI Ubuntu brute).

Résultat : Au prochain Scale-Out (3.2), la nouvelle instance EC2 démarre immédiatement (ex: < 30 sec) avec Nginx/Monit déjà installés (boot "chaud").

7.3 Scaling : Auto Scaling Group (ASG)

Un ASG (Auto Scaling Group) est le service qui automatise le cycle de vie des EC2, en combinant tous les concepts précédents.

Un ASG est défini par :
  • 1. Le "Quoi" (Launch Template) (7.2) :
    • Quelle AMI (1.2) ?
    • Quel Instance Type (1.3) ?
    • Quel Key Pair (2.3) ?
    • Quel Security Group (3.2) ?
    • Quel IAM Role (5.2) ?
  • 2. Le "OĂč" (RĂ©seau) :
    • Dans quel VPC (3.3) ?
    • Dans quels Subnets (4.1) ? (Bonne Pratique : Au moins 2 AZs (ex: eu-west-3a, eu-west-3b) pour la HA).
  • 3. Le "Comment" (Gestion) :
    • MinSize / MaxSize : (Limites de scaling).
    • DesiredCapacity : (L'Ă©tat souhaitĂ©).
    • Health Checks : (Sonde ELB ou EC2) (Pour l'auto-rĂ©paration).
    • Scaling Policies : (Politiques de scaling) (ex: CPU > 50%).