

# Agregar asignaciones de dispositivos de bloques AMI
<a name="ami-block-device-mapping"></a>

Cada AMI tiene una asignación de dispositivos de bloques que especifica los dispositivos de bloques que se deben adjuntar a una instancia cuando se inicia desde la AMI. Para añadir más dispositivos de bloques a una AMI, debe crear su propia AMI.

**Topics**
+ [Especificar una asignación de dispositivos de bloques para una AMI](#create-ami-bdm)
+ [Visualizar los volúmenes de EBS en una asignación de dispositivos de bloques de una AMI](#view-ami-bdm)

## Especificar una asignación de dispositivos de bloques para una AMI
<a name="create-ami-bdm"></a>

Existen dos maneras de especificar volúmenes además del volumen raíz al crear una AMI. Si ya ha adjuntado volúmenes a una instancia en ejecución antes de crear la AMI desde la instancia, la asignación de dispositivos de bloques de la AMI incluye esos mismos volúmenes. Para volúmenes de EBS, los datos existentes se guardan en una nueva instantánea, y es esta instantánea la que se especifica en la asignación de dispositivos de bloques. Para los volúmenes de almacén de instancias, los datos no se conservan.

Para una AMI respaldada por EBS, puede añadir volúmenes de EBS y volúmenes de almacén de instancias mediante una asignación de dispositivos de bloques Para una AMI basada en Amazon S3, puede agregar volúmenes del almacén de instancias solo modificando las entradas de la asignación de dispositivos de bloques en el archivo de manifiesto de la imagen al registrar la imagen.

**nota**  
Para instancias M3, debe especificar volúmenes de almacén de instancias en la asignación de dispositivos de bloques para la instancia al iniciarla. Al iniciar una instancia M3, los volúmenes de almacén de instancias especificados en la asignación de dispositivos de bloques de la AMI podrían omitirse si no se han especificado como parte de la asignación de dispositivos de bloques de la instancia.

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

**Para añadir volúmenes a una AMI**

1. Abra la consola de Amazon EC2.

1. En el panel de navegación, seleccione **Instances** (Instancia[s]).

1. Seleccione una instancia y elija **Acciones**, **Imagen y plantillas**, **Crear imagen**.

1. Introduzca un nombre y una descripción para la imagen.

1. Los volúmenes de instancia aparecen en **Volúmenes de instancia**. Para agregar otro volumen, elija **Agregar volumen**.

1. En **Tipo de volumen**, elija el tipo de volumen. Para **Dispositivo**, elija el nombre del dispositivo. Para un volumen de EBS, puede especificar detalles adicionales, como una instantánea, tamaño de volumen, tipo de volumen, IOPS y estado de cifrado.

1. Elija **Create image (Crear imagen)**.

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

**Para añadir volúmenes a una AMI**

Utilice el comando [create-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image.html) para especificar una asignación de dispositivos de bloques para una AMI respaldada por EBS. Utilice el comando [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) para especificar una asignación de dispositivos de bloques para una AMI basada en Amazon S3.

Especifique la asignación de dispositivos de bloques utilizando el parámetro `--block-device-mappings`. Puede especificar argumentos codificados en JSON directamente en la línea de comandos o haciendo referencia a un archivo JSON, como se muestra aquí.

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

Para añadir un volumen de almacén de instancias, utilice el siguiente mapeo: Tenga en cuenta que los volúmenes de almacenamiento de instancia NVMe se agregan automáticamente.

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

Para añadir un volumen de de 100 GiB vacío, utilice el siguiente mapeo:

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

Para añadir un volumen EBS basado en una instantánea, utilice el siguiente mapeo:

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

Para omitir un mapeo para un dispositivo, utilice el siguiente mapeo:

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

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

Utilice el cmdlet [New-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Image.html) para especificar una asignación de dispositivos de bloques para una AMI respaldada por EBS. Utilice el cmdlet [Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) para especificar una asignación de dispositivos de bloques para una AMI basada en Amazon S3.

Añada la opción `-BlockDeviceMapping` y especifique las actualizaciones en `bdm`:

```
-BlockDeviceMapping $bdm
```

La siguiente asignación agrega un volumen basado en una instantánea.

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

La siguiente asignación agrega un volumen vacío 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 los volúmenes de EBS en una asignación de dispositivos de bloques de una AMI
<a name="view-ami-bdm"></a>

Puede enumerar fácilmente los volúmenes de EBS en la asignación de dispositivos de bloques de una AMI.

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

**Para ver los volúmenes de EBS de una AMI**

1. Abra la consola de Amazon EC2.

1. En el panel de navegación, elija **AMIs**.

1. Elija **Imágenes de EBS** en la lista **Filtro** para obtener una lista de AMI respaldadas por EBS. 

1. Seleccione la AMI deseada y compruebe la pestaña **Detalles**. Como mínimo, se muestra la siguiente información sobre el volumen raíz (donde el término **dispositivo raíz** es sinónimo de **volumen raíz**):
   + **Tipo de dispositivo raíz** (`ebs`)
   + **Tipo de dispositivo raíz** (por ejemplo, `/dev/sda1`)
   + **Dispositivo de bloques** (por ejemplo, `/dev/sda1=snap-1234567890abcdef0:8:true`)

   Si la AMI se creó con volúmenes de EBS adicionales utilizando una asignación de dispositivos de bloques, el campo **Dispositivos de bloques** muestra también el mapeo de dichos volúmenes adicionales. (Esta pantalla no muestra volúmenes de almacén de instancias).

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

**Para ver los volúmenes de EBS de una AMI**  
Utilice el 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 ver los volúmenes de EBS de una AMI**  
Utilice el cmdlet [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html).

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

------