AWS CloudFormation でスタックが失敗したときの「 Server.InternalError: Internal error on launch」エラーを解決する方法を教えてください。

最終更新日: 2020 年 3 月 3 日

AWS CloudFormation のスタックを使用して Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを作成しようとしましたが、スタックの作成に失敗しました。その後「Server.InternalError: Internal error on launch」というエラーメッセージが表示されました。このエラーの解決方法を教えてください。

簡単な説明

AWS CloudFormation テンプレートで重複または無効なデバイスマッピングが指定されていると、このエラーが発生します。2 つのブロックデバイスを同じ場所にマッピングすることはできません (たとえば /dev/sdb)。

注: Nitro ベースのインスタンスタイプ (たとえば、c5、m5、または t3) を使用している場合は、/dev/sdb/dev/xvdc がオペレーションシステムで 2 つの異なる NVMe デバイスにマッピングされるため、このエラーは発生しません。

解決方法

AWS CloudFormation テンプレートの BlockDeviceMappings プロパティで、各ブロックデバイスの DeviceName の値をチェックして、ブロックデバイスが同じ場所にマッピングされていないことを確認します。

次の JSON および YAML テンプレートの例では、指定されたブロックデバイスは /dev/xvdb/dev/xvdcです。ルートボリュームはインスタンスに対して自動的にプロビジョニングされ、ブロックデバイスはセカンダリボリュームとして関連付けられます。

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