Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

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.

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.

Action Console
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 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é

Terminal
chmod 400 ma-nouvelle-cle.pem

2. La bonne commande de connexion

Si l'instance source utilisait un port personnalisé (ex: 7755), ce port est conservé.

SSH Command
# 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.com

3. Diagnostic des erreurs fréquentes

  • Permission denied (publickey) :
    • Mauvais utilisateur (Essayez ubuntu, ec2-user, admin). Ne jamais utiliser root.
    • La clé n'a pas été injectée (Cloud-init a échoué ?).
    • Tentez l'ancien mot de passe si PasswordAuthentication yes était actif.
  • 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.