Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

☁️ AWS (Amazon Web Services)

Guide complet IDEO-Lab sur les services fondamentaux (Compute, Storage, Network, IAM).

1.1

Concept : IaaS / PaaS / SaaS

Les 3 modèles de service Cloud (Responsabilité).

IaaS PaaS SaaS
1.2

Archi Globale : Régions & AZ

Régions (Géographie) vs Zones de Dispo (Datacenters/HA).

Région AZ (Availability Zone)
1.3

Tarification (Pricing)

On-Demand, Reserved Instances (RI), Savings Plans, Free Tier.

Pricing On-Demand
2.1

Sécurité : IAM (Le Cœur)

Users, Groups, Roles (le plus important), Policies (JSON).

IAM Rôle Policy
2.2

Compute : EC2 (Instances)

Le "serveur" (VM). Instances (t3.micro...), AMIs (OS).

EC2 IaaS Instance
2.3

Compute : Security Groups

Le "pare-feu" (Stateful) de l'EC2 (Port 22, 80, 443).

Security Group (SG) Firewall
3.1

Compute : ELB (Load Balancer)

Application Load Balancer (ALB, L7), Target Groups.

ELB ALB
3.2

Compute : Auto Scaling Group (ASG)

Scalabilité (CPU) & Auto-réparation (HA).

ASG Auto Scaling
3.3

Réseau : VPC

Virtual Private Cloud (Votre réseau privé isolé).

VPC Réseau
4.1

Réseau : Subnets (Public/Privé)

Sous-réseaux (Public vs Privé), Route Tables.

Subnet Route Table
4.2

Réseau : IGW vs NAT Gateway

Internet Gateway (Entrant) vs NAT Gateway (Sortant).

IGW NAT Gateway
4.3

Stockage : S3 (Objets)

Simple Storage Service (Buckets, Keys, Objets).

S3 Stockage Objet
5.1

Stockage : S3 (Classes)

Standard (Chaud) vs Glacier (Archive/Froid), Cycle de vie.

S3 Glacier
5.2

Stockage : EBS (Blocs)

Elastic Block Store (Le "disque dur" de l'EC2).

EBS Stockage Bloc
5.3

BDD : RDS (SQL Managé)

Relational DB Service (Postgres, MySQL...).

RDS SQL PaaS
6.1

BDD : DynamoDB (NoSQL)

NoSQL (Clé-Valeur), Serverless, RCU/WCU.

DynamoDB NoSQL
6.2

Serverless : Lambda

Function-as-a-Service (FaaS). (Exécute du code).

Lambda Serverless FaaS
6.3

Serverless : API Gateway

Point d'entrée (Façade) API REST (Trigger pour Lambda).

API Gateway API REST
7.1

Conteneurs : ECS & Fargate

Elastic Container Service (Orchestrateur AWS).

ECS Fargate
7.2

Conteneurs : EKS

Elastic Kubernetes Service (K8s managé).

EKS Kubernetes
7.3

Monitoring : CloudWatch

Logs, Métriques (Metrics), Alarmes (Alarms).

CloudWatch Logs Metrics
1.1 Concept : Modèles de Service (IaaS, PaaS, SaaS)

Ces acronymes définissent le "Modèle de Responsabilité Partagée" (qui gère quoi ?).

ModèleSignificationAnalogie (Pizza)Exemples AWSVous Gérez...
On-Premise (Sur Site)(DIY)Fait Maison(Votre Data Center)Tout (Réseau, Stockage, Serveurs, OS, App, Données...)
IaaSInfrastructure as a ServicePizza Achetée (Surgelée)EC2, VPC, EBSL'OS, les Middleware, l'App, les Données.
PaaSPlatform as a ServicePizza Livrée (Chaude)RDS, Lambda, EKS, BeanstalkL'App, les Données. (AWS gère l'OS, les patchs...).
SaaSSoftware as a ServiceDîner au RestaurantS3, DynamoDB, Gmail, Salesforce(Rien) (Juste vos Données/Configuration).
1.2 Architecture Globale : Régions & Zones de Disponibilité (AZ)

C'est le concept fondamental de la Haute Disponibilité (HA) sur AWS.

1. Région (Region)

Une Région est une zone géographique (ex: eu-west-3 (Paris), us-east-1 (N. Virginia)).

