如何解决 AWS CloudFormation 中故障堆栈的“Server.InternalError: Internal error on launch”错误?

1 分钟阅读
0

我尝试使用 AWS CloudFormation 堆栈创建一个 Amazon Elastic Compute Cloud (Amazon EC2) 实例,但我的堆栈创建失败。然后,我收到了“Server.InternalError: Internal error on launch”错误消息。如何解决此错误?

简短描述

如果您在 AWS CloudFormation 模板中指定了重复或无效的设备映射,就会收到此错误消息。不能让两个块储存设备映射到同一位置(如 /dev/sdb)。

**注意:**如果您使用的是基于 Nitro 的实例类型(例如 c5、m5 或 t3),则不会收到此错误消息,因为 /dev/sdb/dev/xvdc 在操作系统中映射到两个不同的 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

相关信息

块储存设备映射

EC2 块储存设备映射示例

Linux 实例上的设备名称

AWS 官方
AWS 官方已更新 4 年前