Comment éliminer l'erreur « Server.InternalError: Internal error on launch » (Server.InternalError : erreur interne au lancement) pour une pile qui a échoué dans AWS CloudFormation ?

Date de la dernière mise à jour : 03/03/2020

J'ai essayé de créer une instance Amazon Elastic Compute Cloud (Amazon EC2) avec une pile AWS CloudFormation, mais la création de pile a échoué. Ensuite, j'ai reçu le message d'erreur « Server.InternalError: Internal error on launch » (Server.InternalError : erreur interne au lancement). Comment éliminer cette erreur ?

Brève description

Vous recevez cette erreur si des mappages de périphérique en double ou non valides sont spécifiés dans votre modèle AWS CloudFormation. Vous ne pouvez pas associer deux périphériques de stockage en mode bloc au même emplacement (par exemple, /dev/sdb).

Remarque : si vous utilisez un type d'instance basé sur Nitro (par exemple, c5, m5 ou t3), vous ne recevez pas cette erreur, car /dev/sdb et /dev/xvdb sont associés à deux périphériques NVMe différents dans le système d'exploitation.

Solution

Dans la propriété BlockDeviceMappings de votre modèle AWS CloudFormation, assurez-vous que vos périphériques de stockage en mode bloc ne sont pas associés au même emplacement en vérifiant la valeur DeviceName pour chaque périphérique de stockage en mode bloc.

Dans les exemples de modèles JSON et YAML suivants, les périphériques de stockage en mode bloc spécifiés sont /dev/xvdb et /dev/xvdc. Le volume racine est automatiquement provisionné pour l'instance, et les périphériques de stockage en mode bloc sont associés comme volumes secondaires.

JSON :

    "Ec2Instance" : {
      "Type" : "AWS::EC2::Instance", 
      "Properties" : {
        "...OtherProperties..."
        "BlockDeviceMappings" : [
          {
            "DeviceName" : "/dev/xvdb",
            "Ebs" : { "VolumeSize" : "100" }
          },{
            "DeviceName" : "/dev/xvdc",
            "Ebs" : { "VolumeSize" : "100" }
          }
        ]
      }
    }

YAML :

EC2Instance:
    Type: AWS::EC2::Instance
    Properties:
        ...OtherProperties...
        BlockDeviceMappings:
        -
          DeviceName: /dev/xvdb
          Ebs:
            VolumeSize: 100
        -
          DeviceName: /dev/xvdc
          Ebs:
            VolumeSize: 100