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
| AMI | Cas d'Usage | Avantages | Inconvénients |
|---|---|---|---|
| Amazon Linux 2023 | Production AWS | Optimisé AWS, gratuit | Spécifique AWS |
| Amazon Linux 2 | Legacy, stable | Très stable | Fin de support 2025 |
| Ubuntu 22.04 LTS | Développement | Populaire, docs | Un peu plus lourd |
| Debian | Serveurs | Très stable | Moins de support AWS |
| RHEL | Entreprise | Support officiel | Payant |
| CentOS Stream | Dev RHEL | Gratuit | Moins 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é
| Concept | Description |
|---|---|
| AMI | Image machine pour lancer des instances |
| AMI AWS | Officielles, gratuites, recommandées |
| AMI Marketplace | Avec logiciels, souvent payantes |
| AMI Perso | Créées par vous, privées |
| Régionale | Chaque région a ses propres AMI |
| Snapshot | AMI stockée comme snapshot EBS |
Quiz de Validation
- Qu'est-ce qu'une AMI ?
- Quelle AMI Linux est optimisée pour AWS ?
- Les AMI sont-elles les mêmes dans toutes les régions ?
- Comment créer une AMI personnalisée ?
- Qu'est-ce qui coûte de l'argent avec les AMI ?
- Pourquoi créer ses propres AMI ?
Prochaine section : Types d'Instances