

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Tutorial: Test delle interruzioni delle istanze Spot con AWS FIS
<a name="fis-tutorial-spot-interruptions"></a>

Le istanze Spot utilizzano la EC2 capacità inutilizzata disponibile, con uno sconto fino al 90% rispetto ai prezzi On-Demand. Tuttavia, Amazon EC2 può interrompere le tue istanze Spot quando ha bisogno di recuperare la capacità. Quando utilizzi le istanze Spot, devi essere preparato a potenziali interruzioni. Per ulteriori informazioni, consulta le [interruzioni delle istanze Spot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html) nella *Amazon EC2 User Guide*.

Puoi utilizzare AWS AWS Fault Injection Service (FIS) per testare in che modo le tue applicazioni gestiscono un'interruzione di un'istanza Spot. Usa questo tutorial per creare un modello di esperimento che utilizzi l'`aws:ec2:send-spot-instance-interruptions`azione AWS FIS per interrompere una delle tue istanze Spot.

In alternativa, per avviare l'esperimento utilizzando la EC2 console Amazon, consulta [Avviare un'interruzione di un'istanza Spot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/initiate-a-spot-instance-interruption.html) nella *Amazon EC2 * User Guide.

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

Prima di poter utilizzare AWS FIS per interrompere un'istanza Spot, completa i seguenti prerequisiti.

**1. Creazione di un ruolo IAM**  
Crea un ruolo e allega una politica che consenta a AWS FIS di eseguire l'`aws:ec2:send-spot-instance-interruptions`azione per tuo conto. Per ulteriori informazioni, consulta [Ruoli IAM per AWS esperimenti FIS](getting-started-iam-service-role.md).

**2. Verifica l'accesso al AWS FIS**  
Assicurati di avere accesso al AWS FIS. Per ulteriori informazioni, consulta Esempi di [policy AWS FIS](security_iam_id-based-policy-examples.md).

**3. (Facoltativo) Crea una richiesta di istanza Spot**  
Se desideri utilizzare una nuova istanza Spot per questo esperimento, usa il comando [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) per richiedere un'istanza Spot. L'impostazione predefinita prevede la chiusura delle istanze Spot interrotte. Se si imposta il comportamento di interruzione su`stop`, è necessario impostare anche il tipo su. `persistent` In questo tutorial, non impostate il comportamento di interruzione su`hibernate`, poiché il processo di ibernazione inizia immediatamente.

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

Di seguito è riportato un esempio del file `spot-options.json`.

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

L'`--query`opzione del comando di esempio fa in modo che il comando restituisca solo l'ID dell'istanza Spot. Di seguito è riportato un output di esempio.

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

**4. Aggiunge un tag in modo che AWS FIS possa identificare l'istanza Spot di destinazione**  
Utilizzate il comando [create-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html) per aggiungere il tag Name=interruptMe all'istanza Spot di destinazione.

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

## Fase 1: Creare un modello di esperimento
<a name="spot-interruptions-create-template"></a>

Crea il modello di esperimento utilizzando la console AWS FIS. Nel modello, si specifica l'azione che verrà eseguita. L'azione interrompe l'istanza Spot con il tag specificato. Se esiste più di un'istanza Spot con il tag, AWS FIS ne sceglie una a caso.

**Per creare un modello di esperimento**

1. Aprire la console AWS FIS all'indirizzo [https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/).

1. Nel riquadro di navigazione, scegli **Modelli di esperimenti**.

1. Scegli **Crea modello di esperimento**.

1. Per la **Fase 1, Specificate i dettagli del modello**, effettuate le seguenti operazioni:

   1. In **Descrizione e nome**, inserisci una descrizione e un nome per il modello.

   1. Scegliete **Avanti** e passate al **Passaggio 2, Specificate azioni e obiettivi**. 

1. Alla voce **Actions (Operazioni)**, procedere nel seguente modo:

   1. Selezionare **Add action** (Aggiungi operazione).

   1. Immettete un nome per l'azione. Ad esempio, specifica **interruptSpotInstance**.

   1. Per **Tipo di azione**, scegli **aws:ec2:**. send-spot-instance-interruptions

   1. Per **Target**, mantieni l'obiettivo che AWS FIS crea per te.

   1. Per **i parametri di azione**, **Durata prima dell'interruzione**, specifica 2 minuti (PT2M).

   1. Seleziona **Salva**.

1. Per **Targets (Target)** esegui queste operazioni:

   1. Scegliete **Modifica** per la destinazione che AWS FIS ha creato automaticamente per voi nel passaggio precedente.

   1. Sostituite il nome predefinito con un nome più descrittivo. Ad esempio, specifica **oneSpotInstance**.

   1. Verifica che il **tipo di risorsa sia **aws:ec2:spot-instance****.

   1. Per il **metodo Target**, scegli i **tag, i filtri e i parametri delle risorse**.

   1. Per i **tag delle risorse**, scegli **Aggiungi nuovo tag** e inserisci la chiave e il valore del tag. Utilizza il tag che hai aggiunto all'istanza Spot per interrompere, come descritto nei Prerequisiti di questo tutorial.

   1. Per **i filtri delle risorse**, scegli **Aggiungi nuovo filtro** e inserisci **State.Name** come percorso e **running** come valore.

   1. Per la **modalità Selezione**, scegliete **Conteggio**. Per **Numero di risorse**, immettere**1**.

   1. Seleziona **Salva**.

1. Scegli **Avanti** per passare alla **Fase 3, Configurazione dell'accesso al servizio**. 

1. Per **Service Access**, scegli **Usa un ruolo IAM esistente**, quindi scegli il ruolo IAM che hai creato come descritto nei prerequisiti di questo tutorial. Se il tuo ruolo non viene visualizzato, verifica che abbia la relazione di fiducia richiesta. Per ulteriori informazioni, consulta [Ruoli IAM per AWS esperimenti FIS](getting-started-iam-service-role.md).

