

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Tutorial: Pruebe las interrupciones de una instancia puntual mediante FIS AWS
<a name="fis-tutorial-spot-interruptions"></a>

Las instancias puntuales utilizan EC2 la capacidad sobrante disponible, con un descuento de hasta un 90% en comparación con los precios bajo demanda. Sin embargo, Amazon EC2 puede interrumpir sus instancias puntuales cuando necesite recuperar la capacidad. Cuando utilice instancias de spot, debe estar preparado para las posibles interrupciones. Para obtener más información, consulte [Interrupciones de instancias puntuales](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html) en la *Guía del EC2 usuario de Amazon*.

Puede utilizar el servicio de inyección de AWS fallos (AWS FIS) para comprobar cómo gestionan sus aplicaciones las interrupciones de una instancia puntual. Utilice este tutorial para crear una plantilla de experimento que utilice la `aws:ec2:send-spot-instance-interruptions` acción AWS FIS para interrumpir una de sus instancias puntuales.

Como alternativa, para iniciar el experimento con la EC2 consola de Amazon, consulte [Iniciar una interrupción de una instancia puntual](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/initiate-a-spot-instance-interruption.html) en la *Guía del EC2 usuario de Amazon*.

## Requisitos previos
<a name="spot-interruptions-prerequisites"></a>

Antes de poder utilizar el AWS FIS para interrumpir una instancia puntual, complete los siguientes requisitos previos.

**1. Creación de un rol de IAM**  
Cree un rol y adjunte una política que permita a la AWS FIS realizar la `aws:ec2:send-spot-instance-interruptions` acción en su nombre. Para obtener más información, consulte [Funciones de IAM para los experimentos de AWS FIS](getting-started-iam-service-role.md).

**2. Verifique el acceso al AWS FIS**  
Asegúrese de tener acceso al AWS FIS. Para obtener más información, consulte [Ejemplos de política de AWS FIS](security_iam_id-based-policy-examples.md).

**3. (Opcional) Crear una solicitud de instancia de spot**  
Si desea utilizar una nueva instancia de spot en este experimento, utilice el comando [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) para solicitar una instancia de spot. El comportamiento predeterminado es terminar las instancias de spot cuando se interrumpen. Si establece el comportamiento de interrupción en `stop`, también debe establecer el tipo en `persistent`. Para este tutorial, no defina el comportamiento de interrupción en `hibernate`, ya que el proceso de hibernación comenzará inmediatamente.

```
aws ec2 run-instances \
    --image-id {{ami-0ab193018fEXAMPLE}} \
    --instance-type "{{t2.micro}}" \
    --count 1 \
    --subnet-id {{subnet-1234567890abcdef0}} \
    --security-group-ids {{sg-111222333444aaab}} \
    --instance-market-options file://{{spot-options.json}} \
    --query Instances[*].InstanceId
```

A continuación se muestra un ejemplo del archivo `spot-options.json`.

```
{
    "MarketType": "spot",
    "SpotOptions": { 
        "SpotInstanceType": "persistent",
        "InstanceInterruptionBehavior": "stop"
    }
}
```

La opción `--query` del comando de ejemplo permite que el comando devuelva solo el ID de instancia de la instancia de spot. A continuación, se muestra un ejemplo del resultado.

```
[
    "i-0abcdef1234567890"   
]
```

**4. Añada una etiqueta para que el AWS FIS pueda identificar la instancia puntual de destino**  
Utilice el comando [create-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html) para añadir la etiqueta Name=interruptMe a su instancia puntual de destino.

```
aws ec2 create-tags \
    --resources {{i-0abcdef1234567890}} \
    --tags Key=Name,Value=interruptMe
```

## Paso 1: Crear una plantilla de experimento
<a name="spot-interruptions-create-template"></a>

Cree la plantilla del experimento con la consola AWS FIS. En la plantilla, especifique la acción que se ejecutará. La acción interrumpe la instancia de spot con la etiqueta especificada. Si hay más de una instancia de spot con la etiqueta, AWS FIS elige una de ellas al azar.

**Para crear una plantilla de experimento**

1. Abra la consola AWS FIS en. [https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/)

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

1. Elija **Crear plantilla de experimento**.

