☁️ GUIDE DEVOPS ULTIME 🐍

Amazon Web Services + Python pour Serveurs

☁️ AWS Cloud Expert 🐍 Python DevOps 🚀 Production Ready 👨‍💻 30 ans d'Expérience

Le guide complet pour maîtriser le Cloud et l'Automatisation
De débutant à expert - Scripts production + Certifications + Best Practices

📚 Table des Matières - Votre Parcours DevOps

Comment utiliser ce guide ?

  • 📖 Lecture séquentielle : Pour apprendre de A à Z
  • 🔍 Référence rapide : Utilisez Ctrl+F pour chercher
  • 💻 Pratique : Testez TOUS les exemples de code
  • 📱 Mobile-friendly : Consultable sur tablette/phone
  • 🖨️ Imprimable : Pour documentation terrain
  • 🔖 Bookmarkez : Ajoutez aux favoris par section
⏱️

Temps de Formation

Estimation pour maîtriser ce guide

  • Lecture complète : 20-30 heures
  • Pratique AWS : 40-60 heures
  • Pratique Python : 60-80 heures
  • Projets personnels : 100+ heures
  • TOTAL : 4-6 mois à temps partiel
🎯

Objectifs Finaux

Ce que vous saurez faire

  • ✅ Architecturer solutions AWS complètes
  • ✅ Automatiser infrastructure avec Python
  • ✅ Monitoring & alerting production
  • ✅ Déploiements automatisés CI/CD
  • ✅ Passer certifications AWS
  • ✅ Décrocher poste DevOps 50K€+

💼 Profil Visé

🌱 Débutant

Vous êtes :

  • Étudiant en informatique
  • Développeur junior
  • En reconversion IT

Ce guide vous permet :

  • Apprentissage complet de zéro
  • Exemples progressifs
  • Premier job DevOps garanti

📈 Intermédiaire

Vous êtes :

  • SysAdmin Linux
  • Développeur confirmé
  • Ops cherchant le DevOps

Ce guide vous permet :

  • Maîtriser cloud AWS
  • Automatiser avec Python
  • Évolution vers DevOps Senior

🚀 Avancé

Vous êtes :

  • DevOps expérimenté
  • Architecte Cloud
  • Tech Lead

Ce guide vous sert de :

  • Référence terrain quotidienne
  • Préparation certifications Pro
  • Bibliothèque de scripts production

☁️ PARTIE 1 : Amazon Web Services

Pourquoi AWS en premier ?

AWS représente 32% du marché cloud mondial. Maîtriser AWS = opportunités infinies. C'est la base technique que vous automatiserez ensuite avec Python.

🌟 Introduction au Cloud Computing

Qu'est-ce que le Cloud Computing ?

Le cloud computing est la fourniture à la demande de ressources informatiques (serveurs, stockage, bases de données, réseau, logiciels) via Internet, avec une tarification à l'usage.

🏢 Modèle Traditionnel

  • ❌ Achat serveurs physiques
  • ❌ Datacenter sur site
  • ❌ Investissement initial énorme
  • ❌ Maintenance 24/7
  • ❌ Scalabilité limitée
  • ❌ Coûts fixes importants

☁️ Modèle Cloud

  • ✅ Serveurs à la demande
  • ✅ Datacenters AWS mondiaux
  • ✅ Paiement à l'usage
  • ✅ AWS gère la maintenance
  • ✅ Scalabilité infinie
  • ✅ Économies 30-70%

📊 Les 3 Modèles de Service Cloud

Modèle Vous Gérez Provider Gère Exemples AWS Cas d'Usage
IaaS
(Infrastructure as a Service)
OS, Runtime, Apps, Data Serveurs, Stockage, Réseau EC2, S3, VPC Contrôle total, flexibilité max
PaaS
(Platform as a Service)
Apps, Data Tout le reste Elastic Beanstalk, RDS, Lambda Focus sur code, pas infra
SaaS
(Software as a Service)
Juste utilisation Tout WorkMail, Chime, QuickSight Application prête à l'emploi

🌍 Présence Mondiale AWS

📍 Régions AWS

  • 31 Régions géographiques
  • 99 Zones de Disponibilité
  • Présence sur 6 continents
  • Nouvelles régions chaque année

Régions principales :

  • 🇺🇸 us-east-1 (Virginie) - La plus ancienne
  • 🇪🇺 eu-west-1 (Irlande)
  • 🇫🇷 eu-west-3 (Paris) - Conformité RGPD
  • 🇸🇬 ap-southeast-1 (Singapour)

🏢 Zones de Disponibilité (AZ)

Chaque région contient minimum 3 AZ

  • Datacenters physiquement séparés
  • Connectés par fibre ultra-rapide
  • Isolation des pannes
  • Haute disponibilité garantie

Best Practice :

Toujours déployer sur minimum 2 AZ pour la haute disponibilité

💰 Modèle de Tarification AWS

Principes Fondamentaux

  1. Paiement à l'usage : Vous payez uniquement ce que vous consommez
  2. Pas de coût initial : Zéro investissement en capital
  3. Économies d'échelle : Les prix baissent régulièrement
  4. Réservations : Économisez jusqu'à 75% en vous engageant
Service Tarification Offre Gratuite
EC2 Par heure/seconde 750h/mois t2.micro (12 mois)
S3 Par GB stocké + transfert 5 GB (12 mois)
Lambda Par requête + durée exec 1M requêtes/mois (permanent)
RDS Par heure instance 750h/mois db.t2.micro (12 mois)

