

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將區塊型儲存設備映射新增至 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 時指定除了根磁碟區以外的其他磁碟區。如果您從執行個體建立 AMI 之前已將磁碟區連接至執行中的執行個體，AMI 的區塊型設備映射將包含這些相同的磁碟區。如為 EBS 磁碟區，現有資料將儲存至新快照，而區塊型設備映射中將指定這個新快照。如為執行個體存放磁碟區，資料將不會保留。

如為 EBS 後端 AMI，您可用區塊型設備映射新增 EBS 磁碟區和執行個體存放磁碟區。如為 Amazon S3 支援的 AMI，您只能在登錄映像時修改映像工作資訊清單檔案中的區塊型儲存設備映射項目，以此方式來新增執行個體儲存體磁碟區。

**注意**  
如為 M3 執行個體，您必須在啟動時在執行個體的區塊型設備映射中指定執行個體存放磁碟區。啟動 M3 執行個體時，若未指定為執行個體區塊型設備映射，AMI 區塊型設備映射中指定的執行個體存放磁碟區將遭忽略。

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

**將磁碟區新增至 AMI**

1. 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇 **Instances** (執行個體)。

1. 選取執行個體並選取 **Actions (動作)**、**Image and templates (影像和範本)**、**Create image (建立影像)**。

1. 輸入影像的名稱和說明。

1. 執行個體磁碟區會出現在 **Instance volumes (執行個體磁碟區)** 下。若要新增其他磁碟區，請選擇 **Add volume (新增磁碟區) **。

1. 針對 **Volume Type (磁碟區類型)**，選擇一種磁碟區類型。對於**Device (裝置)**，請選擇裝置名稱。對於 EBS 磁碟區，您可以指定其他詳細資訊，例如：快照、磁碟區大小、磁碟區類型、IOPS 和加密狀態。

1. 選擇**建立映像**。

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

**將磁碟區新增至 AMI**

使用 [create-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image.html) 命令，指定基於 EBS 的 AMI 的區塊型儲存設備映射。使用 [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) 命令，指定基於 Amazon S3 的 AMI 的區塊型儲存設備映射。

使用 `--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) cmdlet，指定基於 EBS 的 AMI 的區塊型儲存設備映射。使用 [Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) cmdlet，指定基於 Amazon S3 的 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 GiB 的空磁碟區。

```
$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. 在導覽窗格中，選擇 **AMIs** (AMI)。

1. 從 **Filter (篩選條件)** 清單中選擇 **EBS images (EBS 映像)**，以顯示 EBS 後端 AMI 的清單。

1. 選取所要的 AMI，然後檢視 **Details (詳細資訊)** 索引標籤。根磁碟區至少具有以下資訊 (其中**根裝置**一詞等同於**根磁碟區**)：
   + **Root Device Type (根設備類型**)`ebs` ()
   + **Root Device Name (根設備名稱)** (例如，`/dev/sda1`)
   + **Block Devices (區塊型儲存設備)** (例如，`/dev/sda1=snap-1234567890abcdef0:8:true`)

   如果使用區塊型設備映射建立含額外 EBS 磁碟區的 AMI，**Block Devices (區塊型儲存設備)** 欄位也會顯示額外磁碟區的映射。(此畫面不會顯示執行個體存放磁碟區。)

------
#### [ 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) cmdlet。

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

------