

# AMI へのブロックデバイスマッピングの追加
<a name="ami-block-device-mapping"></a>

各 AMI にブロックデバイスマッピングがあります。このブロックデバイスマッピングはAMI からのインスタンスの起動時にそのインスタンスにアタッチするブロックデバイスを指定します。追加のブロックデバイスを AMI に追加するには独自の AMI を作成する必要があります。

**Topics**
+ [AMI 用のブロックデバイスマッピングの指定](#create-ami-bdm)
+ [AMI ブロックデバイスマッピングの EBS ボリュームの表示](#view-ami-bdm)

## AMI 用のブロックデバイスマッピングの指定
<a name="create-ami-bdm"></a>

AMI を作成する場合に、ルートボリュームに加えて、ボリュームを指定するには2 つの方法があります。インスタンスから AMI を作成する前に、実行中のインスタンスにすでにボリュームをアタッチしている場合、AMI のブロックデバイスマッピングにそれらの同じボリュームが含まれます。EBS ボリュームの場合、既存のデータが新しいスナップショットに保存され、それがブロックデバイスマッピングで指定される新しいスナップショットになります。インスタンスストアボリュームの場合、データは維持されません。

EBS-backed AMI の場合、ブロックデバイスマッピングを使用して、EBS ボリュームとインスタンスストアボリュームを追加できます。Amazon S3-backed AMI の場合、イメージの登録時にイメージマニフェストファイルでブロックデバイスマッピングエントリを変更して、インスタンスストアボリュームのみを追加できます。

**注記**  
M3 インスタンスの場合、インスタンスのブロックデバイスマッピングで起動時にインスタンスストアボリュームを指定する必要があります。AMI のブロックデバイスマッピングで指定したインスタンスストアボリュームはインスタンスブロックデバイスマッピングの一部として指定されていない場合、M3 インスタンスを起動した際に無視される可能性があります。

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

**AMI にボリュームを追加するには**

1. Amazon EC2 コンソールを開きます。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択し、[**アクション**]、[**イメージとテンプレート**]、[**イメージの作成**] の順に選択してください。

1. イメージの名前と説明を入力してください。

1. インスタンスボリュームが [**インスタンスボリューム**] の下に表示されます。別のボリュームを追加するには[**ボリュームの追加**] を選択してください。

1. [**Volume type**] で、ボリュームタイプを選択してください。[**Device**] で、デバイス名を選択してください。EBS ボリュームではスナップショット、ボリュームサイズ、ボリュームタイプ、IOPS、暗号化状態などの追加の詳細を指定できます。

1. [**イメージを作成**] を選択してください。

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

**AMI にボリュームを追加するには**

EBS-Backed AMI のブロックデバイスマッピングを指定するには [create-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image.html) マンドを使用します。Amazon S3-backed AMI のブロックデバイスマッピングを指定するには [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) コマンドを使用します。

`--block-device-mappings` パラメータを使用してブロックデバイスマッピングを指定します。次に示すように、JSON でエンコードされた引数をコマンドラインで直接指定することも、JSON ファイルを参照して指定することもできます。

```
--block-device-mappings file://mapping.json
```

インスタンスストアボリュームを追加するには次のマッピングを使用します。NVMe インスタンスストアボリュームは自動的に追加されることに注意してください。

```
{
    "DeviceName": "device_name",
    "VirtualName": "ephemeral0"
}
```

空の 100 GiB ボリュームを追加するには次のマッピングを使用します。

```
{
    "DeviceName": "device_name",
    "Ebs": {
      "VolumeSize": 100
    }
}
```

スナップショットに基づいた EBS ボリュームを追加するには次のマッピングを使用します。

```
{
    "DeviceName": "device_name",
    "Ebs": {
      "SnapshotId": "snap-1234567890abcdef0"
    }
}
```

デバイスのマッピングを省略するには次のマッピングを使用します。

```
{
    "DeviceName": "device_name",
    "NoDevice": ""
}
```

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

[New-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Image.html) コマンドレットを使用して、EBS-Backed AMI のブロックデバイスマッピングを指定します。[Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) コマンドレットを使用して、Amazon S3-backed AMI のブロック デバイスマッピングを指定します。

`-BlockDeviceMapping` オプションを追加し、 `bdm` で更新を指定します。

```
-BlockDeviceMapping $bdm
```

次のマッピングは、スナップショットに基づいてボリュームを追加します。

```
$ebd = New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice
$ebd.SnapshotId = "snap-1234567890abcdef0"
$bdm = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$bdm.DeviceName = "device_name"
$bdm.Ebs = $ebd
```

次のマッピングは、空の 100 GB ボリュームを追加します。

```
$ebd = New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice
$ebd.VolumeSize = 100
$bdm = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$bdm.DeviceName = "device_name"
$bdm.Ebs = $ebd
```

------

## AMI ブロックデバイスマッピングの EBS ボリュームの表示
<a name="view-ami-bdm"></a>

AMI のブロックデバイスマッピングの EBS ボリュームを簡単に列挙できます。

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

**AMI の EBS ボリュームを表示するには**

1. Amazon EC2 コンソールを開きます。

1. ナビゲーションペインで [**AMI**] を選択してください。

1. [**Filter**] リストから [**EBS images**] を選択して、EBS-Backed AMI のリストを取得します。

1. ご希望の AMI を選択し、[**Details**] タブを確認します。少なくとも、ルートボリューム (**ルートデバイス**という用語が**ルートボリューム**と同等である場合) には、次の情報を使用できます。
   + **ルートデバイスタイプ** (`ebs`)
   + [**ルートデバイス名**] (例: `/dev/sda1`)
   + [**Block Devices**] (例: `/dev/sda1=snap-1234567890abcdef0:8:true`)

   AMI がブロックデバイスマッピングを使用して追加の EBS ボリュームで作成された場合、[**Block Devices**] フィールドにはその追加の EBS ボリュームのマッピングも表示されます。(この画面にはインスタンスストアボリュームは表示されません。)

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

**AMI の EBS ボリュームを表示するには**  
[describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用します。

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

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

**AMI の EBS ボリュームを表示するには**  
[Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) コマンドレットを使用します。

```
(Get-EC2Image -ImageId ami-0abcdef1234567890).BlockDeviceMappings
```

------