Mon conseil après 30 ans :

  • 🎁 Profitez du Free Tier : 12 mois gratuits pour apprendre
  • ⚠️ Configurez des alertes de billing dès le jour 1
  • 🏷️ Taggez TOUTES vos ressources : projet, environnement, propriétaire
  • 🔍 Utilisez AWS Cost Explorer : Analysez vos dépenses
  • 💡 Arrêtez ce que vous n'utilisez pas : EC2 dev le week-end par exemple

🚀 Créer votre Compte AWS

Étape 1 : Inscription

  • Allez sur aws.amazon.com
  • Cliquez "Créer un compte AWS"
  • Email + mot de passe fort
  • Carte bancaire requise (0€ facturé si Free Tier)

Étape 2 : Sécurisation Immédiate

CRITIQUE - À faire dans les 5 premières minutes :

  1. Activez MFA sur compte root
    • IAM > Tableau de bord > Activer MFA
    • Utilisez Google Authenticator ou Authy
    • SAUVEGARDEZ les codes de récupération
  2. Créez un utilisateur IAM admin
    • Ne JAMAIS utiliser root au quotidien
    • Créez groupe "Admins" avec policy AdministratorAccess
    • Créez votre utilisateur personnel
    • Activez MFA sur cet utilisateur aussi
  3. Configurez alerte de billing
    • CloudWatch > Alarmes de facturation
    • Définissez seuil (ex: 10€)
    • Recevez email si dépassement

Étape 3 : Installation AWS CLI

Sur Linux/Mac :

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" $ unzip awscliv2.zip $ sudo ./aws/install $ aws --version aws-cli/2.x.x Python/3.x.x Linux/x86_64

Sur Windows :

> msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi > aws --version

Configuration :

$ aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: eu-west-3 Default output format [None]: json

🖥️ Amazon EC2 - Elastic Compute Cloud

EC2

Serveurs Virtuels à la Demande

L'épine dorsale du cloud computing

EC2 (Elastic Compute Cloud) vous permet de louer des serveurs virtuels dans le cloud. C'est comme avoir un ordinateur dans un datacenter AWS que vous pouvez allumer, éteindre, et redimensionner à volonté.

💡 Cas d'Usage Réels

🌐 Hébergement Web

  • Sites WordPress
  • Applications Node.js/Python
  • API Backend
  • Serveurs de jeux

💾 Bases de Données

  • MySQL/PostgreSQL custom
  • MongoDB
  • Redis/Memcached
  • Elasticsearch

🔬 Calcul Intensif

  • Machine Learning
  • Rendu vidéo
  • Analyse Big Data
  • Simulations scientifiques

📋 Types d'Instances EC2

AWS propose plus de 400 types d'instances optimisées pour différents workloads. Voici les familles principales :

Famille Type Specs Exemple Usage Prix/h (Paris)
T3
Usage général
t3.micro 2 vCPU, 1 GB RAM Web léger, dev/test 0.012€
t3.medium 2 vCPU, 4 GB RAM Applications web 0.048€
C6i
Optimisé calcul
c6i.large 2 vCPU, 4 GB RAM HPC, batch processing 0.102€
R6i
Optimisé mémoire
r6i.large 2 vCPU, 16 GB RAM Bases de données, cache 0.151€
M6i
Équilibré
m6i.large 2 vCPU, 8 GB RAM Apps d'entreprise 0.115€
P4
GPU
p4d.24xlarge 96 vCPU, 8x A100 GPU Deep Learning, ML 37.688€

Comment choisir son type d'instance ?

  1. Application Web classique → T3 ou M6i
  2. Base de données → R6i (beaucoup de RAM)
  3. Traitement batch/calcul → C6i (CPU puissant)
  4. Machine Learning → P4/G5 (GPU)
  5. Dev/Test → T3.micro (Free Tier)

Règle d'or : Commencez petit (t3.micro), puis scalez selon les besoins réels mesurés !

🚀 Lancer votre Première Instance EC2

1️⃣ Via Console AWS (Interface Web)

  1. Connectez-vous à la console AWS
  2. Services > EC2 > Instances > Lancer une instance
  3. Nom : Mon-Premier-Serveur

2️⃣ Choix de l'AMI (Amazon Machine Image)

L'AMI est l'image du système d'exploitation.

  • Amazon Linux 2023 - Recommandé (gratuit, optimisé AWS)
  • Ubuntu Server 22.04 LTS
  • Windows Server 2022
  • Red Hat Enterprise Linux

Pour débuter, choisissez Amazon Linux 2023 64-bit (x86)

3️⃣ Type d'Instance

Sélectionnez t2.micro (éligible offre gratuite)

  • 1 vCPU
  • 1 GB RAM
  • 750 heures/mois gratuites (1ère année)

4️⃣ Paire de Clés SSH

CRUCIAL : Sans cette clé, vous ne pourrez JAMAIS vous connecter à votre instance !

  1. Cliquez "Créer une nouvelle paire de clés"
  2. Nom : ma-cle-ec2
  3. Type : RSA
  4. Format :
    • .pem (Linux/Mac)
    • .ppk (Windows avec PuTTY)
  5. Téléchargez et SAUVEGARDEZ précieusement

5️⃣ Groupe de Sécurité (Firewall)

Définissez les ports ouverts :

Type Port Source Usage
SSH 22 Mon IP Connexion SSH
HTTP 80 0.0.0.0/0 Site web
HTTPS 443 0.0.0.0/0 Site web sécurisé

Sécurité :

  • ❌ Ne JAMAIS ouvrir SSH (port 22) à 0.0.0.0/0 (tout Internet)
  • ✅ Limitez SSH à votre IP : VotreIP/32
  • ✅ Utilisez un bastion/VPN pour la production

6️⃣ Stockage

