

# Amazon EC2 の AMI タイプと特性
<a name="ComponentsAMIs"></a>

インスタンスを起動するときに選択する AMI には、選択したインスタンスタイプとの互換性が必要です。次の特性に基づき、使用する AMI を選択できます。
+ [リージョン](using-regions-availability-zones.md)
+ オペレーティングシステム
+ プロセッサアーキテクチャ
+ [起動許可](#launch-permissions)
+ [ルートボリュームタイプ](#storage-for-the-root-device)
+ [仮想化タイプ](#virtualization_types)

## 起動許可
<a name="launch-permissions"></a>

起動許可により、AMI を使用してインスタンスを起動できるユーザーが決定されます。起動許可は [AMI の共有](sharing-amis.md)として考えることができます。起動許可を付与すると、AMI を他のユーザーと共有します。起動許可を指定して利用可能な状態を決定できるのは、AMI の所有者のみです。起動許可は次のように分類されます。


| 起動アクセス許可 | 説明 | 
| --- | --- | 
| パブリック | 所有者はすべての AWS アカウントに起動許可を与えます。 | 
| 明示的 | 所有者は特定の AWS アカウント、組織、または組織単位 (OU) に起動許可を与えます。 | 
| 暗示的 | 所有者には AMI の暗示的起動許可があります。 | 

Amazon や Amazon EC2 コミュニティではさまざまなパブリック AMI を提供しています。詳細については、[Amazon EC2 での共有 AMI の使用方法について](sharing-amis.md) を参照してください。デベロッパーは自分の AMI に料金を請求できます。詳細については、「[Amazon EC2 インスタンスの AWS Marketplace の有料 AMI](paid-amis.md)」を参照してください。

## ルートボリュームタイプ
<a name="storage-for-the-root-device"></a>

すべての AMI が *Amazon EBS-backed* と *Amazon S3-backed* のいずれかに分類されます。
+ Amazon EBS-backed AMI – AMI から起動されるインスタンスのルートボリュームが、Amazon EBS スナップショットから作成される Amazon Elastic Block Store (Amazon EBS) ボリュームであることを意味します。Linux AMI と Windows AMI の両方でサポート。
+ Amazon S3-backed AMI - AMI から起動されるインスタンスのルートボリュームが、Amazon S3 に保存されたテンプレートから作成されるインスタンスストアボリュームであることを意味します。Linux AMI でのみサポート。Windows AMI はルートボリュームのインスタンスストアをサポートしていません。

詳細については、「[Amazon EC2 インスタンスのルートボリューム](RootDeviceStorage.md)」を参照してください。

**注記**  
Amazon S3-backed AMI はサポート終了扱いとなっており、新たに使用することは推奨されません。これらの AMI は、C1、C3、D2、I2、M1、M2、M3、R3、X1 の古いインスタンスタイプでのみサポートされています。

次の表では、2 種類の AMI を使用した場合の重要な相違点をまとめています。


| 特徴 | Amazon EBS-backed AMI | Amazon S3-backed AMI | 
| --- | --- | --- | 
| ルートボリューム | EBS ボリューム | インスタンスストアボリューム | 
| インスタンスの起動時間 | 通常 1 分以内 | 通常 5 分以内 | 
| データの永続性  |  デフォルトでは、インスタンスを終了するとルートボリュームは削除されます。\$1 EBS ボリュームにある他のデータはすべて、インスタンスの終了後もデフォルトで保持されます。  |  インスタンスストアボリューム上のデータは、インスタンスの存続中のみ使用できます。  | 
| 停止状態 |  停止状態になっている場合があります。インスタンスが停止して実行されていない場合でも、ルートボリュームは Amazon EBS に保持されます。  |  停止状態にすることはできません。インスタンスは実行中または終了しています。  | 
| 変更 |  インスタンスの停止中に、インスタンスタイプ、カーネル、RAM ディスク、およびユーザーデータが変更可能  |  インスタンスの属性は、インスタンスを削除するまで固定。  | 
| 料金 |  インスタンスの使用量、EBS ボリューム、また、EBS スナップショットとして保存した AMI に対して料金が発生します。  |  インスタンスの使用量や Amazon S3 に保存した AMI に対して料金が発生します。  | 
| AMI の作成/バンドル | 単一のコマンドまたは呼び出しを使用 | AMI ツールをインストールして使用する必要があります | 

\$1 デフォルトでは、EBS ルートボリュームには `DeleteOnTermination` フラグが `true` に設定されています。このフラグを変更し、終了後もボリュームを保持する方法については、「[Amazon EC2 インスタンスの終了後も Amazon EBS ルートボリュームを保持する](configure-root-volume-delete-on-termination.md)」を参照してください。

\$1\$1 `io2` EBS ブロックエクスプレスのみでサポートされています。詳細については、「*Amazon EBS ユーザーガイド*」の「[プロビジョンド IOPS SSD Block Express ボリューム](https://docs.aws.amazon.com/ebs/latest/userguide/provisioned-iops.html#io2-block-express)」を参照してください。

# AMI によって決まるルートボリュームタイプを識別する
<a name="display-ami-root-device-type"></a>

EC2 インスタンスの起動に使用する AMI によってルートボリュームのタイプが決まります。EC2 インスタンスのルートボリュームは、EBS ボリュームまたはインスタンスストアボリュームのどちらかです。

[Nitro ベースのインスタンス](instance-types.md#instance-hypervisor-type)は、EBS ルートボリュームのみをサポートしています。インスタンスストアのルートボリュームをサポートしているインスタンスタイプは、次の旧世代のインスタンスタイプのみです: C1、C3、D2、I2、M1、M2、M3、R3、X1。

------
#### [ Console ]

**AMI によって決まるルートボリュームタイプを識別するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで **[AMI]** をクリックした後、AMI を選択します。

1. 次のように、**[Details]** (詳細) タブで **[Root device type]** (ルートデバイスタイプ) の値を確認します。
   + `ebs` – この AMI から起動されたインスタンスは、EBS ルートボリュームを取得します。
   + `instance store` – この AMI から起動されたインスタンスは、インスタンスストアのルートボリュームを取得します。

------
#### [ AWS CLI ]

**AMI によって決まるルートボリュームタイプを識別するには**  
[describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用します。

```
aws ec2 describe-images \
    --image-ids ami-0abcdef1234567890 \
    --query Images[].RootDeviceType
```

以下は出力の例です。

```
ebs
```

------
#### [ PowerShell ]

**AMI によって決まるルートボリュームタイプを識別するには**  
[Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) コマンドレットを使用します。

```
(Get-EC2Image `
    -ImageId ami-0abcdef1234567890).RootDeviceType.Value
```

以下は出力の例です。

```
ebs
```

------

## 仮想化タイプ
<a name="virtualization_types"></a>

Amazon マシンイメージ では、2 つの仮想化タイプ (準仮想化 (PV) およびハードウェア仮想マシン (HVM)) のどちらかを使用します。PV AMI と HVM AMI の主な違いは、起動の方法と、パフォーマンス向上のための特別なハードウェア拡張機能 (CPU、ネットワーク、ストレージ) を利用できるかどうかという点です。Windows AMI は、HVM AMI です。

以下の表では、HVM と PV AMI を比較しています。


| 特性 | HVM | PV | 
| --- | --- | --- | 
| 説明 | HVM AMI は、完全に仮想化された一連のハードウェアを備えており、イメージのルートブロックデバイスのマスターブートレコードを実行することによって起動します。この仮想化タイプでは、ベアメタルハードウェア上でオペレーティングシステムが動作するのと同様に、修正を行わなくても仮想マシン上でオペレーティングシステムを直接実行することができます。Amazon EC2 ホストシステムでは、ゲストに提供されている基盤となるハードウェアの一部またはすべてがエミュレートされます。 | PV AMI は、PV-GRUB と呼ばれる特別なブートローダーを使用して起動します。このブートローダーによって起動サイクルが開始され、イメージの menu.lst ファイルで指定されているカーネルがチェーンロードされます。準仮想化のゲストは、仮想化を明示的にサポートしていないホストハードウェアで実行できます。PV-GRUB の詳細や Amazon EC2 での使用方法については、「[ユーザー提供カーネル](https://docs.aws.amazon.com/linux/al2/ug/UserProvidedKernels.html)」を参照してください。 | 
| サポートされるインスタンスタイプ | すべての現行世代のインスタンスタイプは HVM AMI をサポートします。 | 次の旧世代のインスタンスタイプは、PV AMI をサポートします: C1、C3、M1、M3、M2、および T1。現行世代のインスタンスタイプは PV AMI をサポートしません。 | 
| ハードウェア拡張のサポート | HVM のゲストは、ホストシステム上の基盤となるハードウェアへの高速なアクセスを可能にするハードウェア拡張を利用できます。拡張ネットワークや GPU 処理を使用するために必要です。専用のネットワークや GPU デバイスに命令を伝達するには、OS がネイティブハードウェアプラットフォームにアクセスできる必要があります。HVM 仮想化ではこのアクセスが可能です。詳細については、「[Amazon EC2 インスタンスでの拡張ネットワーキング](enhanced-networking.md)」を参照してください。 | いいえ。拡張ネットワークや GPU 処理などの特別なハードウェア拡張を利用することはできません。 | 
| [検索方法](finding-an-ami.md) | コンソールまたは [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用して、AMI の仮想化タイプが hvm に設定されていることを確認します。 | コンソールまたは [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用して、AMI の仮想化タイプが paravirtual に設定されていることを確認します。 | 

**PV on HVM**  
従来、準仮想化のゲストはストレージやネットワークの操作については、HVM のゲストよりも高いパフォーマンスを実現していました。これは、準仮想化のゲストでは I/O 用の特別なドライバー (ネットワークとディスクのハードウェアをエミュレートする際のオーバーヘッドが回避されます) を活用することができたためです。これに対して、HVM のゲストでは、エミュレートされたハードウェアに対する命令を変換する必要がありました。現在では、PV ドライバーを HVM のゲストで利用できるようになりました。このため、準仮想化された環境で実行するためのができないオペレーティングシステムでも、これらのドライバーを使用することで、ストレージやネットワークの I/O でパフォーマンスの向上を確認することができます。このような PV on HVM ドライバーを使用すると、HVM のゲストで、準仮想化のゲストと同じまたはより優れたパフォーマンスを実現できます。