

# Adicionar mapeamentos de dispositivos de blocos a uma AMI
<a name="ami-block-device-mapping"></a>

Cada AMI tem um mapeamento de dispositivos de blocos que especifica os dispositivos de blocos a serem associados a uma instância quando é executada pela AMI. Para adicionar mais dispositivos de blocos a uma AMI, crie sua própria AMI.

**Topics**
+ [Especificar um mapeamento de dispositivos de blocos para uma AMI](#create-ami-bdm)
+ [Visualizar os volumes do EBS em um mapeamento de dispositivo de blocos da AMI](#view-ami-bdm)

## Especificar um mapeamento de dispositivos de blocos para uma AMI
<a name="create-ami-bdm"></a>

Há duas maneiras de especificar volumes além do volume do dispositivo raiz ao criar uma AMI. Se você já tiver associado volumes a uma instância em execução antes de criar uma AMI pela instância, o mapeamento de dispositivos de blocos para a AMI incluirá os mesmos volumes. Para volumes do EBS, os dados existentes são salvos em um novo snapshot, e é esse novo snapshot que é especificado no mapeamento de dispositivos de blocos. Para volumes de armazenamento de instâncias, os dados não são preservados.

Para AMI baseados em EBS, é possível adicionar volumes do EBS e volumes de armazenamento de instâncias usando um mapeamento de dispositivos de blocos. Em uma AMI baseada no Amazon S3, é possível adicionar volumes de armazenamento de instância apenas alterando as entradas do mapeamento de dispositivos de blocos no arquivo de manifesto da imagem durante o registro da AMI.

**nota**  
Para instâncias M3, especifique volumes de armazenamento de instâncias no mapeamento de dispositivos de blocos para a instância ao iniciá-los. Quando você executa uma instância M3, os volumes de armazenamento de instâncias especificados no mapeamento de dispositivos de blocos para a AMI poderão ser ignorados se não forem especificados como parte do mapeamento de dispositivos de blocos da instância.

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

**Para adicionar volumes a uma AMI**

1. Abra o console do Amazon EC2.

1. No painel de navegação, escolha **Instances (Instâncias)**.

1. Selecione uma instância e escolha **Actions** (Ações), **Image and templates** (Imagem e modelos), **Create image** (Criar imagem).

1. Insira um nome e uma descrição para a imagem.

1. Os volumes de instância aparecem em **Volumes de instância** (Volumes de instância). Para adicionar outro volume, escolha **Add volume** (Adicionar volume).

1. Em **Volume type** (Tipo de volume), escolha o tipo de volume. Para **Device** (Dispositivo), escolha o nome do dispositivo. Para um volume do EBS, é possível especificar detalhes adicionais, como um snapshot, o tamanho do volume, o tipo de volume, IOPS e estado de criptografia.

1. Escolha **Create Image (Criar imagem)**.

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

**Para adicionar volumes a uma AMI**

Use o comando [create-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image.html) para especificar um mapeamento de dispositivos de blocos para uma AMI com EBS. Use o comando [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) para especificar um mapeamento de dispositivos de blocos para uma AMI baseada no Amazon S3.

Especifique o mapeamento de dispositivos de blocos usando o parâmetro `--block-device-mappings`. Você pode especificar argumentos codificados em JSON diretamente na linha de comando ou referenciando um arquivo JSON, como mostrado aqui.

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

Para adicionar um volume de armazenamento de instâncias, use o mapeamento a seguir. Observe que os volumes de armazenamento de instância NVMe são adicionados automaticamente.

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

Para adicionar um volume vazio do de 100 GiB, use o mapeamento a seguir.

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

Para adicionar um volume do EBS com base em um snapshot, use o mapeamento a seguir.

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

Para omitir um mapeamento de um dispositivo, use o mapeamento a seguir:

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

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

Use o cmdlet [New-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Image.html) para especificar um mapeamento de dispositivos de blocos para uma AMI baseada no EBS. Use o cmdlet [Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) para especificar um mapeamento de dispositivos de blocos para uma AMI baseada no Amazon S3.

Adicione a opção `-BlockDeviceMapping`, especificando as atualizações em `bdm`:

```
-BlockDeviceMapping $bdm
```

O exemplo a seguir adiciona um volume com base em um snapshot.

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

O mapeamento a seguir adiciona um volume vazio de 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
```

------

## Visualizar os volumes do EBS em um mapeamento de dispositivo de blocos da AMI
<a name="view-ami-bdm"></a>

É possível facilmente enumerar volumes do EBS no mapeamento de dispositivos de blocos para AMI.

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

**Para visualizar os volumes do EBS de uma AMI**

1. Abra o console do Amazon EC2.

1. No painel de navegação, selecione **AMIs**.

1. Escolha **EBS images (Imagens de EBS)** da lista **Filter (Filtro)** para obter uma lista de AMIs com EBS. 

1. Selecione a AMI desejada e examine a guia **Details (Detalhes)**. No mínimo, você pode acessar as seguintes informações sobre o volume raiz, sendo que o termo **dispositivo raiz** tem o mesmo significado de **volume raiz**:
   + **Root Device Type (Tipo de dispositivo raiz** (`ebs`)
   + **Root Device Name (Nome do dispositivo raiz)** (por exemplo, `/dev/sda1`)
   + **Block Devices (Dispositivos de blocos)** (por exemplo, `/dev/sda1=snap-1234567890abcdef0:8:true`)

   Se a AMI tiver sido criada com volumes do EBS adicionais usando um mapeamento de dispositivos de blocos, o campo **Block Devices (Dispositivos de blocos)** exibirá o mapeamento desses volumes adicionais também. (Essa tela não exibe volumes de armazenamento de instâncias.)

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

**Para visualizar os volumes do EBS de uma AMI**  
Use o comando [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 ]

**Para visualizar os volumes do EBS de uma AMI**  
Use o cmdlet [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html).

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

------