☁️ AWS (Amazon Web Services)
Guide complet IDEO-Lab sur les services fondamentaux (Compute, Storage, Network, IAM).
Concept : IaaS / PaaS / SaaS
Les 3 modèles de service Cloud (Responsabilité).
IaaS PaaS SaaSArchi Globale : Régions & AZ
Régions (Géographie) vs Zones de Dispo (Datacenters/HA).
Région AZ (Availability Zone)Tarification (Pricing)
On-Demand, Reserved Instances (RI), Savings Plans, Free Tier.
Pricing On-DemandSécurité : IAM (Le Cœur)
Users, Groups, Roles (le plus important), Policies (JSON).
IAM Rôle PolicyCompute : EC2 (Instances)
Le "serveur" (VM). Instances (t3.micro...), AMIs (OS).
EC2 IaaS InstanceCompute : Security Groups
Le "pare-feu" (Stateful) de l'EC2 (Port 22, 80, 443).
Security Group (SG) FirewallCompute : ELB (Load Balancer)
Application Load Balancer (ALB, L7), Target Groups.
ELB ALBCompute : Auto Scaling Group (ASG)
Scalabilité (CPU) & Auto-réparation (HA).
ASG Auto ScalingRéseau : VPC
Virtual Private Cloud (Votre réseau privé isolé).
VPC RéseauRéseau : Subnets (Public/Privé)
Sous-réseaux (Public vs Privé), Route Tables.
Subnet Route TableRéseau : IGW vs NAT Gateway
Internet Gateway (Entrant) vs NAT Gateway (Sortant).
IGW NAT GatewayStockage : S3 (Objets)
Simple Storage Service (Buckets, Keys, Objets).
S3 Stockage ObjetStockage : S3 (Classes)
Standard (Chaud) vs Glacier (Archive/Froid), Cycle de vie.
S3 GlacierStockage : EBS (Blocs)
Elastic Block Store (Le "disque dur" de l'EC2).
EBS Stockage BlocBDD : RDS (SQL Managé)
Relational DB Service (Postgres, MySQL...).
RDS SQL PaaSBDD : DynamoDB (NoSQL)
NoSQL (Clé-Valeur), Serverless, RCU/WCU.
DynamoDB NoSQLServerless : Lambda
Function-as-a-Service (FaaS). (Exécute du code).
Lambda Serverless FaaSServerless : API Gateway
Point d'entrée (Façade) API REST (Trigger pour Lambda).
API Gateway API RESTConteneurs : ECS & Fargate
Elastic Container Service (Orchestrateur AWS).
ECS FargateConteneurs : EKS
Elastic Kubernetes Service (K8s managé).
EKS KubernetesMonitoring : CloudWatch
Logs, Métriques (Metrics), Alarmes (Alarms).
CloudWatch Logs MetricsCes acronymes définissent le "Modèle de Responsabilité Partagée" (qui gère quoi ?).
| Modèle | Signification | Analogie (Pizza) | Exemples AWS | Vous Gérez... |
|---|---|---|---|---|
| On-Premise (Sur Site) | (DIY) | Fait Maison | (Votre Data Center) | Tout (Réseau, Stockage, Serveurs, OS, App, Données...) |
| IaaS | Infrastructure as a Service | Pizza Achetée (Surgelée) | EC2, VPC, EBS | L'OS, les Middleware, l'App, les Données. |
| PaaS | Platform as a Service | Pizza Livrée (Chaude) | RDS, Lambda, EKS, Beanstalk | L'App, les Données. (AWS gère l'OS, les patchs...). |
| SaaS | Software as a Service | Dîner au Restaurant | S3, DynamoDB, Gmail, Salesforce | (Rien) (Juste vos Données/Configuration). |
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)
- (Serveur "Origine") Votre site (ex: EC2 ou S3) est à Paris (Région).
- (Client) Un utilisateur à Sydney demande
image.jpg. - (CloudFront) La requête est routée vers l'Edge Location de Sydney (le plus proche).
- (Cache Miss) L'Edge de Sydney demande l'image à Paris (Origine) (1 fois).
- L'Edge de Sydney met en cache
image.jpget la sert à l'utilisateur (rapide). - (Utilisateur 2 à Sydney) Demande
image.jpg-> Reçoit la copie (Cache Hit) de Sydney (très rapide).
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èle | Description | Usage |
|---|---|---|
| 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$).
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")
| Principal | Description |
|---|---|
| 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)
- (Admin) Créer une Policy (2) (ex: "AllowReadMonBucket").
- (Admin) Créer un Rôle (1) (ex: "MonRoleEC2") qui fait confiance au Service EC2.
- (Admin) Attacher la "Policy" au "Rôle".
- (Admin) Lancer l'instance EC2 en lui attachant "MonRoleEC2".
Flux (Magique) :
- L'application (Python/Boto3 SDK) sur l'EC2 fait :
boto3.client('s3')(sans clés). - Le SDK "voit" qu'il est sur un EC2 avec un Rôle.
- Il appelle (automatiquement) le "Metadata Service" (local) d'AWS.
- AWS (STS) génère des clés temporaires (1h) (basées sur la Policy du Rôle).
- Le SDK utilise ces clés temporaires pour appeler S3.
Résultat : Zéro clé "hardcodée". Sécurité maximale.
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).
| Famille | Préfixe | Usage |
|---|---|---|
| Usage Général | t3, m5 | (Équilibré) Serveurs Web, Apps. (t3.micro = Free Tier). |
| Compute Optimized | c5, c6g | (CPU élevé) Batch processing, Encodage vidéo. |
| Memory Optimized | r5, r6g | (RAM élevée) Bases de données (ex: RDS), Caches (Redis). |
| GPU | g4, p3 | Machine 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)).
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 estDenypar défaut). - Niveau (Instance) : S'applique à l'instance (ENI), pas au Subnet.
Exemple (SG pour un Serveur Web)
| Règles ENTRANTES (Inbound) | |||
|---|---|---|---|
| Type | Protocole | Port | Source |
| SSH | TCP | 22 | 80.1.2.3/32 (Mon IP Admin) |
| HTTP | TCP | 80 | 0.0.0.0/0 (Internet) |
| HTTPS | TCP | 443 | 0.0.0.0/0 (Internet) |
| Règles SORTANTES (Outbound) | |||
|---|---|---|---|
| Type | Protocole | Port | Destination |
| All traffic | All | All | 0.0.0.0/0 (Défaut) |
ELB est le service de Load Balancer (Répartiteur de Charge) managé d'AWS.
Types de Load Balancers
| Type | Niveau (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.comALORSForwardversTarget 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.
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 :
- L'ASG utilise les Health Checks (Sondes) de l'ELB (3.1) (ou d'EC2).
- (Panne) L'EC2 (Instance 1) crash (l'OS plante).
- L'ELB (Health Check) marque l'Instance 1 "Unhealthy" (Malsain).
- L'ASG le détecte.
- L'ASG termine (Terminate) l'Instance 1 (morte).
- L'ASG lance (Launch) une nouvelle Instance (Instance 3) (basée sur le "Launch Template") pour respecter
Desired=2. - 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) :
- (Pic de trafic) Le CPU moyen des 2 instances passe à 80%.
- (Alarme CloudWatch)
CPU > 50%. - L'ASG lance (Launch) de nouvelles instances (ex: +2) (Total = 4).
- La charge (CPU) se répartit sur 4 instances et redescend à ~40%.
Flux (Scale-In) :
- (Nuit) Le CPU moyen tombe à 10%.
- (Alarme)
CPU < 50%. - 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")
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 :
- 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). - Région : Le VPC est limité à 1 Région.
- Subnets (4.1) : Vous "découpez" (slice) le bloc CIDR en sous-réseaux (Subnets).
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
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)
- (Setup) Placer la NAT Gateway (qui a 1 EIP) dans le Subnet Public.
- (Setup) Configurer la Route Table du Subnet Privé :
0.0.0.0/0 -> nat-gw. - (Flux) EC2 (Privé, 10.0.1.5) -> (
apt update) -> Route Table (Privé) -> NAT Gateway (Public) -> IGW -> Internet.
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).
- Le nom du Bucket doit être globalement unique (ex:
- 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).
- (Ex:
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.
S3 optimise les coûts via les "Classes" (basées sur la fréquence d'accès).
Classes (Chaud vs Froid)
| Classe | Usage | Coût (Stockage) | Coût (Récupération) |
|---|---|---|---|
| S3 Standard | Données "Chaudes" (Accès fréquent). | Élevé | Gratuit |
| S3 Standard-IA (Infrequent Access) | Données "Tièdes" (Accès rare, mais rapide si besoin). | Moyen | Payant (au Go) |
| S3 Glacier Flexible | Archive "Froide" (Backups, Légal). | Très Faible | Payant + Délai (Minutes/Heures) |
| S3 Glacier Deep Archive | Archive "Congelée" (Long terme, > 7 ans). | Extrêmement Faible | Payant + 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).
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.
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).
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).
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)
.jpgest 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).
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) -> Lambdalogin_function. - Intégration HTTP (Proxy) :
GET /-> (Proxy) -> ALB (3.1) / EC2 (pour un monolithe). - Intégration AWS Service : (Rare)
GET /-> (Proxy) -> API DynamoDB (directement).
ECS est l'orchestrateur de conteneurs (Docker) propriétaire d'AWS. (C'est l'alternative AWS à Kubernetes (7.2)).
Composants (Hiérarchie)
- 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). - Task (Tâche) : (L'instance) Une instance (copie) en cours d'exécution (
running) d'une "Task Definition". - 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).
- 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).
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).
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.
