Aller au contenu principal

AMI - Amazon Machine Images

Qu'est-ce qu'une AMI ?​

Une AMI (Amazon Machine Image) est un modèle qui contient la configuration logicielle nécessaire pour lancer une instance EC2. C'est comme un "snapshot" ou une "image disque" d'un système complet.

┌─────────────────────────────────────────────────────────────┐
│ AMI │
├─────────────────────────────────────────────────────────────┤
│ │
│ "Une AMI = Le DNA de votre instance" │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ AMI │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ Système d'Exploitation │ │ │
│ │ │ (Linux, Windows, etc.) │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ Configuration Système │ │ │
│ │ │ (utilisateurs, permissions, etc.) │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ Logiciels Préinstallés (optionnel) │ │ │
│ │ │ (Apache, MySQL, Docker, etc.) │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ Configuration de Stockage │ │ │
│ │ │ (taille disque, type EBS) │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ AMI ─────► Instance 1 │
│ └───► Instance 2 (Toutes identiques au départ) │
│ └───► Instance 3 │
│ │
└─────────────────────────────────────────────────────────────┘

Analogie Simple​

┌─────────────────────────────────────────────────────────────┐
│ ANALOGIE : AMI = MOULE À GÂTEAU │
├─────────────────────────────────────────────────────────────┤
│ │
│ 🧁 PÂTISSERIE 💻 AWS │
│ ───────────── ───── │
│ │
│ Moule à gâteau = AMI │
│ (forme, taille) (OS, config) │
│ │
│ Gâteaux produits = Instances EC2 │
│ (tous pareils) (toutes identiques) │
│ │
│ Décoration après = Configuration post- │
│ cuisson lancement │
│ │
│ Un moule → plusieurs = Une AMI → plusieurs │
│ gâteaux identiques instances identiques │
│ │
└─────────────────────────────────────────────────────────────┘

Types d'AMI​

1. AMI Publiques AWS​