Objectif (Souveraineté & Latence) :

  • Souveraineté (Données) : Permet de se conformer aux lois (ex: RGPD/GDPR) en gardant les données (ex: BDD RDS) physiquement à Paris (eu-west-3). Les données ne quittent jamais la Région (sauf si vous le demandez).
  • Latence : Permet de servir les utilisateurs (ex: français) depuis une Région proche (Paris) plutôt que depuis les USA (réduit la latence).

(Piège) Les services sont (majoritairement) "scopés" (limités) à une Région. Un EC2 (Paris) ne peut pas (directement) voir un EBS (Francfort).

2. Zone de Disponibilité (AZ - Availability Zone)

C'est la base de la Haute Disponibilité (HA).

Une AZ est un (ou plusieurs) Data Center(s) physique(s) (distincts) à l'intérieur d'une Région.

Exemple (Région Paris eu-west-3) :

  • AZ 1 (eu-west-3a) : (Data Center 1, ex: Courbevoie)
  • AZ 2 (eu-west-3b) : (Data Center 2, ex: Clichy)
  • AZ 3 (eu-west-3c) : (Data Center 3, ex: Vitry)

Caractéristiques :

  • Isolation (Pannes) : Les AZs sont physiquement séparées (bâtiments, alimentations, réseaux différents) pour résister aux pannes (incendie, inondation).
  • Connexion (Faible Latence) : Reliées par des fibres optiques (redondantes) à très faible latence (< 10ms) (permet la réplication synchrone, ex: RDS Multi-AZ).

Bonne Pratique (HA) : Toujours déployer une application (ex: 2 EC2 + 1 ALB) sur (au moins) 2 AZs (ex: 3a et 3b). Si l'AZ 3a tombe (panne), l'ALB (qui est Multi-AZ) envoie 100% du trafic vers l'EC2 (sain) dans l'AZ 3b.

3. Edge Location (Point de Présence)

Un "Edge Location" (Point de Présence) est un mini Data Center (Cache). Il y en a des centaines dans le monde (dans les grandes villes).

Usage (CDN) : C'est l'infrastructure utilisée par Amazon CloudFront (le CDN d'AWS).

Flux (CloudFront)
  1. (Serveur "Origine") Votre site (ex: EC2 ou S3) est à Paris (Région).
  2. (Client) Un utilisateur à Sydney demande image.jpg.
  3. (CloudFront) La requête est routée vers l'Edge Location de Sydney (le plus proche).
  4. (Cache Miss) L'Edge de Sydney demande l'image à Paris (Origine) (1 fois).
  5. L'Edge de Sydney met en cache image.jpg et la sert à l'utilisateur (rapide).
  6. (Utilisateur 2 à Sydney) Demande image.jpg -> Reçoit la copie (Cache Hit) de Sydney (très rapide).
1.3 Tarification (Pricing)

La tarification AWS est un "service" en soi. Le principe de base est Pay-as-you-go (Paiement à l'utilisation).

Modèles de Coût (Compute - EC2)
ModèleDescriptionUsage
On-Demand (À la demande)(Défaut) Facturé à la seconde. (Prix plein).Développement, Trafic "Spiky" (imprévisible).
Reserved Instances (RI)Engagement (1 ou 3 ans) sur une famille (ex: t3) dans 1 Région.(Réduction : 40-60%) Charge de travail stable (24/7).
Savings Plans(Moderne/Flexible) Engagement (1 ou 3 ans) sur un montant ($/heure) (ex: "Je m'engage à dépenser $10/h en Compute").(Réduction : 40-60%) Plus flexible que RI.
Spot Instances(Enchères) Utilise la capacité EC2 inutilisée d'AWS. (AWS peut reprendre l'instance à tout moment (2 min de préavis)).(Réduction : 90% !) Tâches "stateless", tolérantes aux pannes (ex: Jobs Spark, Rendu Vidéo).
Coûts (Stockage & Réseau)
Stockage (ex: S3, EBS)

Facturé au Go/Mois (ex: $0.023 / Go / Mois pour S3 Standard).

(Et aux opérations : PUT, GET, LIST).

Réseau (Data Transfer)

Le Piège (Coût caché n°1) :

  • Data Transfer IN (Internet -> AWS) = Gratuit (0$).
  • Data Transfer Inter-AZ (ex: EC2 (AZ-A) -> EC2 (AZ-B)) = Payant (ex: $0.01/Go).
  • Data Transfer OUT (AWS -> Internet) = Très Cher ! (ex: $0.09/Go) (Le "Egress cost").
AWS Free Tier (Niveau Gratuit)

Compte (nouveau) gratuit pendant 12 mois. Inclut (par mois) :

  • 750h de t2.micro (EC2)
  • 5 Go de S3 (Standard)
  • 750h de RDS (t2.micro)
  • 1M d'appels Lambda
  • ... (Voir la liste complète)
Billing Alarms (Alarmes de Facturation)

Bonne Pratique (Jour 1) : Configurer une Alarme CloudWatch (7.3) sur la Facturation (Billing).

Règle : "SI EstimatedCharges (Coût Total) > 50 USD ALORS envoyer une notification (SNS) à admin@ideolab.com". (Empêche les "factures surprises" de 10k$).

2.1 Sécurité : IAM (Identity and Access Management)

IAM est le service de sécurité "cœur" d'AWS. C'est le "gardien" (global) qui gère "Qui (Principal) peut faire Quoi (Action) sur Quoi (Resource) ?".

(Piège) Ne jamais utiliser le Compte "Root" (Email) (Super-Admin) pour le travail quotidien. (Créer un "User" Admin IAM dédié).

1. Les "Principals" (Le "Qui")
PrincipalDescription
User (Utilisateur)Une personne physique (ex: "bob", "alice") ou un service (ex: "jenkins"). (A des clés (Access Key) longue durée).
Group (Groupe)Un "dossier" d'utilisateurs (ex: "Devs", "Admins"). (On attache les Policies (2) au Groupe, pas à l'User).
Role (Rôle)Le plus important. Une "casquette" (permission) temporaire qu'un "Principal de confiance" (ex: un service AWS (EC2) ou un autre compte) peut "assumer" (AssumeRole) pour obtenir des clés temporaires (STS).
2. Policies (Permissions JSON) (Le "Quoi" sur le "Quoi")