Par défaut : 8 GB gp3 (SSD)

  • ✅ Suffisant pour débuter
  • Gratuit jusqu'à 30 GB (Free Tier)
  • ✅ Cochez "Supprimer à la terminaison" (évite coûts résiduels)

7️⃣ Lancer l'Instance

Cliquez "Lancer l'instance"

⏱️ Patientez 1-2 minutes pour que l'instance démarre

✅ État : En cours d'exécution (vert)

🔌 Se Connecter à votre Instance

Méthode 1 : SSH depuis Linux/Mac

# 1. Donner les bonnes permissions à la clé chmod 400 ma-cle-ec2.pem # 2. Obtenir l'IP publique de votre instance (dans la console) # Exemple : 54.123.45.67 # 3. Se connecter ssh -i ma-cle-ec2.pem ec2-user@54.123.45.67 # Vous êtes connecté ! , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/'

Méthode 2 : EC2 Instance Connect (le plus simple !)

  1. Dans la console EC2, sélectionnez votre instance
  2. Cliquez "Se connecter"
  3. Onglet "EC2 Instance Connect"
  4. Cliquez "Se connecter"
  5. 💻 Un terminal s'ouvre dans votre navigateur !

Méthode 3 : Windows avec PuTTY

  1. Téléchargez PuTTY : putty.org
  2. Convertissez .pem en .ppk avec PuTTYgen
  3. Dans PuTTY :
    • Host : ec2-user@54.123.45.67
    • Port : 22
    • Connection > SSH > Auth : Chargez votre .ppk
  4. Cliquez "Open"

🚀 Premier Projet : Déployer un Serveur Web

Objectif : Installer Apache et afficher une page web

# 1. Mettre à jour le système sudo yum update -y # 2. Installer Apache (serveur web) sudo yum install httpd -y # 3. Démarrer Apache sudo systemctl start httpd # 4. Activer Apache au démarrage sudo systemctl enable httpd # 5. Vérifier que c'est démarré sudo systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded Active: active (running) # 6. Créer une page web personnalisée echo "<html> <head><title>Mon Premier Serveur AWS</title></head> <body style='font-family: Arial; text-align: center; padding: 50px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white;'> <h1>🚀 Mon Premier Serveur AWS EC2 !</h1> <p>Hébergé sur Amazon Web Services</p> <p>IP Publique: $(curl -s http://169.254.169.254/latest/meta-data/public-ipv4)</p> </body> </html>" | sudo tee /var/www/html/index.html # 7. Testez dans votre navigateur : # http://54.123.45.67 (votre IP publique)

🎊 Félicitations !

Vous venez de déployer votre premier serveur web sur AWS !

Visitez http://VOTRE-IP-PUBLIQUE dans votre navigateur pour voir votre site.

💰 Gestion des Coûts EC2

Modèle Économie Engagement Usage Idéal
On-Demand Prix de base Aucun Charges imprévisibles, tests
Reserved Instances Jusqu'à 72% 1 ou 3 ans Workloads stables (prod DB)
Spot Instances Jusqu'à 90% Aucun (interruptible) Batch, Big Data, CI/CD
Savings Plans Jusqu'à 66% 1 ou 3 ans Engagement flexibles ($/h)

Stratégie d'optimisation coûts (30 ans d'expérience) :

  1. Dev/Test : Spot Instances (90% moins cher) ou arrêtez la nuit/week-end
  2. Production stable : Reserved Instances (1-3 ans)
  3. Production variable : Mix On-Demand + Savings Plans
  4. Batch processing : Spot Instances avec auto-retry
  5. Surveillez : AWS Cost Explorer + Trusted Advisor

🛑 Arrêter et Terminer une Instance

⏸️ Arrêter (Stop)

  • L'instance est éteinte
  • Données conservées sur EBS
  • Pas de frais de calcul
  • Frais de stockage EBS (~0.11€/GB/mois)
  • ✅ Redémarrable quand vous voulez
  • ⚠️ L'IP publique change au redémarrage

❌ Terminer (Terminate)

  • L'instance est SUPPRIMÉE
  • Données perdues (sauf EBS non supprimé)
  • Aucun frais
  • ❌ IRRÉVERSIBLE

Production : Activez "Termination Protection" !

# Via AWS CLI # Arrêter aws ec2 stop-instances --instance-ids i-1234567890abcdef0 # Démarrer aws ec2 start-instances --instance-ids i-1234567890abcdef0 # Terminer (ATTENTION !) aws ec2 terminate-instances --instance-ids i-1234567890abcdef0

📦 Amazon S3 - Simple Storage Service

S3

Stockage Objet Illimité

Le disque dur d'Internet

S3 est un service de stockage d'objets ultra-scalable. Vous pouvez y stocker et récupérer n'importe quelle quantité de données, à tout moment, depuis n'importe où sur le web.

Chiffres impressionnants :

  • 🌟 Plus de 100 billions d'objets stockés
  • 📊 99.999999999% (11 neuf) de durabilité
  • 💪 Peut traiter millions de requêtes par seconde
  • 🌍 Utilisé par Netflix, Airbnb, NASA, Reddit...

💡 Cas d'Usage S3

📸 Médias & Assets

  • Photos & vidéos
  • Audio & musique
  • Documents PDF
  • Assets d'applications

🌐 Hébergement Web

  • Sites statiques
  • Applications React/Vue
  • CDN avec CloudFront
  • Landing pages

💾 Backups & Archives

  • Sauvegardes DB
  • Logs d'applications
  • Archives long terme
  • Disaster recovery

📊 Big Data

  • Data Lakes
  • Analytics
  • Machine Learning datasets
  • Data warehousing

🧩 Concepts Fondamentaux

🪣 Buckets (Seaux)

