当我尝试从 AMI 启动 EC2 实例时,为什么某些实例类型被禁用?

上次更新日期:2020 年 12 月 18 日

我尝试从 Amazon 系统映像 (AMI) 启动 Amazon Elastic Compute Cloud (Amazon EC2) 实例。为什么我想启动的实例类型被禁用了?

简短描述

实例类型 A1、T4g、M6g、C6g 和 R6g 使用 AWS Graviton 处理器。AWS Graviton 处理器使用 aarch64 (ARM64) 架构而不是 x86_64 (AMD64)。

ARM64 架构使用的 CPU 指令集与 x86_64 架构系列使用的指令不同。这些指令集提供向处理器发送命令的机制。在软件编译过程中,人类可读的软件代码会转换为特定于 CPU 架构的 CPU 指令。该架构类型的任何 CPU 都可以使用这些 CPU 指令。但是,一种架构类型的 CPU 无法理解另一种类型的指令集。因此,从一个架构编译的 AMI 只能在该架构类型的 CPU 上运行。

ARM64 和 x86_64 架构使用不同的指令集。这意味着使用 x86_64 架构创建的 EC2 实例和 AMI 与使用 ARM64 架构的实例不兼容。这种不兼容会导致在启动或更改实例类型时发生以下情况之一:

  • 使用所选 EC2 AMI 启动 Graviton 实例类型时,启动向导可能会将新实例类型显示为已禁用。
  • 如果您对当前未使用新架构类型的已部署 EC2 实例的实例类型进行更改,则可能会收到错误提示。错误消息的内容类似于以下示例:
    “'m6g.large' 对使用 'x86_64' 架构的实例 'i-xyz' 而言不是有效的实例类型”。

要使用其他架构,请先创建一个新的 EC2 实例或 AMI。

注意:如果没有启用增强联网功能,则 AMI 可能与您的实例类型不兼容。有关更多信息,请参阅如何在 EC2 实例上启用和配置增强联网功能?

解决方法

启动新实例

所有主要的 Linux 发行版都可以在 ARM 架构上使用。要使用 ARM 架构启动实例:

  1. 打开 Amazon EC2 控制台
  2. 依次选择 Launch instance(启动实例)Launch instance(启动实例)
  3. 选择与您最喜欢的发行版的 ARM 版本对应的 AMI 旁边的 64-bit (ARM)(64 位 (ARM)),然后选择 Select(选择)
  4. 完成启动实例

实例启动后,它的行为与任何 EC2 实例一样。

更改实例类型

由于指令集不同,不能在架构类型之间直接进行实例类型更改。要将系统迁移到新的架构,请执行以下操作:

  1. 启动所需配置的新 EC2 实例
  2. 将应用程序迁移到新的 EC2 实例。

这篇文章对您有帮助吗?


您是否需要账单或技术支持?