Une "Policy" (Politique) est un document JSON qui définit les permissions (Allow / Deny).

(Exemple : Autoriser (Allow) la lecture (s3:GetObject)
          sur le Bucket (Resource) 'mon-bucket')
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowReadS3",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::mon-bucket-prod",
                "arn:aws:s3:::mon-bucket-prod/*"
            ]
        },
        {
            "Sid": "DenyDelete",
            "Effect": "Deny",
            "Action": "s3:DeleteObject",
            "Resource": "*"
        }
    ]
}

Bonne Pratique (Moindre Privilège) : Toujours commencer par Deny All (implicite) et n'autoriser (Allow) que les actions (ex: s3:GetObject) sur les ressources (ex: mon-bucket) strictement nécessaires.

3. Cas d'Usage : Rôle EC2 (Le "Best Practice")

Problème (Mauvaise Pratique) : Une application (Python) sur un EC2 (2.2) doit lire un fichier sur S3 (4.3). 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)
  1. (Admin) Créer une Policy (2) (ex: "AllowReadMonBucket").
  2. (Admin) Créer un Rôle (1) (ex: "MonRoleEC2") qui fait confiance au Service EC2.
  3. (Admin) Attacher la "Policy" au "Rôle".
  4. (Admin) Lancer l'instance EC2 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" (local) d'AWS.
  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.

2.2 Compute : EC2 (Elastic Compute Cloud)

EC2 est le service IaaS (1.1) fondamental d'AWS. C'est un serveur virtuel (VM) (un "VPS") dans le cloud.

1. Types d'Instance

Définit la "taille" (CPU, RAM) de la VM. (Facturé à l'heure/seconde).

FamillePréfixeUsage
Usage Généralt3, m5(Équilibré) Serveurs Web, Apps. (t3.micro = Free Tier).
Compute Optimizedc5, c6g(CPU élevé) Batch processing, Encodage vidéo.
Memory Optimizedr5, r6g(RAM élevée) Bases de données (ex: RDS), Caches (Redis).
GPUg4, p3Machine Learning (Entraînement), Rendu 3D.
2. AMI (Amazon Machine Image)

L'AMI est le "template" (modèle) de disque (OS) utilisé pour démarrer (boot) l'instance.

Elle contient l'OS (Linux, Windows), les patchs, et (optionnellement) vos logiciels pré-installés.

  • Marketplace AMIs : Images pré-configurées (ex: Ubuntu 22.04, RHEL, Windows Server).
  • Custom AMIs : (Bonne pratique) Vous lancez un Ubuntu, vous installez (apt install) Nginx/Java/Code, et vous créez un Snapshot (backup) de cet état. C'est votre "Golden Image" (AMI) (utilisée par l'ASG (3.2)).