1. En el **paso 1, Especificar los detalles de la plantilla**, haga lo siguiente:

   1. En **Descripción y nombre**, escriba un nombre y una descripción para la plantilla.

   1. Seleccione **Siguiente** y vaya al **paso 2, Especificar acciones y objetivos**. 

1. En **Actions (Acciones)**, haga lo siguiente:

   1. Seleccione **Agregar acción**.

   1. Escriba un nombre para la acción. Por ejemplo, escriba **interruptSpotInstance**.

   1. En **Tipo de acción**, elija **aws:ec2:**. send-spot-instance-interruptions

   1. En **Target**, mantenga el objetivo que AWS FIS cree para usted.

   1. En **Parámetros de acción**, **Duración antes de la interrupción**, especifique 2 minutos (PT2M).

   1. Seleccione **Guardar**.

1. En **Destinos**, haga lo siguiente:

   1. Elija **Editar** en el destino que AWS FIS creó automáticamente en el paso anterior.

   1. Sustituya el nombre por defecto por un nombre más descriptivo. Por ejemplo, escriba **oneSpotInstance**.

   1. Compruebe que **Tipo de recurso** sea **aws:ec2:spot-instance**.

   1. En **Método de destino**, elija **Etiquetas, filtros y parámetros de recursos**.

   1. En **Etiquetas de recursos**, elija **Agregar nueva etiqueta** e ingrese la clave y el valor de la etiqueta. Utilice la etiqueta que ha agregado a la instancia de spot que se va a interrumpir, tal y como se describe en Requisitos previos de este tutorial.

   1. En **Filtros de recursos**, elija **Agregar nuevo filtro** e ingrese **State.Name** como ruta y **running** como valor.

   1. En **Modo de selección**, elija **Recuento**. En **Cantidad de recursos**, escriba **1**.

   1. Seleccione **Guardar**.

1. Seleccione **Siguiente** para ir al **paso 3, Configurar el acceso al servicio**. 

1. En **Acceso al servicio**, elija **Usar un rol de IAM existente** y, a continuación, elija el rol de IAM que creó, tal como se describe en los requisitos previos de este tutorial. Si su rol no aparece, compruebe que tiene la relación de confianza requerida. Para obtener más información, consulte [Funciones de IAM para los experimentos de AWS FIS](getting-started-iam-service-role.md).

1. Seleccione **Siguiente** para pasar al **paso 4, Configurar los ajustes opcionales**. 

1. (Opcional) En **Etiquetas**, elija **Agregar nueva etiqueta** y especifique una clave y un valor de etiqueta. Las etiquetas que agregue se aplican a la plantilla de experimento, no a los experimentos que se ejecutan con la plantilla.

1. Seleccione **Siguiente** para pasar al **paso 5, Revisar y crear**. 

1. Revisa la plantilla y selecciona **Crear plantilla de experimento**. Cuando se solicite la confirmación, introduzca y`create`, a continuación, seleccione **Crear plantilla de experimento**. 

**(Opcional) Para ver la plantilla de experimento JSON**  
Elija la pestaña **Exportar**. A continuación, verá un ejemplo del JSON creado por el procedimiento de consola anterior.

```
{
    "description": "Test Spot Instance interruptions",
    "targets": {
        "oneSpotInstance": {
            "resourceType": "aws:ec2:spot-instance",
            "resourceTags": {
                "Name": "interruptMe"
            },
            "filters": [
                {
                    "path": "State.Name",
                    "values": [
                        "running"
                    ]
                }
            ],
            "selectionMode": "COUNT(1)"
        }
    },
    "actions": {
        "interruptSpotInstance": {
            "actionId": "aws:ec2:send-spot-instance-interruptions",
            "parameters": {
                "durationBeforeInterruption": "PT2M"
            },
            "targets": {
                "SpotInstances": "oneSpotInstance"
            }
        }
    },
    "stopConditions": [
        {
            "source": "none"
        }
    ],
    "roleArn": "arn:aws:iam::{{123456789012}}:role/{{AllowFISSpotInterruptionActions}}",
    "tags": {
        "Name": "my-template"
    }
}
```

## Paso 2: Iniciar el experimento
<a name="spot-interruptions-start-experiment"></a>

Cuando haya terminado de crear la plantilla de experimento, podrá utilizarla para iniciar un experimento.

**Para iniciar un experimento**

