Migration Cross-Account AWS EC2
Objectif : Cloner une instance EC2 existante depuis un Compte Source (A) vers un Compte Cible (B) en conservant l'intégralité des données et de la configuration système (Ubuntu, ports, etc.).
Concept clé : Une AMI (Amazon Machine Image) est régionale et liée à un compte. Pour la bouger, il faut la partager puis la copier pour en devenir propriétaire sur le nouveau compte.
Le Workflow simplifié
- Source : Créer une Image (AMI) du serveur.
- Source : Partager l'AMI ET le Snapshot (disque) avec l'ID du compte cible.
- Cible : Copier l'AMI (pour changer de région ou s'approprier les clés de chiffrement).
- Cible : Lancer l'instance et reconfigurer le réseau (Security Groups).
Phase 1 : Actions sur le Compte Source
1. Création de l'image
Depuis la console EC2 > Instances :
- Clic droit sur l'instance > Images et modèles > Créer une image.
- Note : L'instance redémarrera (sauf si "Pas de redémarrage" est coché, mais déconseillé pour la cohérence des données).
2. Partage de l'AMI (La partie facile)
- Allez dans AMIs (menu gauche).
- Actions > Modifier les autorisations d'AMI.
- Ajouter l'ID du Compte Cible (12 chiffres).
⚠️ LE PIÈGE CRITIQUE (Erreur "Do not have permission to access storage")
Partager l'AMI ne suffit pas ! Il faut aussi partager le "Disque Dur" (Snapshot) sous-jacent. AWS ne le fait pas automatiquement.
Partager l'AMI ne suffit pas ! Il faut aussi partager le "Disque Dur" (Snapshot) sous-jacent. AWS ne le fait pas automatiquement.
3. Partage du Snapshot (L'étape oubliée)
- Dans l'onglet "Détails" de l'AMI, repérez l'ID du disque (ex:
snap-01cefec9f...). - Allez dans le menu Elastic Block Store > Instantanés (Snapshots).
- Sélectionnez ce snapshot > Actions > Autorisations.
- Ajoutez l'ID du Compte Cible ici aussi !
Phase 2 : Import sur le Compte Cible
1. Récupérer l'image partagée
Connectez-vous sur le Compte Cible.
- Allez dans EC2 > AMIs.
- Important : Changez le filtre de recherche de "Détenu par moi" à "Images privées".
- Vérifiez que vous êtes dans la Même Région que la source (ex: eu-central-1).
2. Copier l'AMI (Pour devenir propriétaire)
Cette étape permet de détacher l'image du compte source et de gérer vos propres clés de chiffrement.
Sélectionner l'AMI > Actions > Copier l'AMI
Destination : Choisir la région (Francfort, Paris...)
Cocher "Chiffrer les instantanés" (recommandé avec une nouvelle clé KMS)Une fois copiée, la nouvelle AMI apparaîtra sous le filtre "Détenu par moi".
Phase 3 : Lancement de l'instance
1. Problème de Quota (Instances grisées)
Symptôme : Impossible de sélectionner
Cause : Les nouveaux comptes AWS sont bridés (vCPU limités).
Solution : Demander une augmentation de quota (Service Quotas > EC2 > Running On-Demand Standard instances) ou contacter le support.
t3.medium ou plus, tout est grisé sauf t3.micro.Cause : Les nouveaux comptes AWS sont bridés (vCPU limités).
Solution : Demander une augmentation de quota (Service Quotas > EC2 > Running On-Demand Standard instances) ou contacter le support.
2. Configuration Réseau (Security Groups)
Le pare-feu n'est pas copié avec l'AMI. Il faut le recréer.
- SSH : Ouvrir le port 22 (pour l'admin AWS) ET le port personnalisé si existant (ex: 7755).
- Web : Ouvrir 80 (HTTP) et 443 (HTTPS).
- Source : Restreindre à votre IP si possible, ou 0.0.0.0/0.
3. Clés SSH
Créer une nouvelle paire de clés (.pem) sur le compte cible. L'ancienne clé du compte source ne fonctionnera pas pour l'injection cloud-init.
Connexion SSH & Troubleshooting
1. Préparer la clé
chmod 400 ma-nouvelle-cle.pem2. La bonne commande de connexion
Si l'instance source utilisait un port personnalisé (ex: 7755), ce port est conservé.
# Syntaxe : ssh -i [CLE] -p [PORT] [USER]@[IP]
# Exemple Ideo-Lab (Port 7755, User ubuntu)
ssh -i "harper2.pem" -p 7755 ubuntu@ec2-3-75-187-125.eu-central-1.compute.amazonaws.com3. Diagnostic des erreurs fréquentes
- Permission denied (publickey) :
- Mauvais utilisateur (Essayez
ubuntu,ec2-user,admin). Ne jamais utiliserroot. - La clé n'a pas été injectée (Cloud-init a échoué ?).
- Tentez l'ancien mot de passe si
PasswordAuthentication yesétait actif.
- Mauvais utilisateur (Essayez
- Connection timed out :
- Le Security Group AWS bloque le port (22 ou 7755).
- Le pare-feu interne (UFW/Iptables) bloque l'accès.
Note sur Cloud-Init : Au premier démarrage, AWS injecte la nouvelle clé SSH dans
~/.ssh/authorized_keys mais n'écrase pas votre fichier sshd_config. Vos ports personnalisés et anciens users restent valides.