

# Tipos de instancia permitidos para la AMI
<a name="ami-allowed-instance-types"></a>

Como propietario de una AMI, puede especificar con qué tipos de instancia es compatible o no la AMI. Esto evita lanzamientos en tipos de instancia incompatibles. Amazon EC2 aplica las restricciones de tipos de instancia permitidos en el momento del lanzamiento.

Por ejemplo, si la AMI requiere hardware de GPU, puede restringir su uso únicamente a tipos de instancia con GPU. Si la AMI no es compatible con una familia de instancias específica, puede excluir esa familia de los tipos de instancia permitidos.

**Topics**
+ [Cómo funcionan los tipos de instancia permitidos](#ami-allowed-instance-types-how-it-works)
+ [Configuración de los tipos de instancia permitidos para una AMI](#ami-allowed-instance-types-set)
+ [Cómo ver los tipos de instancia permitidos para una AMI](#ami-allowed-instance-types-view)
+ [Comportamiento del lanzamiento con tipos de instancia permitidos](#ami-allowed-instance-types-launch-behavior)
+ [Consideraciones](#ami-allowed-instance-types-considerations)

## Cómo funcionan los tipos de instancia permitidos
<a name="ami-allowed-instance-types-how-it-works"></a>

Puede controlar los tipos de instancia permitidos mediante el atributo `InstanceTypeSpecification` de una AMI. Este atributo contiene dos listas:
+ `SupportedInstanceTypes`: los tipos de instancia con los que la AMI es compatible. Solo se pueden lanzar instancias de estos tipos con la AMI.
+ `UnsupportedInstanceTypes`: los tipos de instancia con los que la AMI no es compatible. Se pueden lanzar instancias de todos los demás tipos con la AMI.

Amazon EC2 evalúa la especificación según la siguiente lógica:
+ Si `InstanceTypeSpecification` no está configurado, Amazon EC2 permite todos los tipos de instancia. Este es el comportamiento predeterminado.
+ Si solo se configura `SupportedInstanceTypes`, se permiten únicamente los tipos de instancia especificados. Amazon EC2 bloquea todos los demás tipos de instancia.
+ Si solo se configura `UnsupportedInstanceTypes`, Amazon EC2 permite todos los tipos de instancia excepto los especificados.
+ Si ambas listas están configuradas, el tipo de instancia debe estar incluido en `SupportedInstanceTypes` y no debe estar incluido en `UnsupportedInstanceTypes`.

### Compatibilidad del comodín
<a name="ami-allowed-instance-types-wildcards"></a>

Ambas listas admiten patrones con comodines mediante el carácter `*`. Puede utilizar comodines para hacer coincidir varios tipos de instancia sin enumerarlos individualmente.

En la siguiente tabla se muestran ejemplos de patrones con comodines.


| Pattern | Coincide | 
| --- | --- | 
| t3.\* | Todos los tamaños de la familia de instancias t3 (por ejemplo, t3.micro, t3.small y t3.large) | 
| p4d.\* | Todos los tamaños de la familia de instancias p4d | 
| g5.\* | Todos los tamaños de la familia de instancias g5 | 
| \*xlarge | Cualquier tipo de instancia de tamaño xlarge o superior de todas las familias de instancias | 
| \*.12xlarge | Cualquier tipo de instancia 12xlarge de todas las familias de instancias | 

## Configuración de los tipos de instancia permitidos para una AMI
<a name="ami-allowed-instance-types-set"></a>

Puede configurar o cambiar los tipos de instancia permitidos para una AMI mediante la consola de Amazon EC2 o AWS Command Line Interface (AWS CLI). Debe ser el propietario de la AMI para realizar este procedimiento.

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

**Para configurar los tipos de instancia permitidos para una AMI**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

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

1. Seleccione la AMI y, a continuación, elija **Acciones**, **Administrar la especificación de tipos de instancia**.

1. En **Tipos de instancias compatibles** o **Tipos de instancias no compatibles**, elija **Agregar**.

1. Seleccione el tipo de instancia.

1. Seleccione **Save**.

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

**Para configurar los tipos de instancia compatibles con una AMI**  
Utilice el comando [replace-image-instance-type-specification](https://docs.aws.amazon.com/cli/latest/reference/ec2/replace-image-instance-type-specification.html). En el siguiente ejemplo, se permiten todos los tipos de instancia `t3` y `a2`, excepto `t3.micro`.

```
aws ec2 replace-image-instance-type-specification \
    --image-id {{ami-1234567890abcdef0}} \
    --instance-type-specification '{"SupportedInstanceTypes": ["t3.*", "a2.*"], "UnsupportedInstanceTypes": ["t3.micro"]}'
```

**Para configurar únicamente los tipos de instancia no compatibles con una AMI**  
Utilice el siguiente comando para bloquear tipos de instancia específicos y permitir todos los demás.

```
aws ec2 replace-image-instance-type-specification \
    --image-id {{ami-1234567890abcdef0}} \
    --instance-type-specification '{"UnsupportedInstanceTypes": ["t3.micro", "t3.nano"]}'
```

**Para eliminar la especificación de tipos de instancia de una AMI**  
Utilice el siguiente comando sin especificar `--instance-type-specification` para eliminar la restricción y permitir todos los tipos de instancia.

```
aws ec2 replace-image-instance-type-specification \
    --image-id {{ami-1234567890abcdef0}}
```

------

## Cómo ver los tipos de instancia permitidos para una AMI
<a name="ami-allowed-instance-types-view"></a>

Puede ver la especificación de tipos de instancia de una AMI mediante la consola de Amazon EC2 o la AWS CLI.

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

**Para ver los tipos de instancia permitidos para una AMI**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

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

1. Seleccione la AMI.

1. En la pestaña **Detalles**, consulte los tipos de instancia compatibles y no compatibles.

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

**Para ver la especificación de tipos de instancia de una AMI**  
Utilice el comando [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html). Si la AMI tiene una especificación de tipos de instancia, la respuesta incluye el campo `InstanceTypeSpecification`.

```
aws ec2 describe-images \
    --image-ids {{ami-1234567890abcdef0}}
```

El siguiente ejemplo muestra la salida de una AMI con una especificación de tipos de instancia.

```
{
    "Images": [
        {
            "ImageId": "ami-1234567890abcdef0",
            ...
            "InstanceTypeSpecification": {
                "SupportedInstanceTypes": [
                    {
                        "InstanceType": "t3.*"
                    },
                    {
                        "InstanceType": "a2.*"
                    }
                ],
                "UnsupportedInstanceTypes": [
                    {
                        "InstanceType": "t3.micro"
                    }
                ]
            }
        }
    ]
}
```

------

## Comportamiento del lanzamiento con tipos de instancia permitidos
<a name="ami-allowed-instance-types-launch-behavior"></a>

Al lanzar una instancia, Amazon EC2 comprueba si el tipo de instancia especificado es compatible con la especificación de tipos de instancia de la AMI. Si el tipo de instancia no está permitido, Amazon EC2 bloquea el lanzamiento y devuelve un error.

**Ejemplo: lanzamiento bloqueado**  
El siguiente comando intenta lanzar una instancia `t3.micro` mediante una AMI que no es compatible con `t3.micro`.

```
aws ec2 run-instances \
    --image-id {{ami-1234567890abcdef0}} \
    --instance-type t3.micro
```

Amazon EC2 devuelve el siguiente error:

```
An error occurred (InvalidParameterCombination) when calling the RunInstances operation: This AMI does not support the specified instance type. Check DescribeImages for InstanceTypeSpecification, and try again.
```

Para resolver este error, elija un tipo de instancia compatible con la AMI. Utilice el comando `describe-images` para ver la especificación de tipos de instancia de la AMI.

## Consideraciones
<a name="ami-allowed-instance-types-considerations"></a>

Tenga en cuenta la siguiente información cuando utilice tipos de instancia permitidos.
+ De forma predeterminada, una AMI no tiene ninguna especificación de tipos de instancia. Amazon EC2 permite todos los tipos de instancia hasta que configure explícitamente una especificación.
+ Solo el propietario de la AMI puede establecer o cambiar la especificación de tipos de instancia.
+ Cuando copia una AMI mediante `CopyImage`, Amazon EC2 conserva la especificación de tipos de instancia en la nueva AMI.
+ Amazon EC2 aplica la especificación de tipos de instancia como una restricción estricta. Si el tipo de instancia no está permitido, el lanzamiento falla con un error `InvalidParameterCombination`.
+ La especificación no afecta a las instancias existentes. Solo se aplica a los nuevos lanzamientos.
+ Las plantillas de lanzamiento y los grupos de escalado automático que hacen referencia a una AMI con una especificación de tipos de instancia pueden fallar si el tipo de instancia configurado no está permitido. Se recomienda verificar la compatibilidad antes de configurar una especificación en las AMI compartidas.
+ La acción `ReplaceImageInstanceTypeSpecification` reemplaza toda la especificación. Para agregar o eliminar tipos de instancia específicos, debe incluir la especificación actualizada completa en la solicitud.