Why are some instance types unavailable when I'm trying to launch an EC2 instance from an AMI?

3 minute read

I want to launch an Amazon Elastic Compute Cloud (Amazon EC2) instance from an Amazon Machine Image (AMI). The instance type I want to launch is unavailable.

Short description

AWS Graviton processors use the aarch64 (ARM64) architecture instead of x86_64 (AMD64). The following are some of the instance types that use AWS Graviton processors:

  • General Purpose: M7g, M6g, A1, T4g
  • Compute optimized: C7g, C7gn, C6g, C6gn
  • Memory optimized: R7g, R6g, X2gd
  • Accelerated computing: G5g
  • Storage optimized: Im4gn, Is4gen

ARM64 architecture uses a different set of CPU instructions than the x86_64 architecture family. These instructions provide a mechanism for sending commands to the processor. During software compilation, the human-readable software code converts to CPU instructions specific to a CPU architecture. Any CPU of that architecture type can use these CPU instructions. However, the CPU of one architecture type can't understand the instruction set of another type. An AMI that's compiled from one architecture runs on only the CPUs of that architecture type.

Amazon EC2 instances and AMIs that are created using the x86_64 architecture aren't compatible with instances that use the ARM64 architecture. When you launch or change instance types, this incompatibility can cause one of the following to happen:

  • When you launch a Graviton instance type with your selected EC2 AMI, the launch wizard might display the new instance types as unavailable.
  • If you change the instance type of an already deployed EC2 instance that doesn't use the new architecture type, then you might receive an error. The error message is similar to the following:
    "'m6g.large' is not a valid instance type for instance 'i-xyz' of architecture 'x86_64'".

To use a different architecture, complete the following steps:

  1. Create a new Amazon EC2 instance or AMI.
  2. Migrate the application to the new Amazon EC2 instance.

Note: An AMI might be incompatible with your instance type without enhanced networking turned on. For more information, see How do I turn on and configure enhanced networking on my EC2 instances?


Create a new Amazon EC2 instance or AMI

All major Linux distributions are available on ARM architecture. To launch an instance that uses ARM architecture:

  1. Open the Amazon EC2 console.
  2. Choose Launch instance, and then choose Launch instance.
  3. Choose 64-bit (ARM) next to the AMI that corresponds to the ARM version of your distribution, and then choose Select.
  4. Complete the launch of the instance.

Migrate the application to a new Amazon EC2 instance

Because of the different instruction sets, a direct instance type change isn't possible between architecture types. To migrate your system to the new architecture, complete the following steps:

  1. Launch a new EC2 instance for your chosen configuration.
  2. Migrate your application to the new EC2 instance.

Related information

AWS Graviton processor

AWS OFFICIALUpdated a year ago