2.3 Compute : Security Groups (SG)

Un Security Group (SG) est un pare-feu (firewall) virtuel Stateful (à état) qui contrôle le trafic entrant (Inbound) et sortant (Outbound) d'une Instance EC2 (ou ENI).

Caractéristiques
  • Stateful (À état) : (Similaire à iptables -m state) Si vous autorisez une requête entrante (Inbound) (ex: Port 80), la réponse (sortante) (Outbound) (ex: Port 50000) est automatiquement autorisée.
  • Allow-Only (Liste Blanche) : Vous ne pouvez que créer des règles Allow (Autoriser). (Tout est Deny par défaut).
  • Niveau (Instance) : S'applique à l'instance (ENI), pas au Subnet.
Exemple (SG pour un Serveur Web)
Règles ENTRANTES (Inbound)
TypeProtocolePortSource
SSHTCP2280.1.2.3/32 (Mon IP Admin)
HTTPTCP800.0.0.0/0 (Internet)
HTTPSTCP4430.0.0.0/0 (Internet)
Règles SORTANTES (Outbound)
TypeProtocolePortDestination
All trafficAllAll0.0.0.0/0 (Défaut)
3.1 Compute : ELB (Elastic Load Balancing)

ELB est le service de Load Balancer (Répartiteur de Charge) managé d'AWS.

Types de Load Balancers
TypeNiveau (OSI)Usage
ALB (Application)Couche 7 (HTTP/S)(Standard) Routage HTTP (Host, Path), SSL Offloading, Lambda.
NLB (Network)Couche 4 (TCP/UDP)(Haute Perf) TCP/UDP, IP Statique (Elastic IP), Latence ultra-faible.
CLB (Classic)Couche 4/7 (Hybride)(Legacy) Ne pas utiliser.
Architecture (ALB)
(Client) -> [ALB (Façade)]
               │ (Règle: Path='/api/*')
               │
               ▼
