Je ne parviens pas à démarrer mon instance et je reçois le message d'erreur « Client.InternalError » lors de l'exécution de la commande describe-instances. Comment résoudre le problème ?

Date de la dernière mise à jour : 07/10/2021

J'essaie de démarrer mon instance Amazon Elastic Compute Cloud (Amazon EC2). L'instance ne démarre pas et ne renvoie pas de message d'erreur. Ou il ne démarre pas et renvoie le message d'erreur « Client.InternalError » ou « Server.InternalError ». Comment résoudre ce problème ?

Brève description

Le message « Server.InternalError » peut s'afficher pour les raisons suivantes :

  • Vos volumes Amazon Elastic Block Store (Amazon EBS) ne sont pas attachés correctement à l'instance.
  • Un volume EBS attaché à l'instance a un état d'erreur.

Le message « Client.InternalError » peut s'afficher si un volume EBS chiffré est attaché à l'instance.

Remarque : si votre instance ne démarre pas et qu'aucun code d'erreur ne s'affiche, exécutez la commande describe-instances. Indiquez ensuite l'ID de votre instance. Dans l'exemple suivant, remplacez MONINSTANCE par l'ID de l'instance que vous tentez de démarrer.

aws ec2 describe-instances --instance-id MYINSTANCE --output json

Vérifiez le message StateReason dans la réponse JSON renvoyée par la commande.

Solution

Vos volumes EBS ne sont pas attachés correctement à l'instance

Si le volume racine EBS n'est pas attaché à l'instance sous la forme /dev/sda1 ou /dev/xvda et qu'un second volume EBS est associé à un nom de périphérique identique ou en conflit, vous ne pouvez pas arrêter ou démarrer l'instance. Seuls les types d'instance Xen (c4, m4, t2, etc.) sont affectés par les conflits de noms de périphérique de stockage en mode bloc. Les instances Nitro (c5, m5, t3, etc.) ne sont pas affectées par les conflits de noms de périphérique de stockage en mode bloc.

1.    Exécutez l'API describe-instances pour vérifier le message d'erreur et le code d'erreur StateReason. Voici un exemple de sortie de commande en cas de conflit de noms de périphérique :

awsec2describe-instances--instance-idi-xxxxxxxxxxxxxxx|egrep-A3-iStateReason
"StateReason": {
    "Code": "Server.InternalError",
    "Message": "Server.InternalError: Internal error on launch"
},

2.    Ouvrez la console Amazon EC2, puis sélectionnez l'instance que vous ne parvenez pas à démarrer.

3.    Dans l'onglet Description, vérifiez le nom de périphérique répertorié dans la section Block devices (Périphériques de stockage en mode bloc). Le champ Block devices comporte tous les noms des volumes attachés.

4.    Vérifiez que le périphérique racine est correctement attaché et qu'aucun périphérique répertorié ne comporte un nom identique ou possède un nom conflictuel.

5.    Si un périphérique comporte un nom identique à un autre périphérique ou un nom conflictuel, détachez le volume concerné, puis renommez-le. Ensuite, attachez à nouveau le volume en indiquant un nouveau nom de périphérique.

Un volume EBS attaché présente un état d'erreur

1.    Exécutez l'API describe-instances pour vérifier le message d'erreur StateReason et le code d'erreur. Voici un exemple de sortie de commande si un volume EBS attaché présente un état d'erreur :

aws ec2 describe-instances --instance-ids i-xxxxxxxxxxxxxx 
          "InstanceId": "i-xxxxxxxxxxxxxxxx",
          "InstanceType": "c4.8xlarge",
          "State": {
            "Name": "stopped"
          },
          "StateTransitionReason": "Server.InternalError",

2.    Ouvrez la console Amazon EC2, choisissez Volumes, puis vérifiez si l'état du volume est error (erreur). Les options qui s'offrent à vous varient selon le volume (volume présentant une anomalie, volume racine ou volume secondaire).

Si le volume présentant une anomalie est un volume secondaire, détachez-le. Vous pouvez dès lors démarrer l'instance.

Si le volume ayant un état d'erreur est un volume racine et que vous disposez déjà d'un instantané de celui-ci, procédez comme suit :

Détachez le volume.

Créez un nouveau volume à partir de l'instantané.

Attachez le nouveau volume à l'instance en indiquant le nom de l'instance d'origine. Démarrez l'instance.

Remarque : si le volume ayant un état d'erreur est un volume racine et que vous ne disposez pas d'un instantané de ce dernier, vous ne pouvez pas redémarrer l'instance. Vous devez la reconstruire.

Les volumes attachés sont chiffrés, et il existe des autorisations ou des politiques AWS Identity and Access Management (IAM) incorrectes

1.    Exécutez l'API describe-instances pour vérifier le message d'erreur StateReason et le code d'erreur. Voici un exemple de sortie de commande si un volume chiffré est attaché à l'instance et qu'il existe des problèmes d'autorisations ou de politique :

aws ec2 describe-instances --instance-ids i-xxxxxxxxxxxxxxxxx
"StateReason": {
     "Message": "Client.InternalError: Client error on launch",
     "Code": "Client.InternalError"
   },

2.    Vérifiez les points suivants :

Remarque : pour vérifier qu'un volume est chiffré, ouvrez la console Amazon EC2, puis sélectionnez Volumes. La mention Encrypted (Chiffré) figure dans la colonne Encryption (Chiffrement) pour les volumes chiffrés.