Un bucket est un conteneur pour vos objets.

  • Nom unique mondialement (tous utilisateurs AWS)
  • 3-63 caractères, minuscules uniquement
  • Pas d'espaces, pas de _ (tirets - OK)
  • Exemple : mon-site-web-2024
  • Existe dans une région spécifique

📄 Objects (Objets)

Un objet = un fichier stocké dans S3

  • Clé (Key) : Le "chemin" du fichier
  • Valeur (Value) : Le contenu (0 byte à 5 TB)
  • Métadonnées : Infos sur l'objet
  • Version ID : Si versioning activé
  • Exemple clé : images/2024/photo.jpg

🚀 Créer et Utiliser un Bucket S3

1️⃣ Créer un Bucket

Via Console :

  1. Console AWS > S3 > Créer un compartiment
  2. Nom : mon-premier-bucket-2024
  3. Région : eu-west-3 (Paris)
  4. Bloquer tout accès public : COCHÉ ✅
  5. Cliquez "Créer"

Via AWS CLI :

# Créer bucket aws s3 mb s3://mon-premier-bucket-2024 --region eu-west-3 # Lister vos buckets aws s3 ls

2️⃣ Uploader des Fichiers

Via Console :

  1. Cliquez sur votre bucket
  2. Bouton "Téléverser"
  3. Glissez-déposez vos fichiers
  4. Cliquez "Téléverser"

Via AWS CLI :

# Upload un fichier aws s3 cp monfichier.pdf s3://mon-premier-bucket-2024/ # Upload avec un chemin personnalisé aws s3 cp photo.jpg s3://mon-premier-bucket-2024/images/2024/photo.jpg # Upload d'un dossier complet aws s3 cp ./mon-site/ s3://mon-premier-bucket-2024/ --recursive # Sync (synchronisation intelligente) aws s3 sync ./mon-site/ s3://mon-premier-bucket-2024/

3️⃣ Télécharger des Fichiers

# Download un fichier aws s3 cp s3://mon-premier-bucket-2024/monfichier.pdf ./ # Download tout un dossier aws s3 cp s3://mon-premier-bucket-2024/images/ ./images/ --recursive # Sync depuis S3 vers local aws s3 sync s3://mon-premier-bucket-2024/ ./backup-local/

4️⃣ Lister et Supprimer

# Lister contenu bucket aws s3 ls s3://mon-premier-bucket-2024/ # Lister de manière récursive aws s3 ls s3://mon-premier-bucket-2024/ --recursive # Supprimer un fichier aws s3 rm s3://mon-premier-bucket-2024/monfichier.pdf # Supprimer un dossier aws s3 rm s3://mon-premier-bucket-2024/images/ --recursive # Vider complètement un bucket aws s3 rm s3://mon-premier-bucket-2024/ --recursive # Supprimer le bucket (doit être vide) aws s3 rb s3://mon-premier-bucket-2024

🌐 Héberger un Site Web Statique sur S3

🎯 Projet : Déployer un site HTML sur S3

Étape 1 : Créer votre site