AMI officielles fournies par Amazon, gratuites (vous payez juste l'instance).

┌─────────────────────────────────────────────────────────────┐
│ AMI PUBLIQUES AWS │
├─────────────────────────────────────────────────────────────┤
│ │
│ Amazon Linux 2023 │
│ ├── Optimisé pour AWS │
│ ├── Léger et performant │
│ ├── Mises à jour automatiques │
│ └── Support gratuit via forums │
│ │
│ Amazon Linux 2 (LTS) │
│ ├── Support jusqu'en 2025 │
│ ├── Très stable │
│ └── Largement documenté │
│ │
│ Ubuntu Server │
│ ├── 20.04 LTS, 22.04 LTS, 24.04 LTS │
│ ├── Populaire, grande communauté │
│ └── Bon pour développeurs │
│ │
│ Red Hat Enterprise Linux (RHEL) │
│ ├── Support entreprise │
│ └── Payant (licence incluse dans le prix) │
│ │
│ Windows Server │
│ ├── 2019, 2022 │
│ └── Licence Windows incluse (plus cher) │
│ │
└─────────────────────────────────────────────────────────────┘

2. AMI AWS Marketplace​

AMI avec logiciels préinstallés, souvent payantes (licence).

Exemples :
• WordPress préconfiguré
• Serveur LAMP complet
• Jenkins CI/CD
• Splunk
• Palo Alto Firewall
• Et des milliers d'autres...

💰 Coût = Prix instance + Prix licence logiciel

3. AMI Communautaires​

AMI créées et partagées par d'autres utilisateurs AWS.

⚠️ ATTENTION :
• Qualité variable
• Sécurité non garantie
• Peut contenir des malwares
• Utiliser avec précaution !

✅ Préférez les AMI de sources connues

4. AMI Personnalisées (Privées)​

AMI que vous créez vous-même à partir d'une instance configurée.

┌─────────────────────────────────────────────────────────────┐
│ CRÉATION D'AMI PERSONNALISÉE │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. Lancer une instance avec AMI de base │
│ └── Amazon Linux 2023 │
│ │
│ 2. Configurer l'instance │
│ └── Installer Apache, PHP, MySQL │
│ └── Configurer les fichiers │
│ └── Ajouter vos applications │
│ │
│ 3. Créer une AMI depuis l'instance │
│ └── Actions → Image → Create Image │
│ │
│ 4. Utiliser votre AMI pour nouvelles instances │
│ └── Toutes les instances seront préconfigurées ! │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Instance │ → │ AMI │ → │Instances │ │
│ │configurée│ │Personnelle│ │identiques│ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

Composants d'une AMI​

Structure Interne​

AMI
├── Root Volume Template
│ └── Snapshot EBS du volume racine
│ └── Système d'exploitation
│ └── Applications installées
│
├── Launch Permissions
│ └── Publique (tout le monde)
│ └── Privée (votre compte)
│ └── Partagée (comptes spécifiques)
│
├── Block Device Mapping
│ └── Quels volumes EBS attacher
│ └── Tailles et types de volumes
│ └── Delete on Termination ?
│
└── Metadata
└── Architecture (x86_64, arm64)
└── Virtualisation (hvm, pv)
└── Nom, description

ID d'une AMI​

Format : ami-0123456789abcdef0

Exemples :
• ami-0c55b159cbfafe1f0 (Amazon Linux 2 us-east-1)
• ami-0747bdcabd34c712a (Ubuntu 22.04 us-east-1)

⚠️ IMPORTANT : Les ID sont différents par région !
La même AMI "Amazon Linux 2" a un ID différent
dans us-east-1 et eu-west-1

Comparaison des AMI Linux Populaires​

AMICas d'UsageAvantagesInconvénients
Amazon Linux 2023Production AWSOptimisé AWS, gratuitSpécifique AWS
Amazon Linux 2Legacy, stableTrès stableFin de support 2025
Ubuntu 22.04 LTSDéveloppementPopulaire, docsUn peu plus lourd
DebianServeursTrès stableMoins de support AWS
RHELEntrepriseSupport officielPayant
CentOS StreamDev RHELGratuitMoins stable que RHEL

AMI et Régions​

┌─────────────────────────────────────────────────────────────┐
│ AMI ET RÉGIONS │
├─────────────────────────────────────────────────────────────┤
│ │
│ Les AMI sont RÉGIONALES ! │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ us-east-1 │ │ eu-west-1 │ │
│ │ │ │ │ │
│ │ ami-abc123... │ ≠ │ ami-xyz789... │ │
│ │ (Amazon Linux 2) │ │ (Amazon Linux 2) │ │
│ │ │ │ │ │
│ └──────────────────┘ └──────────────────┘ │
│ │
│ Même OS, mais ID différent ! │
│ │
│ Pour utiliser une AMI dans une autre région : │
│ → Copier l'AMI (Actions → Copy AMI) │
│ │
│ AMI Perso AMI Copiée │
│ us-east-1 ─────────────────► eu-west-1 │
│ ami-abc123 ami-def456 │
│ │
└─────────────────────────────────────────────────────────────┘

Créer une AMI (Processus)​

Depuis une Instance Existante​

┌─────────────────────────────────────────────────────────────┐
│ CRÉATION D'AMI - ÉTAPES │
├─────────────────────────────────────────────────────────────┤
│ │
│ PRÉPARATION │
│ 1. Arrêter l'instance (recommandé pour cohérence) │
│ 2. Ou créer "No reboot" (risque d'incohérence) │
│ │
│ CRÉATION │
│ 3. Console → EC2 → Instances │
│ 4. Sélectionner l'instance │
│ 5. Actions → Image and templates → Create image │
│ │
│ CONFIGURATION │
│ 6. Nom : "mon-app-v1.0" │
│ 7. Description : "Serveur web avec Apache et PHP 8" │
│ 8. Volumes : garder ou modifier │
│ 9. Tags : ajouter pour organisation │
│ │
│ ATTENTE │
│ 10. L'AMI passe de "pending" à "available" │
│ 11. Peut prendre quelques minutes │
│ │
│ UTILISATION │
│ 12. Lancer de nouvelles instances avec cette AMI │
│ │
└─────────────────────────────────────────────────────────────┘

Commande AWS CLI​

# Créer une AMI depuis une instance
aws ec2 create-image \
--instance-id i-0123456789abcdef0 \
--name "mon-app-v1.0" \
--description "Serveur web configuré" \
--no-reboot

# Voir vos AMI
aws ec2 describe-images --owners self

# Supprimer une AMI
aws ec2 deregister-image --image-id ami-0123456789abcdef0

Bonnes Pratiques AMI​

1. Nommage Cohérent​

Format recommandé :
<application>-<version>-<date>-<environnement>

Exemples :
• webapp-v2.1-20241218-prod
• api-server-v1.0-20241218-staging
• bastion-v1.0-20241218-shared

2. Versionner vos AMI​

webapp-v1.0  →  webapp-v1.1  →  webapp-v2.0
│ │ │
└── Petite └── Bug fix └── Nouvelle
release fonctionnalité

3. Automatiser la Création​

┌─────────────────────────────────────────────────────────────┐
│ PIPELINE AMI AUTOMATISÉ │
├─────────────────────────────────────────────────────────────┤
│ │
│ Code ──► Build ──► Test ──► Create AMI ──► Deploy │
│ │ │
│ └── Outil : Packer │
│ │
│ Packer = Outil HashiCorp pour créer des AMI │
│ automatiquement et de façon reproductible │
│ │
└─────────────────────────────────────────────────────────────┘

4. Sécurité​

✅ À FAIRE :
• Supprimer les clés SSH personnelles
• Supprimer les fichiers temporaires
• Effacer l'historique bash
• Mettre à jour les packages avant création

❌ À ÉVITER :
• Mots de passe en clair dans les fichiers
• Clés API dans le code
• Données sensibles non chiffrées

Coût des AMI​

┌─────────────────────────────────────────────────────────────┐
│ COÛT DES AMI │
├─────────────────────────────────────────────────────────────┤
│ │
│ AMI elle-même : GRATUITE │
│ │
│ Ce qui coûte : │
│ • Stockage des snapshots EBS sous-jacents │
│ • ~$0.05/GB/mois │
│ │
│ Exemple : │
│ AMI avec volume root de 20 GB │
│ → Coût : ~$1/mois pour le stockage │
│ │
│ AMI Marketplace : │
│ • Coût licence en plus du stockage │
│ • Vérifier le prix AVANT de lancer │
│ │
└─────────────────────────────────────────────────────────────┘

Résumé​

ConceptDescription
AMIImage machine pour lancer des instances
AMI AWSOfficielles, gratuites, recommandées
AMI MarketplaceAvec logiciels, souvent payantes
AMI PersoCréées par vous, privées
RégionaleChaque région a ses propres AMI
SnapshotAMI stockée comme snapshot EBS

Quiz de Validation​

  1. Qu'est-ce qu'une AMI ?
  2. Quelle AMI Linux est optimisée pour AWS ?
  3. Les AMI sont-elles les mêmes dans toutes les régions ?
  4. Comment créer une AMI personnalisée ?
  5. Qu'est-ce qui coûte de l'argent avec les AMI ?
  6. Pourquoi créer ses propres AMI ?

Prochaine section : Types d'Instances