

# 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. 탐색 창에서 **인스턴스**를 선택합니다.

1. 인스턴스를 선택하고 [**작업(Actions)**], [**이미지 및 템플릿(Image and templates)**], [**이미지 생성(Create image)**]을 선택합니다.

1. 이미지의 이름과 설명을 입력합니다.

1. [**인스턴스 볼륨(Instance volumes)**] 아래에 인스턴스 볼륨이 나타납니다. 다른 볼륨을 추가하려면 [**볼륨 추가(Add volume)**]를 선택합니다.

1. [**볼륨 유형(Volume type)**]에서 볼륨 유형을 선택합니다. [**디바이스(Device)**]에서 디바이스 이름을 선택합니다. EBS 볼륨의 경우 스냅샷, 볼륨 크기, 볼륨 유형, IOPS 및 암호화 상태와 같은 추가 세부 정보를 지정할 수 있습니다.

1. **이미지 생성(Create image)**을 선택합니다.

------
#### [ 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"
}
```

비어 있는 100GiB 볼륨을 추가하려면 다음 매핑을 사용합니다.

```
{
    "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에 대한 블록 디바이스 매핑을 지정합니다.

`bdm`에 업데이트를 지정하여 `-BlockDeviceMapping` 옵션을 추가합니다.

```
-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
```

다음 매핑은 비어 있는 100GiB 볼륨을 추가합니다.

```
$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. **필터** 목록에서 **EBS 이미지**를 선택하여 EBS 지원 AMI 목록을 가져옵니다.

1. 원하는 AMI를 선택한 후 **세부 정보** 탭을 확인합니다. 루트 볼륨(**루트 디바이스**라는 용어가 **루트 볼륨**과 동일한 경우)에 대해 최소한 다음 정보를 사용할 수 있습니다.
   + **루트 디바이스 유형** (`ebs`)
   + **루트 디바이스 이름**(예: `/dev/sda1`)
   + **블록 디바이스**(예: `/dev/sda1=snap-1234567890abcdef0:8:true`)

   AMI가 블록 디바이스 매핑을 사용하여 추가 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) cmdlet을 사용합니다.

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

------