为什么我无法启动我的 EC2 实例?
我无法启动新的 Amazon Elastic Compute Cloud(Amazon EC2)实例或者启动我现有的实例。
解决方法
有多种原因会导致您可能无法启动 EC2 实例。如果您在尝试启动实例时没有收到错误代码,请按照下面的步骤进行操作:
- 查看 AWS CloudTrail 中的 StartInstances 事件。
-或-
运行 AWS 命令行界面(AWS CLI)describe-instances 命令,并指定实例 ID,以查看问题的原因。在以下示例中,将 MYINSTANCE 替换为您尝试启动的实例 ID。
在命令返回的 JSON 响应中查看 StateReason 消息。在以下示例响应中,返回的 StateReason 是 Client.InternalError:aws ec2 describe-instances --instance-id MYINSTANCE --output json
**注意:**如果在运行 AWS CLI 命令时收到错误,请参阅排查 AWS CLI 错误。此外,确保您使用的是最新版本的 AWS CLI。"StateReason": { "Message": "Client.InternalError: Client error on launch", "Code": "Client.InternalError" },
- 查看以下常见错误以解决问题。
InsufficientInstanceCapacity
启动新实例或重新启动已停止的实例时,如果没有足够的按需容量来满足您的请求,则会出现以下错误:
An error occurred (InsufficientInstanceCapacity) when calling the StartInstances operation (reached max retries: 4): Insufficient capacity.)
如果没有足够的按需容量来满足您的请求,则会出现此错误。
有关解决方法信息,请参阅如何解决启动 EC2 实例时出现的 InsufficientInstanceCapacity 错误?
InstanceLimitExceeded
当您在某个 AWS 区域启动的实例数量超过允许的上限时,会出现以下错误:
InstanceLimitExceeded: Your quota allows for 0 more running instance(s).
如果您收到此消息,请向 AWS Support 提交限额增加请求。在请求中,请务必包含您尝试启动的实例类型和您的实例所在的 AWS 区域。
有关解决此错误的详细信息,请参阅如何解决启动 EC2 实例时出现的 InstanceLimitExceeded 错误?
UnauthorizedOperation
如果尝试启动实例的用户没有所需的权限,则会出现 UnauthorizedOperation 错误。要解决此错误,请参阅在 EC2 实例启动期间收到“UnauthorizedOperation”错误后,如何解码授权失败消息?
目前不支持请求的配置
以下两个问题会导致此错误:
-
在请求的可用区中,不支持指定的实例类型。要检查实例类型在特定可用区中的可用性,请在 AWS CLI 中运行 aws ec2 describe-instance-type-offerings 命令。然后,在支持的可用区中启动实例。
例如,使用以下命令检查 c5.2xlarge 实例类型在 us-east-1 的所有可用区中的可用性:aws ec2 describe-instance-type-offerings --location-type availability-zone --filters Name=instance-type,Values=c5.2xlarge --region us-east-1
-
用于启动实例的 AMI 不支持所选的实例类型。在选择实例类型或系列之前,请查看 AWS Marketplace 中的 AMI 描述。在您使用 AWS Marketplace AMI 并尝试使用 AWS CLI 启动不支持的实例时,通常会出现此问题。从 Amazon EC2 控制台启动实例时,不支持的实例不可用。
Client.InternalError
您可能会收到此错误的常见原因如下:
- Amazon Elastic Block Store(Amazon EBS)卷未正确附加到实例。
- 附加到实例的 EBS 卷处于“错误”状态。
- 加密的 EBS 卷附加到实例。但是,您无权访问 AWS Key Management Services(AWS KMS)进行解密。
有关解决这些问题的信息,请参阅如何对尝试启动 Amazon EC2 实例时停止或终止并出现“InternalError”或“Client.UserInitiatedShutdown”错误的 Amazon EC2 实例进行故障排除?
磁盘已满错误
如果实例上的空间用完,而审计服务在启动计算机后将其停止,则会发生磁盘已满错误。
**注意:**继续之前,最佳做法是创建快照来备份卷的数据。
**重要事项:**以上解决步骤要求您启动和停止实例。请注意以下几点:
- 当实例停止时,您会丢失实例存储卷中的数据。有关详细信息,请参阅确定实例的根设备类型。
- 如果您停止了属于 Amazon EC2 自动扩缩组的实例,则可能会终止该实例。使用 Amazon EMR、AWS CloudFormation 和 AWS Elastic Beanstalk 启动的实例可能是 AWS 自动扩缩组的一部分。在这种情况下,实例终止取决于您的自动扩缩组的实例横向缩减保护设置。如果您的实例是自动扩缩组的一部分,请在继续操作之前从自动扩缩组中暂时删除该实例。
- 停止和启动实例会更改实例的公有 IP 地址。当您将外部流量路由到您的实例时,最佳做法是使用弹性 IP 地址而不是公有 IP 地址。
要解决磁盘已满错误,请按照下面的步骤进行操作:
-
打开 Amazon EC2 控制台。
-
从导航窗格中选择实例,然后选择实例。
-
停止实例。
-
从停止的实例中分离 EBS 根卷(Linux 为 /dev/xvda)。
-
在受损实例所在的可用区中启动新的 EC2 实例。该新实例将成为您的救援实例。
-
将您在第 4 步中分离的根卷作为辅助设备附加到救援实例。
**注意:**在附加辅助卷时,您可以使用不同的设备名称。 -
为您在第 6 步中附加到救援实例的新卷创建挂载点目录。在以下示例中,挂载点目录为 /mnt/rescue。
**注意:**以下 $ sudo 命令仅适用于 Linux 环境:$ sudo mkdir /mnt/rescue
-
将卷挂载到您在第 8 步中创建的目录:
$ sudo mount /dev/xvdf /mnt/rescue
**注意:**该设备(在本例中为 /dev/xvdf)对于其附加到的救援实例可能使用不同的设备名称。要确定正确的设备名称,请使用 lsblk 命令查看可用的磁盘设备及其挂载点。
-
扩展分区。
-
运行 umount 命令来卸载卷:
$ sudo umount /mnt/rescue
- 从临时实例分离卷。
- 将卷附加到使用设备名称(Linux 为 /dev/xvda)的原始实例,然后启动该实例,确认其成功启动。
- 查看审计服务配置,以确保在计算机空间不足时没有停止(关闭)计算机的选项。对于 Amazon Linux、Amazon Linux 2 和 Amazon Linux 2023,确保审计服务配置在 /etc/audit/auditd.conf 中包含以下选项:
max_log_file_action = ROTATE admin_space_left_action = SUSPEND disk_full_action = SUSPEND disk_error_action = SUSPEND
Client.InvalidParameterValue
InvalidParameterValue 表示请求中指定的参数无效、不受支持或无法使用。返回的消息提供了错误值的解释。例如,如果根卷未附加到 /dev/sda1 或 /dev/xvda 中的实例,则根据 AMI,该实例不会启动。发生这种情况时,您会在 AWS CloudTrail 中看到类似于以下内容的条目:
An error occurred (InvalidParameterValue) when calling the StartInstances operation: Invalid value 'i-xxxxxxxxxxxxxxxxx' for instanceId. Instance does not have a volume attached at root (/dev/sda1)
要解决此问题,请使用错误消息作为参考,更改相关参数。例如,要解决前面的示例错误,请将根卷附加到 /dev/sda1 中的实例,然后启动该实例。有关详细信息,请参阅 Amazon EC2 API 的错误代码。
相关信息
排查实例启动问题 - Linux
排查实例启动问题 - Windows
相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前