1. Debería estar en la página de detalles de la plantilla de experimento que acaba de crear. De lo contrario, elija **Plantillas de experimento** y, a continuación, seleccione el ID de la plantilla de experimento para abrir la página de detalles.

1. Elija **Start experiment** (Iniciar experimento).

1. (Opcional) Para agregar una etiqueta a su experimento, elija **Agregar nueva etiqueta** e ingrese una clave y un valor de etiqueta.

1. Elija **Start experiment** (Iniciar experimento). Cuando se le pida que confirme, ingrese **start** y elija **Iniciar experimento**.

## Paso 3: Hacer un seguimiento del progreso del experimento
<a name="spot-interruptions-track-experiment"></a>

Puede hacer un seguimiento del progreso de un experimento en ejecución hasta que se complete, se detenga o falle.

**Para hacer un seguimiento del progreso de un experimento**

1. Debería estar en la página de detalles del experimento que acaba de iniciar. De lo contrario, elija **Experimentos** y, a continuación, seleccione el ID del experimento para abrir la página de detalles.

1. Para ver el estado del experimento, seleccione **Estado** en el panel **Detalles**. Para obtener más información, consulte [Estados de experimento](view-experiment-progress.md#experiment-states).

1. Vaya al siguiente paso cuando el estado del experimento sea **En ejecución**.

## Paso 4: Verificar el resultado del experimento
<a name="spot-interruptions-verify-experiment-result"></a>

Cuando la acción de este experimento se complete, ocurre lo siguiente:
+ La instancia de spot de destino recibe una [recomendación de reequilibrio de instancias](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/rebalance-recommendations.html).
+ Se emite un [aviso de interrupción de la instancia puntual](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html#spot-instance-termination-notices) dos minutos antes de que Amazon EC2 cancele o detenga la instancia.
+ Cuando pasan dos minutos, la instancia de spot se termina o detiene.
+ Una instancia puntual detenida por el AWS FIS permanece detenida hasta que la reinicie.

**Para verificar que el experimento interrumpió la instancia**

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

1. En el panel de navegación, abra **Spot Requests** (Solicitudes de spot) e **Instances** (Instancia[s]) en pestañas o ventanas separadas del navegador.

1. En **Spot Requests** (Solicitudes de spot), seleccione la solicitud de instancia de spot. El estado inicial es.`fulfilled` Una vez completado el experimento, el estado cambia de la siguiente manera:
   + `terminate`: el estado cambia a `instance-terminated-by-experiment`.
   + `stop`: el estado cambia a `marked-for-stop-by-experiment` y, a continuación, a `instance-stopped-by-experiment`.

1. En **Instances** (instancia[s]), seleccione la instancia de spot. El estado inicial es.`Running` Dos minutos después de recibir el aviso de interrupción de la instancia de spot, el estado cambia de la siguiente forma:
   + `stop`: el estado cambia a `Stopping` y, a continuación, a `Stopped`.
   + `terminate`: el estado cambia a `Shutting-down` y, a continuación, a `Terminated`.

## Paso 5: Eliminar
<a name="spot-interruptions-cleanup"></a>

Si creó la instancia de spot de prueba para este experimento con un comportamiento de interrupción de `stop` y ya no la necesita, puede cancelar la solicitud de instancia de spot y terminarla.

**Para cancelar la solicitud y finalizar la instancia mediante el AWS CLI**

1. Utilice el [cancel-spot-instance-requests](https://docs.aws.amazon.com/cli/latest/reference/ec2/cancel-spot-instance-requests.html)comando para cancelar la solicitud de instancia puntual.

   ```
   aws ec2 cancel-spot-instance-requests --spot-instance-request-ids {{sir-ksie869j}}
   ```

1. Utilice el comando [terminate-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html) para terminar la instancia.

   ```
   aws ec2 terminate-instances --instance-ids {{i-0abcdef1234567890}}
   ```

Si ya no necesita la plantilla de experimento, puede eliminarla.

**Para eliminar una plantilla de experimento mediante la consola AWS FIS**

1. Abra la consola AWS FIS en. [https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/)

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

1. Seleccione la plantilla de experimento y elija **Acciones**, **Eliminar plantilla de experimento**.

1. Cuando se le solicite confirmación, ingrese **delete** y luego, elija **Eliminar plantilla de experimento**.