[ Target Group A (Pool API) ]
   │ (Health Check: Port 8080)
   │
   ├─► [EC2 1 (AZ-A)] (Port 8080)
   └─► [EC2 2 (AZ-B)] (Port 8080)
  • Listener (Écouteur) : (Sur l'ALB) "J'écoute sur le Port 443 (HTTPS)".
  • Rule (Règle) : (Sur l'ALB) "SI Host == api.com ALORS Forward vers Target Group A".
  • Target Group (Pool) : Un "pool" de cibles (EC2, IP, Lambda).
  • Health Check (Sonde) : Le Target Group teste (ping) (ex: GET /health) les cibles. S'il échoue, il arrête de leur envoyer du trafic.
3.2 Compute : Auto Scaling Group (ASG)

Un ASG est le service qui gère (automatise) la scalabilité (scale-out) et l'auto-réparation (HA) des Instances EC2.

1. Auto-Réparation (Haute Disponibilité)

Configuration : MinSize: 2, Desired: 2, MaxSize: 2. (Taille fixe = 2).

Flux de Panne :

  1. L'ASG utilise les Health Checks (Sondes) de l'ELB (3.1) (ou d'EC2).
  2. (Panne) L'EC2 (Instance 1) crash (l'OS plante).
  3. L'ELB (Health Check) marque l'Instance 1 "Unhealthy" (Malsain).
  4. L'ASG le détecte.
  5. L'ASG termine (Terminate) l'Instance 1 (morte).
  6. L'ASG lance (Launch) une nouvelle Instance (Instance 3) (basée sur le "Launch Template") pour respecter Desired=2.
  7. L'ASG attache l'Instance 3 à l'ELB.

Résultat : Le service s'est auto-réparé (HA) sans intervention humaine.

2. Scalabilité (Scaling Policies)

Configuration : MinSize: 2, Desired: 2, MaxSize: 10.

Politique de Scaling (Exemple) : Target Tracking (Cible)

  • "Je veux que l'utilisation CPU moyenne (AVG(CPU)) de mon ASG soit de 50%."

Flux (Scale-Out) :

  1. (Pic de trafic) Le CPU moyen des 2 instances passe à 80%.
  2. (Alarme CloudWatch) CPU > 50%.
  3. L'ASG lance (Launch) de nouvelles instances (ex: +2) (Total = 4).
  4. La charge (CPU) se répartit sur 4 instances et redescend à ~40%.

Flux (Scale-In) :

  1. (Nuit) Le CPU moyen tombe à 10%.
  2. (Alarme) CPU < 50%.
  3. L'ASG termine (Terminate) 2 instances (Total = 2) (Retour à MinSize).

3. Launch Template (Modèle de Lancement)

C'est la configuration (le "plan") que l'ASG utilise pour lancer une nouvelle instance.

Il définit :

  • AMI (OS) (2.2) : (ex: "ami-mon-app-v2")
  • Instance Type (Taille) : (ex: "t3.micro")
  • Security Group (Pare-feu) (2.3) : (ex: "sg-webserver")
  • IAM Role (Permissions) (2.1) : (ex: "MonRoleEC2")
  • Key Pair (Clé SSH) : (ex: "ma-cle.pem")
3.3 Réseau : VPC (Virtual Private Cloud)

Le VPC est le service réseau fondamental d'AWS. C'est votre centre de données (Data Center) virtuel et privé (isolé) dans une Région AWS.

Objectif : Vous donne un contrôle total sur votre réseau (similaire à un réseau "On-Premise").

Configuration (Wizard)

Lors de la création d'un VPC, vous définissez :

  1. CIDR (Bloc IP) : Le bloc d'adresses IP privées (RFC 1918) pour ce réseau.
    (Ex: 10.0.0.0/16 -> 65 536 IPs, de 10.0.0.0 à 10.0.255.255).
  2. Région : Le VPC est limité à 1 Région.
  3. Subnets (4.1) : Vous "découpez" (slice) le bloc CIDR en sous-réseaux (Subnets).
4.1 Réseau : Subnets (Public vs Privé)

Un Subnet (Sous-réseau) est un "morceau" (slice) du CIDR (3.3) du VPC.
(Piège) Un Subnet est limité à 1 seule Zone de Disponibilité (AZ) (1.2).

La différence (Publique/Privé) n'est pas une case à cocher. C'est une question de routage (Route Table).

Subnet Public

Définition : Un Subnet dont la Route Table (Table de Routage) a une route (0.0.0.0/0) vers l'Internet Gateway (IGW) (4.2).

Usage : Ressources "face au public" (ex: Load Balancers (ALB), Serveurs Web (si EIP)).

(Route Table du Subnet Public)
Destination  |  Target
-----------------------------------
10.0.0.0/16  |  local
0.0.0.0/0    |  igw-1234 (Internet GW)
Subnet Privé

Définition : Un Subnet dont la Route Table n'a pas de route directe vers l'IGW.

Usage : (Sécurité) Ressources "back-end" (ex: Bases de Données (RDS), Workers, EC2 applicatifs).

Route Table (Privé, Sortie via NAT) :

Destination  |  Target
-----------------------------------
10.0.0.0/16  |  local
0.0.0.0/0    |  nat-5678 (NAT Gateway)

Route Table (Privé, Isolé) :

Destination  |  Target
-----------------------------------
10.0.0.0/16  |  local
4.2 Réseau : Internet Gateway (IGW) vs NAT Gateway
1. Internet Gateway (IGW) (Passerelle Internet)

C'est la "Porte" (Bidirectionnelle) du VPC vers Internet. (Attaché au VPC).

Rôle : Permet le trafic Entrant/Sortant (Inbound/Outbound).

Usage : Requis pour les Subnets Publics (4.1). Permet (via 0.0.0.0/0 -> igw) aux instances (avec IP Publique/EIP) d'être jointes depuis Internet, et de répondre à Internet.

2. NAT Gateway (Passerelle NAT)

Rôle : Permet le trafic Sortant (Outbound) uniquement.

Usage : Permet aux instances d'un Subnet Privé (4.1) (ex: un RDS, un worker) d'accéder à Internet (ex: apt update, API externe) sans être accessibles (exposées) depuis Internet.

Flux (NAT)
  1. (Setup) Placer la NAT Gateway (qui a 1 EIP) dans le Subnet Public.
  2. (Setup) Configurer la Route Table du Subnet Privé : 0.0.0.0/0 -> nat-gw.
  3. (Flux) EC2 (Privé, 10.0.1.5) -> (apt update) -> Route Table (Privé) -> NAT Gateway (Public) -> IGW -> Internet.
4.3 Stockage : S3 (Simple Storage Service)

S3 est le service de Stockage d'Objets (Object Storage) (SaaS) d'AWS. C'sest le "disque dur d'Internet".

Il n'est pas un "disque dur" (Block Storage, comme EBS) (5.2). C'est un stockage Clé-Valeur (K/V) pour des fichiers (Objets) plats (non-hiérarchiques).

Concepts (Bucket, Key, Object)
  • Bucket (Saut) : Le "conteneur" (Dossier racine).
    • Le nom du Bucket doit être globalement unique (ex: ideo-lab-backups).
  • Object (Objet) : Le fichier (ex: image.jpg, backup.zip).
  • Key (Clé) : Le "chemin" (nom) unique de l'objet dans le Bucket.
    • (Ex: /backups/2025/mon_backup.zip)
    • (Piège) Les "dossiers" (/) n'existent pas. C'est juste une convention de nom (/) dans la Clé (Key).
Caractéristiques
  • Scalabilité/Durabilité : Illimité, Durabilité 99.999999999% (11 "neufs").
  • Accès : API (REST), CLI (aws s3), SDK (Boto3), ou HTTP (Site web statique).
  • Permissions : Géré par IAM (2.1) et/ou Bucket Policies (JSON).
  • Versioning : (Optionnel) Garde toutes les versions (DELETE, OVERWRITE) d'un objet.
5.1 Stockage : S3 (Classes de Stockage)

S3 optimise les coûts via les "Classes" (basées sur la fréquence d'accès).

Classes (Chaud vs Froid)
ClasseUsageCoût (Stockage)Coût (Récupération)
S3 StandardDonnées "Chaudes" (Accès fréquent).ÉlevéGratuit
S3 Standard-IA (Infrequent Access)Données "Tièdes" (Accès rare, mais rapide si besoin).MoyenPayant (au Go)
S3 Glacier FlexibleArchive "Froide" (Backups, Légal).Très FaiblePayant + Délai (Minutes/Heures)
S3 Glacier Deep ArchiveArchive "Congelée" (Long terme, > 7 ans).Extrêmement FaiblePayant + Délai (Heures, 12h+)
Règles de Cycle de Vie (Lifecycle Rules)

L'outil d'automatisation (natif S3) pour réduire les coûts.

Exemple de Règle :

  • (Jour 0) Upload -> S3 Standard (Chaud).
  • (Après 30 jours) Transition -> S3 Standard-IA (Tiède).
  • (Après 90 jours) Transition -> S3 Glacier Flexible (Froid/Archive).
  • (Après 365 jours) Expiration -> Supprimer (Delete).
5.2 Stockage : EBS (Elastic Block Store)

EBS est le service de Stockage Bloc (Block Storage). C'est le "disque dur C:" ou le /dev/sda1 de votre Instance EC2 (2.2).

Caractéristiques
  • Réseau (NAS-like) : C'est un "disque dur réseau" (pas local à l'hyperviseur), mais à très faible latence.
  • 1:1 (Attachment) : Un volume EBS est attaché à 1 seule EC2 à la fois.
  • Zonal (Lié à 1 AZ) : (Le piège) Un Volume EBS (ex: eu-west-3a) ne peut pas être attaché à une EC2 dans une autre AZ (ex: eu-west-3b). (Si l'AZ 3a tombe, l'EBS tombe avec).
Types (Courants)
  • gp3 (General Purpose SSD) : (Défaut) Le meilleur rapport prix/performance (SSD) pour la plupart des usages (Boot, Apps).
  • io2 (Provisioned IOPS SSD) : (Haute Perf) Pour les BDDs (IOPS critiques) (ex: Oracle, SQL Server).
EBS Snapshots (Sauvegardes)

Un Snapshot est un "backup" (instantané) d'un volume EBS, stocké (à moindre coût) sur S3. Les Snapshots sont incrémentiels.

5.3 BDD : RDS (Relational Database Service)

RDS est le service PaaS (1.1) (Managé) pour les bases de données relationnelles (SQL).

Ce qu'AWS gère (PaaS)

Vous ne gérez pas l'EC2, l'OS, ou l'installation de la BDD. AWS gère :

  • Le provisioning (installation).
  • Les Patchs (Mises à jour) de l'OS et de la BDD.
  • Les Backups (Sauvegardes) (automatisés, PITR).
  • La Haute Disponibilité (Multi-AZ).
Moteurs (Engines)
  • MySQL
  • PostgreSQL
  • MariaDB
  • Oracle
  • SQL Server (Microsoft)
  • Aurora (5.2) (AWS Natif)
HA (Multi-AZ) vs Read Replicas
  • Multi-AZ (HA / Failover) : (Cocher une case) AWS maintient un Standby (Esclave) synchrone dans une autre AZ (1.2). Si l'AZ A (Maître) tombe, RDS bascule (failover) automatiquement (DNS) vers l'AZ B (le Standby). (Pour la Fiabilité).
  • Read Replicas (Réplicas) : (Optionnel) Crée 1 (ou N) copie(s) (lecture seule) asynchrone(s). (Pour la Scalabilité (Lecture) -> Les Dashboards BI lisent sur le Replica, l'App écrit sur le Maître).
6.1 BDD : DynamoDB (NoSQL)

DynamoDB est le service NoSQL (Clé-Valeur / Document), entièrement managé (SaaS / Serverless) d'AWS.

Usage : Haute performance (latence milliseconde (single-digit)) à n'importe quelle échelle (ex: Panier Amazon.com, Caching de session).

Modèle de Données

Basé sur Tables, Items (lignes/documents), Attributs (colonnes).

Le seul requis est la Clé Primaire (PK) :

  • Clé Simple : Partition Key (PK) (ex: UserID) (Unique). (Usage : K/V store pur).
  • Clé Composite : Partition Key (PK) (ex: UserID) + Sort Key (SK) (ex: Timestamp). (Usage : Requêtes 1-N).
Tarification (RCU/WCU)

La performance (et le coût) est basée sur des "Unités" (approvisionnées ou On-Demand) :

  • RCU (Read Capacity Unit) : 1 RCU = 1 lecture/sec (Strongly Consistent, 4KB) ou 2 lectures/sec (Eventually Consistent, 4KB).
  • WCU (Write Capacity Unit) : 1 WCU = 1 écriture/sec (1KB).
6.2 Serverless : AWS Lambda

Lambda est le service de FaaS (Function as a Service) d'AWS. C'est le cœur du "Serverless".

Concept : Vous uploadez (zip) votre code (Fonction) (Python, Node.js, Go, Java...). AWS s'occupe de tout le reste (OS, Patchs, Scaling, HA).

Vous ne payez que lorsque le code s'exécute (facturé à la milliseconde et à la RAM allouée).

Triggers (Déclencheurs)

Une Lambda ne "tourne" pas (elle est "morte"). Elle est déclenchée (Triggered) par un événement (Event) :

  • API Gateway (6.3) : (Le plus courant) Un appel HTTP POST /login.
  • S3 (4.3) : (Courant) Un nouveau fichier (Objet) .jpg est uploadé sur un Bucket.
  • SQS (Queue) : (Courant) Un nouveau message arrive dans la file SQS.
  • DynamoDB Streams : (Courant) Une ligne a été modifiée dans DynamoDB.
  • CloudWatch Events / EventBridge : (Cron) "Exécuter cette Lambda tous les jours à 2h".
Le Rôle IAM (2.1)

(Sécurité) Une Lambda n'a (par défaut) aucune permission. Pour qu'une Lambda (ex: Trigger S3) puisse lire/écrire sur S3, elle doit assumer (Assume) un Rôle IAM qui lui donne la Policy (ex: Allow s3:GetObject).

6.3 Serverless : API Gateway

API Gateway (APIGW) est le service (SaaS) pour créer, publier, et sécuriser des APIs REST (ou WebSocket) "Serverless".

Architecture (Façade)

APIGW agit comme la "façade" (front-door). C'est le point d'entrée (Endpoint) HTTP public.

Il gère :

  • Le "Routage" (POST /users, GET /products/{id}).
  • L'Authentification (Clés API, IAM, Cognito (JWT)).
  • Le "Throttling" (Limitation de débit).
  • Le Caching.
Intégration (Backend)

Il transmet (proxy) la requête à un "Backend" :

  • Intégration Lambda (La plus courante) : POST /login -> (Trigger) -> Lambda login_function.
  • Intégration HTTP (Proxy) : GET / -> (Proxy) -> ALB (3.1) / EC2 (pour un monolithe).
  • Intégration AWS Service : (Rare) GET / -> (Proxy) -> API DynamoDB (directement).
7.1 Conteneurs : ECS (Elastic Container Service) & Fargate

ECS est l'orchestrateur de conteneurs (Docker) propriétaire d'AWS. (C'est l'alternative AWS à Kubernetes (7.2)).

Composants (Hiérarchie)
  1. Task Definition (Définition) : (Le "Plan") Un fichier JSON (similaire à docker-compose) qui décrit "comment" lancer un conteneur (Image Docker (ECR), CPU/RAM requis, Ports, Variables d'env).
  2. Task (Tâche) : (L'instance) Une instance (copie) en cours d'exécution (running) d'une "Task Definition".
  3. Service (Service) : (Le "Contrôleur") "Je veux N (ex: 3) copies de cette "Task Definition" (HA), et les attacher à cet ALB (3.1)". (Gère le "keep-alive" et le déploiement).
  4. Cluster (Cluster) : Le "Pool" de Compute (CPU/RAM) où les Tâches s'exécutent.
Type de Lancement (Cluster) : EC2 vs Fargate
1. Mode EC2 (Legacy/IaaS)

Vous (l'Admin) devez créer et gérer un ASG (3.2) d'instances EC2 (Linux + Agent ECS). ECS "place" (schedule) les Tâches (Containers) sur *vos* EC2.

Inconvénient : Vous gérez l'OS, les patchs, le "bin-packing" (optimisation des VMs).

2. Mode Fargate (Serverless/PaaS)

(Recommandé) Il n'y a pas de cluster EC2. Vous demandez juste au "Service" : "Je veux 3 Tâches (1vCPU, 2Go RAM)".

AWS (Fargate) provisionne (auto) le "Compute" (Micro-VMs) nécessaire (Serverless) pour exécuter ces 3 Tâches.

Avantage : Zéro gestion d'OS/EC2 (Serverless). (Similaire à Lambda).

7.2 Conteneurs : EKS (Elastic Kubernetes Service)

EKS est le service de Kubernetes (K8s) managé d'AWS.

C'est la solution si vous voulez (ou devez) utiliser l'API Kubernetes (open-source), au lieu de l'API propriétaire (ECS).

Architecture (Séparée)

EKS suit le modèle de responsabilité partagée de K8s :

1. Control Plane (Managé par AWS)

AWS gère (opère) le "Cerveau" de K8s (etcd, kube-api-server) pour vous (HA, Patchs, Scaling).

(Vous payez un coût fixe (ex: ~$0.10/h) pour ce Control Plane).

2. Data Plane (Managé par VOUS)

Vous (le Client) êtes responsable de fournir les "Muscles" (Workers) (les Nœuds Kubelet).

Options (Nœuds) :

  • Managed Node Groups (EC2) : (Le plus courant) AWS gère un ASG (3.2) d'instances EC2 (avec Kubelet) pour vous.
  • Fargate : (Serverless) Exécute les Pods K8s sur Fargate (similaire à ECS 7.1).
7.3 Monitoring : CloudWatch

CloudWatch est le service de monitoring (surveillance) natif d'AWS.

CloudWatch Metrics

Une base de données Time-Series (TSDB) qui collecte les métriques de tous les services AWS.

Exemples (Natif) :

  • EC2 : CPUUtilization (Utilisation CPU).
  • ELB : RequestCount (Nb requêtes), HTTPCode_Target_5XX (Erreurs 500).
  • RDS : DatabaseConnections, DiskQueueDepth.

Custom Metrics : Vous pouvez "push" (pousser) vos propres métriques (ex: "nb_utilisateurs_inscrits") via l'Agent ou l'API.

CloudWatch Logs

Le service de centralisation de logs (similaire à Splunk/ELK, mais plus simple).

  • Log Group (Groupe) : (Le "Dossier") (ex: /aws/lambda/ma_fonction, /var/log/syslog).
  • Log Stream (Flux) : (Le "Fichier") (ex: 1 flux par instance EC2, 1 flux par conteneur Lambda).

Usage : L'Agent CloudWatch (installé sur EC2) "lit" (tail) /var/log/nginx/access.log et l'envoie (PUSH) vers CloudWatch Logs. Les Lambdas y envoient leur stdout (console.log) nativement.

CloudWatch Alarms (Alarmes)

Le "déclencheur". C'est ce qui surveille une Métrique (Metric) et déclenche une Action.

Exemple (Alerte CPU) :

  • Condition (Metric) : SI CPUUtilization (EC2)
  • Seuil (Threshold) : EST > 90%
  • Période (Period) : PENDANT 5 minutes
  • État (State) : ALORS passer en état ALARM

Actions (Déclenchées par l'état ALARM) :

  • Action SNS (Notification) : Envoyer un email/SMS (via SNS).
  • Action EC2 (Auto-réparation) : Redémarrer (Reboot) l'instance EC2.
  • Action ASG (Scaling) : (Voir 3.2) Déclencher la politique de Scale-Out.