1. Scegli **Avanti** per passare al **Passaggio 4, Configura le impostazioni opzionali**. 

1. (Facoltativo) Per i **tag**, **scegliete Aggiungi nuovo tag** e specificate una chiave e un valore per il tag. I tag che aggiungi vengono applicati al modello dell'esperimento, non agli esperimenti eseguiti utilizzando il modello.

1. Scegli **Avanti** per passare alla **Fase 5, Rivedi e crea**. 

1. Rivedi il modello e scegli **Crea modello di esperimento**. Quando viene richiesta la conferma, inserisci`create`, quindi scegli **Crea modello di esperimento**. 

**(Facoltativo) Per visualizzare il modello di esperimento JSON**  
Scegli la scheda **Esporta**. Di seguito è riportato un esempio di JSON creato dalla precedente procedura della console.

```
{
    "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"
    }
}
```

## Fase 2: Avviare l'esperimento
<a name="spot-interruptions-start-experiment"></a>

Quando hai finito di creare il modello di esperimento, puoi usarlo per iniziare un esperimento.

**Per iniziare un esperimento**

1. Dovresti trovarti nella pagina dei dettagli del modello di esperimento che hai appena creato. Altrimenti, scegli **Modelli di esperimento**, quindi seleziona l'ID del modello di esperimento per aprire la pagina dei dettagli.

1. Scegli **Inizia un esperimento**.

1. (Facoltativo) Per aggiungere un tag al tuo esperimento, scegli **Aggiungi nuovo tag** e inserisci una chiave per il tag e un valore per il tag.

1. Scegli **Inizia un esperimento**. Quando viene richiesta la conferma, inserisci **start** e scegli **Avvia esperimento**.

## Fase 3: Tieni traccia dell'avanzamento dell'esperimento
<a name="spot-interruptions-track-experiment"></a>

È possibile tenere traccia dell'avanzamento di un esperimento in corso fino al completamento, all'interruzione o al fallimento dell'esperimento.

**Per tenere traccia dell'avanzamento di un esperimento**

1. Dovresti essere nella pagina dei dettagli dell'esperimento che hai appena iniziato. Altrimenti, scegli **Esperimenti**, quindi seleziona l'ID dell'esperimento per aprire la pagina dei dettagli.

1. Per visualizzare lo stato dell'esperimento, seleziona **Stato** nel riquadro **Dettagli**. Per ulteriori informazioni, consulta [gli stati dell'esperimento](view-experiment-progress.md#experiment-states).

1. Quando lo stato dell'esperimento è In **esecuzione**, vai al passaggio successivo.

## Fase 4: Verifica il risultato dell'esperimento
<a name="spot-interruptions-verify-experiment-result"></a>

Quando l'azione per questo esperimento è completata, si verifica quanto segue:
+ L'istanza Spot di destinazione riceve una raccomandazione di [ribilanciamento dell'istanza.](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/rebalance-recommendations.html)
+ Un [avviso di interruzione dell'istanza Spot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html#spot-instance-termination-notices) viene emesso due minuti prima che Amazon chiuda o EC2 interrompa l'istanza.
+ Dopo due minuti, l'istanza Spot viene interrotta o interrotta.
+ Un'istanza Spot interrotta da AWS FIS rimane ferma finché non viene riavviata.

**Per verificare che l'istanza sia stata interrotta dall'esperimento**

1. Apri la EC2 console Amazon all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Nel riquadro di navigazione, apri **Spot Requests** (Richieste spot) e **Instances** (Istanze) in schede o finestre separate del browser.

1. Per **Spot Requests** (Richieste spot) seleziona la richiesta dell'istanza spot. Lo stato iniziale è `fulfilled`. Al termine dell'esperimento, lo stato cambia come segue:
   + `terminate`- Lo stato cambia in. `instance-terminated-by-experiment`
   + `stop`- Lo stato cambia in `marked-for-stop-by-experiment` e poi`instance-stopped-by-experiment`.

1. Per **Istanze**, seleziona l'istanza spot. Lo stato iniziale è `Running`. Due minuti dopo aver ricevuto l'avviso di interruzione dell'istanza Spot, lo stato cambia come segue:
   + `stop`- Lo stato cambia in `Stopping` e poi`Stopped`.
   + `terminate`- Lo stato cambia in `Shutting-down` e poi`Terminated`.

## Fase 5: rimozione
<a name="spot-interruptions-cleanup"></a>

Se hai creato l'istanza Spot di prova per questo esperimento con un comportamento di interruzione `stop` e non ti serve più, puoi annullare la richiesta dell'istanza Spot e terminare l'istanza Spot.

**Per annullare la richiesta e terminare l'istanza, utilizzare il AWS CLI**

1. Utilizza il [cancel-spot-instance-requests](https://docs.aws.amazon.com/cli/latest/reference/ec2/cancel-spot-instance-requests.html)comando per annullare la richiesta dell'istanza Spot.

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

1. Utilizzate il comando [terminate-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html) per terminare l'istanza.

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

Se non hai più bisogno del modello di esperimento, puoi eliminarlo.

**Per eliminare un modello di esperimento utilizzando la console AWS FIS**

1. Aprire la console AWS FIS all'indirizzo. [https://console.aws.amazon.com/fis/](https://console.aws.amazon.com/fis/)

1. Nel riquadro di navigazione, scegli **Modelli di esperimenti**.

1. Seleziona il modello di esperimento e scegli **Azioni**, **Elimina modello di esperimento**.

1. Quando viene richiesta la conferma, inserisci **delete** e scegli **Elimina modello di esperimento**.