<!-- index.html --> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <title>Mon Site sur AWS S3</title> <style> body { font-family: Arial; text-align: center; padding: 50px; background: linear-gradient(135deg, #667eea, #764ba2); color: white; } h1 { font-size: 3em; } </style> </head> <body> <h1>🚀 Mon Premier Site sur AWS S3 !</h1> <p>Hébergé pour quelques centimes par mois</p> <p>Scalable à l'infini, disponibilité 99.99%</p> </body> </html>

Étape 2 : Upload sur S3

# Créer un bucket pour le site aws s3 mb s3://mon-site-web-demo # Upload le fichier aws s3 cp index.html s3://mon-site-web-demo/ --acl public-read

Étape 3 : Activer l'hébergement web

  1. Console S3 > Votre bucket > Propriétés
  2. Descendez jusqu'à "Hébergement de site web statique"
  3. Cliquez "Modifier"
  4. Activez l'hébergement
  5. Document d'index : index.html
  6. Document d'erreur : error.html (optionnel)
  7. Enregistrez

Étape 4 : Rendre le bucket public

Attention : Ceci rend TOUT le contenu public. À n'utiliser que pour sites web.

  1. Onglet "Autorisations"
  2. Décochez "Bloquer tous les accès publics"
  3. Confirmez la modification
  4. Ajoutez cette Politique de compartiment :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::mon-site-web-demo/*" } ] }

🎊 Site en ligne !

URL : http://mon-site-web-demo.s3-website-eu-west-3.amazonaws.com

Pour un nom de domaine personnalisé, ajoutez Route 53 + CloudFront

🏛️ Classes de Stockage S3

Classe Durabilité Disponibilité Prix/GB (Paris) Usage
S3 Standard 99.999999999% 99.99% 0.023€ Données fréquemment accédées
S3 Intelligent-Tiering 99.999999999% 99.9% 0.023€ + auto Accès imprévisible (auto-optimisation)
S3 Standard-IA 99.999999999% 99.9% 0.0125€ Accès peu fréquent (backups mensuels)
S3 One Zone-IA 99.999999999%* 99.5% 0.01€ Données recréables, 1 seule AZ
S3 Glacier Instant 99.999999999% 99.9% 0.004€ Archives (récup instantanée)
S3 Glacier Flexible 99.999999999% 99.99% 0.0036€ Archives (récup 1-5min à 12h)
S3 Glacier Deep Archive 99.999999999% 99.99% 0.00099€ Archives long terme (12-48h récup)

Stratégie d'optimisation des coûts S3 :

  1. Données chaudes (accès quotidien) : S3 Standard
  2. Logs d'application : S3 Intelligent-Tiering (auto-gestion)
  3. Backups mensuels : S3 Standard-IA
  4. Archives légales/compliance : S3 Glacier Deep Archive
  5. Utilisez Lifecycle Rules pour transitions automatiques

🔄 Lifecycle Policies (Règles de Cycle de Vie)

Automatisez la transition des objets entre classes de stockage

Exemple de règle :

  • 📅 Jours 0-30 : S3 Standard (accès fréquent)
  • 📅 Jours 30-90 : Transition vers S3 Standard-IA
  • 📅 Jours 90-365 : Transition vers S3 Glacier Flexible
  • 📅 Après 2 ans : Glacier Deep Archive
  • 📅 Après 7 ans : Suppression automatique

Configuration via Console :

  1. Bucket > Gestion > Règles de cycle de vie
  2. Créer une règle
  3. Définir le filtre (préfixe, tags)
  4. Ajouter transitions et expirations

💰 Économie potentielle : 70-90% sur 1 an !

🔐 Sécurité S3

🔒 Chiffrement

1. Au repos (Server-Side Encryption) :

  • SSE-S3 : Clés gérées par AWS (gratuit, par défaut)
  • SSE-KMS : AWS Key Management Service (audit complet)
  • SSE-C : Vos propres clés (vous gérez)

2. En transit :

  • HTTPS/TLS (forcé par défaut)
  • Politique pour bloquer HTTP

👥 Contrôle d'Accès

  • IAM Policies : Qui (utilisateur) peut faire quoi
  • Bucket Policies : Règles au niveau bucket
  • ACLs : Ancien système (legacy)
  • Pre-signed URLs : Accès temporaire sécurisé

⚠️ Règles de Sécurité Absolues :

  • ❌ Ne rendez JAMAIS public un bucket contenant données sensibles
  • ❌ N'utilisez JAMAIS "Principal": "*" en production
  • ✅ Activez le chiffrement par défaut
  • ✅ Activez le versioning (protection contre suppression accidentelle)
  • ✅ Activez les logs d'accès S3
  • ✅ Utilisez MFA Delete pour objets critiques

⚡ Performances S3

Caractéristiques de Performance

  • 🚀 3 500 PUT/COPY/POST/DELETE par seconde par préfixe
  • 🚀 5 500 GET/HEAD par seconde par préfixe
  • 📊 Pas de limite sur le nombre de préfixes
  • 💾 Fichiers jusqu'à 5 TB

Optimisations Performance :

  • 🔤 Préfixes multiples : Distribuez vos objets (2024/01/, 2024/02/, etc.)
  • S3 Transfer Acceleration : Upload via CloudFront (50% plus rapide)
  • 📦 Multipart Upload : Fichiers > 100 MB
  • 🌐 CloudFront CDN : Cache global pour GET

🐍 PARTIE 2 : Python pour Serveurs

Pourquoi Python pour le DevOps ?

  • ✅ Préinstallé sur 99% des serveurs Linux
  • ✅ Syntaxe simple et lisible = maintenance facile
  • ✅ Bibliothèques puissantes pour sys admin
  • ✅ SDK AWS officiel (boto3)
  • ✅ Communauté DevOps énorme
  • ✅ Automatisation rapide de tâches complexes

📦 Setup Environnement Python DevOps

pip install --upgrade pip pip install boto3 paramiko fabric psutil requests docker pip install ansible kubernetes pyyaml jinja2 pip install pymongo redis mysql-connector-python psycopg2-binary pip install prometheus-client influxdb elasticsearch

🔧 Bibliothèques Essentielles

Bibliothèque Catégorie Usage Principal
boto3 AWS SDK officiel AWS pour Python
paramiko SSH Connexions SSH/SFTP
fabric Déploiement Exécution commandes sur serveurs distants
psutil Système Monitoring CPU, RAM, disque, processus
requests HTTP/API Requêtes HTTP, appels API
docker Containers Gestion Docker via Python

✅ Structure de Projet Recommandée :

devops-scripts/ ├── config/ │ ├── servers.yaml # Config serveurs │ ├── aws_config.yaml # Config AWS │ └── secrets.yaml # À gitignore ! ├── scripts/ │ ├── monitoring/ │ │ ├── system_monitor.py │ │ └── service_monitor.py │ ├── deployment/ │ │ ├── deploy_web.py │ │ └── deploy_api.py │ ├── backup/ │ │ ├── backup_databases.py │ │ └── backup_files.py │ └── aws/ │ ├── ec2_manager.py │ └── s3_manager.py ├── libs/ │ └── utils.py # Fonctions réutilisables ├── logs/ # Logs des scripts ├── tests/ # Tests unitaires ├── requirements.txt ├── .gitignore └── README.md

🔗 Boto3 - AWS SDK pour Python

🐍☁️

Contrôlez AWS avec Python

Automatisez TOUT sur AWS

Boto3 est le SDK AWS officiel pour Python. Il vous permet de créer, configurer et gérer programmatiquement TOUS les services AWS.

🚀 Premier Script Boto3

#!/usr/bin/env python3 """ Script de base Boto3 - Lister vos instances EC2 """ import boto3 from datetime import datetime # Créer client EC2 ec2 = boto3.client('ec2', region_name='eu-west-3') # Lister toutes les instances response = ec2.describe_instances() print(f"\n{'='*60}") print(f"🖥️ VOS INSTANCES EC2") print(f"{'='*60}\n") for reservation in response['Reservations']: for instance in reservation['Instances']: instance_id = instance['InstanceId'] instance_type = instance['InstanceType'] state = instance['State']['Name'] # Récupérer le nom depuis les tags name = "Sans nom" if 'Tags' in instance: for tag in instance['Tags']: if tag['Key'] == 'Name': name = tag['Value'] status_icon = "✅" if state == 'running' else "⏸️" print(f"{status_icon} {name}") print(f" ID: {instance_id}") print(f" Type: {instance_type}") print(f" État: {state}\n")
$ python list_ec2.py ============================================================ 🖥️ VOS INSTANCES EC2 ============================================================ ✅ Web-Server-Prod ID: i-0123456789abcdef0 Type: t3.medium État: running ⏸️ Dev-Test-Server ID: i-abcdef0123456789 Type: t2.micro État: stopped

🛠️ Script Complet : Gestionnaire EC2 Automatisé

#!/usr/bin/env python3 """ Gestionnaire EC2 complet avec Boto3 Fonctionnalités : Lister, Démarrer, Arrêter, Créer, Terminer """ import boto3 import sys from datetime import datetime class EC2Manager: def __init__(self, region='eu-west-3'): self.ec2_client = boto3.client('ec2', region_name=region) self.ec2_resource = boto3.resource('ec2', region_name=region) self.region = region def list_instances(self): """Liste toutes les instances""" instances = self.ec2_resource.instances.all() print(f"\n{'='*80}") print(f"🖥️ INSTANCES EC2 - {self.region}") print(f"{'='*80}\n") for instance in instances: tags = {tag['Key']: tag['Value'] for tag in instance.tags or []} name = tags.get('Name', 'Sans nom') state = instance.state['Name'] icon = { 'running': '✅', 'stopped': '⏸️', 'pending': '🔄', 'terminating': '🗑️' }.get(state, '❓') print(f"{icon} {name}") print(f" ID: {instance.id}") print(f" Type: {instance.instance_type}") print(f" État: {state}") print(f" IP Publique: {instance.public_ip_address or 'N/A'}") print(f" Lancée le: {instance.launch_time.strftime('%Y-%m-%d %H:%M')}\n") def start_instance(self, instance_id): """Démarre une instance""" try: print(f"\n🚀 Démarrage de {instance_id}...") self.ec2_client.start_instances(InstanceIds=[instance_id]) print(f"✅ Instance {instance_id} en cours de démarrage") except Exception as e: print(f"❌ Erreur: {e}") def stop_instance(self, instance_id): """Arrête une instance""" try: print(f"\n⏸️ Arrêt de {instance_id}...") self.ec2_client.stop_instances(InstanceIds=[instance_id]) print(f"✅ Instance {instance_id} en cours d'arrêt") except Exception as e: print(f"❌ Erreur: {e}") def create_instance(self, name, instance_type='t2.micro', ami_id=None): """Crée une nouvelle instance""" # AMI Amazon Linux 2023 (à adapter selon région) if not ami_id: ami_id = 'ami-0302f42a44bf53a45' # eu-west-3 try: print(f"\n🔨 Création de l'instance '{name}'...") instances = self.ec2_resource.create_instances( ImageId=ami_id, InstanceType=instance_type, MinCount=1, MaxCount=1, TagSpecifications=[ { 'ResourceType': 'instance', 'Tags': [ {'Key': 'Name', 'Value': name}, {'Key': 'CreatedBy', 'Value': 'Python-Boto3'} ] } ] ) instance = instances[0] print(f"✅ Instance créée : {instance.id}") print(f"⏳ En attente du démarrage...") instance.wait_until_running() instance.reload() print(f"✅ Instance {name} en cours d'exécution") print(f" IP Publique : {instance.public_ip_address}") return instance.id except Exception as e: print(f"❌ Erreur création: {e}") return None def terminate_instance(self, instance_id, confirm=False): """Supprime définitivement une instance""" if not confirm: print(f"\n⚠️ ATTENTION: Suppression IRRÉVERSIBLE de {instance_id}") response = input("Tapez 'DELETE' pour confirmer: ") if response != 'DELETE': print("Annulé.") return try: print(f"\n🗑️ Suppression de {instance_id}...") self.ec2_client.terminate_instances(InstanceIds=[instance_id]) print(f"✅ Instance en cours de suppression") except Exception as e: print(f"❌ Erreur: {e}") def get_instance_cost(self, instance_id): """Estime le coût mensuel d'une instance""" instance = self.ec2_resource.Instance(instance_id) # Prix approximatifs (à actualiser) prices = { 't2.micro': 0.012, 't2.small': 0.024, 't2.medium': 0.048, 't3.micro': 0.011, 't3.medium': 0.045, } price_per_hour = prices.get(instance.instance_type, 0.05) monthly_cost = price_per_hour * 730 # ~730h/mois print(f"\n💰 Coût estimé pour {instance_id}:") print(f" Type: {instance.instance_type}") print(f" Coût horaire: {price_per_hour}€") print(f" Coût mensuel (24/7): {monthly_cost:.2f}€") if __name__ == "__main__": manager = EC2Manager() # Menu interactif while True: print(f"\n{'='*60}") print("🖥️ GESTIONNAIRE EC2") print(f"{'='*60}") print("1. Lister instances") print("2. Démarrer instance") print("3. Arrêter instance") print("4. Créer instance") print("5. Supprimer instance") print("6. Estimer coûts") print("0. Quitter") choice = input("\nVotre choix: ") if choice == '1': manager.list_instances() elif choice == '2': instance_id = input("ID instance: ") manager.start_instance(instance_id) elif choice == '3': instance_id = input("ID instance: ") manager.stop_instance(instance_id) elif choice == '4': name = input("Nom instance: ") manager.create_instance(name) elif choice == '5': instance_id = input("ID instance: ") manager.terminate_instance(instance_id) elif choice == '6': instance_id = input("ID instance: ") manager.get_instance_cost(instance_id) elif choice == '0': break

🗺️ Roadmap Complet : 12 Mois vers l'Excellence DevOps

Parcours structuré basé sur 30 ans d'expérience terrain

Suivez ce plan et dans 12 mois vous serez DevOps opérationnel, certifié AWS, et employable à 50K€+

📅 Mois 1-3 : Fondations

Semaines 1-4 : AWS Basics

  • ✅ Créer compte AWS Free Tier
  • ✅ Sécuriser compte (MFA, IAM users)
  • ✅ Lancer première instance EC2
  • ✅ Créer buckets S3, uploader fichiers
  • ✅ Créer première fonction Lambda
  • 📚 Objectif : Comprendre EC2, S3, Lambda

Semaines 5-8 : Python Basics

  • ✅ Installer Python 3.11+
  • ✅ Maîtriser syntaxe de base
  • ✅ Modules : os, sys, subprocess
  • ✅ Premier script de monitoring système
  • 📚 Objectif : Scripts système simples

Semaines 9-12 : Intégration AWS + Python

  • ✅ Installer boto3
  • ✅ Lister vos ressources AWS
  • ✅ Automatiser création EC2
  • ✅ Upload automatique vers S3
  • 📚 Objectif : Gérer AWS via Python

🎯 Livrable fin Mois 3 :

Script Python qui crée une instance EC2, installe Apache, et upload logs vers S3

📅 Mois 4-6 : Compétences Intermédiaires

Semaines 13-16 : Réseaux & Sécurité

  • ✅ Créer VPC complet
  • ✅ Subnets publics/privés
  • ✅ Security Groups avancés
  • ✅ Maîtriser IAM (users, groups, policies)
  • 📚 Objectif : Architecture réseau sécurisée

Semaines 17-20 : Bases de Données

  • ✅ Créer instance RDS MySQL
  • ✅ Connexion depuis EC2
  • ✅ Backups automatisés RDS
  • ✅ Scripts Python backup DB vers S3
  • 📚 Objectif : Gérer données en production

Semaines 21-24 : Monitoring & Logs

  • ✅ CloudWatch : métriques, alarmes
  • ✅ Logs centralisés
  • ✅ Script Python d'analyse de logs
  • ✅ Alertes email/Slack automatiques
  • 📚 Objectif : Observabilité complète

🎯 Livrable fin Mois 6 :

Infrastructure 3-tiers complète : VPC + EC2 (web) + RDS (db) + monitoring + backups automatiques

📅 Mois 7-9 : Niveau Avancé

Semaines 25-28 : Containers & Orchestration

  • ✅ Maîtriser Docker
  • ✅ ECS (Elastic Container Service)
  • ✅ ECR (registre d'images)
  • ✅ Déploiement applications containerisées
  • 📚 Objectif : Moderniser déploiements

Semaines 29-32 : Infrastructure as Code

  • ✅ CloudFormation basics
  • ✅ Terraform (alternative)
  • ✅ Versionner l'infrastructure
  • ✅ Déploiements reproductibles
  • 📚 Objectif : Infra = Code

Semaines 33-36 : CI/CD

  • ✅ CodePipeline + CodeBuild
  • ✅ Déploiement automatique sur push Git
  • ✅ Tests automatisés
  • ✅ Blue/Green deployments
  • 📚 Objectif : Delivery automatisée

🎯 Livrable fin Mois 9 :

Pipeline CI/CD complet : Git push → Tests auto → Build Docker → Deploy ECS → Tests smoke → Go live

📅 Mois 10-12 : Certification & Job Ready

Semaines 37-40 : Préparation Certification

  • ✅ Révision complète du guide
  • ✅ Practice exams (Tutorials Dojo)
  • ✅ Whitepapers AWS officiels
  • ✅ FAQs de tous les services
  • 🎓 Objectif : AWS Certified Solutions Architect Associate

Semaines 41-44 : Projet Portfolio

  • ✅ Créer 3 projets GitHub publics :
    • 1. Infrastructure AWS complète (Terraform)
    • 2. Scripts Python DevOps (monitoring, deploy, backup)
    • 3. App full-stack avec CI/CD
  • ✅ Documentation professionnelle
  • ✅ Diagrammes architecture
  • 📚 Objectif : Portfolio solide

Semaines 45-48 : Job Hunting

  • ✅ CV optimisé DevOps/AWS
  • ✅ LinkedIn avec badge AWS Certified
  • ✅ Candidatures : 5-10 offres/jour
  • ✅ Préparation entretiens techniques
  • 💼 Objectif : Job DevOps 45-55K€

🎊 FIN MOIS 12 - VOUS ÊTES DEVOPS !

  • ✅ Certifié AWS Solutions Architect Associate
  • ✅ 3 projets GitHub publics
  • ✅ Maîtrise Python + AWS + Docker + CI/CD
  • ✅ Prêt pour postes : DevOps Engineer, Cloud Engineer, SRE
  • 💰 Salaire visé : 45-60K€ (junior/confirmé)

📊 Tableau Récapitulatif

Période Focus Compétences Acquises Livrable
Mois 1-3 Fondations AWS basics, Python basics, Boto3 Script automation EC2+S3
Mois 4-6 Intermédiaire VPC, RDS, IAM, Monitoring Infra 3-tiers complète
Mois 7-9 Avancé Docker, IaC, CI/CD Pipeline complet
Mois 10-12 Certification & Job Cert AWS, Portfolio, Entretiens Premier job DevOps !

🎓 Stratégie de Certification AWS

🎯 Parcours Recommandé

1️⃣ Cloud Practitioner (Optionnel)

Mois 3 - Si vous êtes débutant complet

  • Durée : 90 min
  • 65 questions
  • Prix : 100 USD
  • Score : 700/1000

2️⃣ Solutions Architect Associate ⭐

Mois 10 - Votre OBJECTIF PRINCIPAL

  • Durée : 130 min
  • 65 questions
  • Prix : 150 USD
  • Score : 720/1000
  • La plus valorisée !

3️⃣ Developer Associate (Année 2)

6 mois après SAA - Si développeur

4️⃣ Solutions Architect Pro (Année 3)

2-3 ans expérience - Niveau expert

  • Durée : 180 min
  • Prix : 300 USD
  • Salaire : +15-20K€

📚 Ressources Préparation

✅ Indispensables (Gratuit)

  • Ce guide complet
  • AWS Skill Builder (cours officiels)
  • AWS Whitepapers
  • FAQs de chaque service
  • Free Tier pour pratiquer

💰 Payant (Recommandé)

  • Tutorials Dojo (~15€)
    • Practice exams excellents
  • Stephane Maarek Udemy (~15€)
    • Cours vidéo référence
  • 📝 Examen blanc officiel AWS (20 USD)
    • À faire 1 semaine avant

Budget total préparation :

  • Cours + Practice exams : 50€
  • Examen officiel : 150 USD (~140€)
  • Total : ~190€
  • ROI : +15 000€/an de salaire 🚀

⏰ Planning 12 Semaines

  • Semaines 1-4 : Cours vidéo (3h/semaine)
  • Semaines 5-8 : Pratique Free Tier (5h/semaine)
  • Semaines 9-11 : Practice exams (10h/semaine)
  • Semaine 12 : Révision finale + Examen

💡 Conseils Exam Day

✅ FAIRE

  • Marquer questions difficiles
  • Éliminer 2 mauvaises réponses
  • Chercher mot-clé dans question
  • Gérer temps : 2min/question max
  • Relire questions marquées à la fin

⚠️ PIÈGES

  • "Most cost-effective" ≠ "Best"
  • Différence SG (stateful) vs NACL
  • EBS vs EFS vs S3
  • Multi-AZ vs Read Replicas
  • IAM Roles vs Users

ℹ️ ASTUCES

  • AWS préfère solutions managées
  • "Highly available" = Multi-AZ
  • "Real-time" = Kinesis Data Streams
  • "Serverless" = Lambda
  • En cas de doute, choisir sécurité

⭐ Best Practices Production - 30 Ans d'Expérience

Ces règles sont le fruit de milliers d'heures en production

Respectez-les religieusement et vous éviterez 90% des problèmes

🔐 Sécurité

✅ À FAIRE ABSOLUMENT

  • ✅ MFA sur TOUS les comptes (root + IAM)
  • ✅ Principe du moindre privilège (IAM)
  • ✅ Chiffrement au repos ET en transit
  • ✅ Rotation clés tous les 90 jours
  • ✅ Logs d'audit activés (CloudTrail)
  • ✅ Security Groups restrictifs
  • ✅ VPC privés pour données sensibles
  • ✅ Secrets dans Secrets Manager/Vault
  • ✅ Scans vulnérabilités réguliers
  • ✅ Backups chiffrés hors région

❌ À NE JAMAIS FAIRE

  • ❌ Hardcoder credentials dans code
  • ❌ Commiter secrets dans Git
  • ❌ SSH port 22 ouvert à 0.0.0.0/0
  • ❌ Utiliser compte root au quotidien
  • ❌ Permissions *:* en prod
  • ❌ Buckets S3 publics (sauf web)
  • ❌ Mots de passe par défaut
  • ❌ Pas de backups
  • ❌ Logs désactivés
  • ❌ Une seule région

💰 Optimisation des Coûts

  1. Taggez TOUT : Projet, Environnement, Propriétaire, CostCenter
  2. Alertes de facturation : Seuils à 50%, 80%, 100% du budget
  3. Analysez Cost Explorer : Hebdomadaire minimum
  4. Arrêtez instances inutilisées : Dev/test la nuit et week-end
  5. Reserved Instances : Pour workloads stables (économie 40-70%)
  6. Spot Instances : Pour batch/analytics (économie 90%)
  7. Right-sizing : T3.large surdimensionné ? Passez à T3.medium
  8. S3 Lifecycle : Transition automatique vers classes moins chères
  9. Supprimez snapshots anciens : Automatisez la rotation
  10. CloudFront : Réduisez coûts transfert de données

🏗️ Architecture

Principes du Well-Architected Framework

Pilier Principe Exemple Concret
Operational Excellence Automatisez tout CI/CD, IaC, monitoring auto
Security Defense in depth Multi-couches : WAF, SG, NACLs, IAM
Reliability Multi-AZ minimum EC2 dans 2+ AZ, RDS Multi-AZ
Performance Choisir bon service Cache (ElastiCache), CDN (CloudFront)
Cost Optimization Payez juste nécessaire Auto Scaling, Spot, S3 Intelligent-Tiering
Sustainability Minimisez impact Graviton, régions avec énergies vertes

🔄 DevOps Culture

📝 Documentation

  • README complet
  • Diagrammes architecture
  • Runbooks incidents
  • Procédures rollback
  • FAQ équipe

🧪 Testing

  • Tests unitaires (80%+ couverture)
  • Tests intégration
  • Tests charge
  • Chaos engineering
  • Smoke tests post-deploy

📊 Observabilité

  • Metrics (CloudWatch)
  • Logs centralisés (ELK/Loki)
  • Traces (X-Ray/Jaeger)
  • Alertes intelligentes
  • Dashboards temps réel

🎯 La Règle d'Or du DevOps

"Si vous ne pouvez pas l'automatiser, documentez-le.
Si vous ne pouvez pas le documenter, simplifiez-le.
Si vous ne pouvez pas le simplifier, supprimez-le."