AMI から EC2 インスタンスを起動しようとするときに、一部のインスタンスタイプが無効になるのはなぜですか?

最終更新日: 2020 年 12 月 18 日

Amazon Machine Image (AMI) から Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動しようとしています。起動しようとするインスタンスタイプが無効化されるのはなぜですか。

簡単な説明

インスタンスタイプ A1、T4g、M6g、C6g、および R6g は AWS Graviton プロセッサを使用します。AWS Graviton プロセッサは、x86_64 (AMD64) ではなく aarch64 (ARM64) アーキテクチャを使用します。

ARM64アーキテクチャは、x86_64アーキテクチャファミリーで使用される命令とは異なる CPU 命令セットを使用します。これらの命令セットは、プロセッサにコマンドを送信するためのメカニズムを提供します。人が判読できるソフトウェアコードは、ソフトウェアのコンパイル時に CPU アーキテクチャに固有の CPU 命令に変換されます。そのアーキテクチャタイプのすべての CPU は、これらの CPU 命令を使用できます。しかし、特定のアーキテクチャタイプの CPU は、別のタイプの命令セットを理解することはできません。したがって、1 つのアーキテクチャからコンパイルされた AMI は、そのアーキテクチャタイプの CPU でのみ実行されます。

ARM64 と x86_64 アーキテクチャは、それぞれ異なる命令セットを使用します。つまり、x86_64 アーキテクチャを使用して作成された EC2 インスタンスと AMI には、ARM64 アーキテクチャを使用するインスタンスとの互換性がありません。この互換性の欠如により、インスタンスタイプの起動または変更時に次のいずれかが発生します。

  • 選択した EC2 AMI で Graviton インスタンスタイプを起動すると、起動ウィザードで新しいインスタンスタイプが無効と表示されることがあります。
  • 新しいアーキテクチャタイプを現在使用していないデプロイ済みの EC2 インスタンスのインスタンスタイプを変更すると、エラーが発生することがあります。次のようなエラーメッセージが表示されます。
    「'm6g.large' is not a valid instance type for instance 'i-xyz' of architecture 'x86_64'」('m6g.large' は、アーキテクチャ ' x86_64 ' のインスタンス ' i-xyz ' に対して有効なインスタンスタイプではありません)

別のアーキテクチャを使用するには、最初に新しい EC2 インスタンスまたは AMI を作成します。

注:拡張ネットワーキングが有効でない場合、 AMI とインスタンスタイプの互換性がない可能性があります。詳細については、「EC2 インスタンスで拡張ネットワーキングを有効化および設定するにはどうすればよいですか?」を参照してください。

解決方法

新しいインスタンスの起動

ARM アーキテクチャでは、すべての主要な Linux ディストリビューションが利用可能です。ARM アーキテクチャを使用してインスタンスを起動するには:

  1. Amazon EC2 コンソールを開きます。
  2. [ インスタンスの起動 ]、[ インスタンスの起動 ] の順に選択します。
  3. 使用するのディストリビューションの ARM バージョンに対応する AMI の横にある [64-bit (ARM)] を選択し、[選択 ] を選択します。
  4. インスタンスの起動を完了します

インスタンスを起動すると、インスタンスは EC2 インスタンスと同様に動作します。

インスタンスタイプの変更

命令セットが異なるため、アーキテクチャタイプ間でインスタンスタイプを直接変更することはできません。システムを新しいアーキテクチャに移行するには、次の手順を実行します。

  1. 目的の設定の新しい EC2 インスタンスを起動します
  2. アプリケーションを新しい EC2 インスタンスに移行します。

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?