

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à.

# Verificare quali istanze Auto Scaling vengono terminate durante la riduzione orizzontale
<a name="as-instance-termination"></a>

Amazon EC2 Auto Scaling utilizza le politiche di terminazione per decidere l'ordine di chiusura delle istanze. Puoi utilizzare una politica predefinita o creare una politica personalizzata per soddisfare i tuoi requisiti specifici. Utilizzando una politica personalizzata o una scalabilità delle istanze nella protezione, puoi anche impedire al tuo gruppo Auto Scaling di terminare le istanze che non sono ancora pronte per la chiusura.

**Topics**
+ [Quando Amazon EC2 Auto Scaling utilizza politiche di terminazione](#common-scenarios-termination)
+ [Configurazione delle politiche di terminazione per Amazon EC2 Auto Scaling](ec2-auto-scaling-termination-policies.md)
+ [Creare una policy di terminazione personalizzata con Lambda.](lambda-custom-termination-policy.md)
+ [Utilizza la protezione scalabile in base alle istanze per controllare la chiusura dell'istanza](ec2-auto-scaling-instance-protection.md)
+ [Progetta le tue applicazioni per gestire correttamente la chiusura delle istanze](gracefully-handle-instance-termination.md)

## Quando Amazon EC2 Auto Scaling utilizza politiche di terminazione
<a name="common-scenarios-termination"></a>

Nelle sezioni seguenti, vengono descritti gli scenari in cui Dimensionamento automatico Amazon EC2 utilizza le policy di terminazione. 

**Topics**
+ [Scalabilità negli eventi](#common-scenarios-termination-scale-in)
+ [Aggiornamento istanza](#common-scenarios-termination-instance-refreshes)
+ [Ribilanciamento della zona di disponibilità](#common-scenarios-termination-rebalancing)

### Scalabilità negli eventi
<a name="common-scenarios-termination-scale-in"></a>

Un evento di scalabilità si verifica quando esiste un nuovo valore per la capacità desiderata di un gruppo Auto Scaling inferiore alla capacità corrente del gruppo.

Gli eventi di scalabilità si verificano nei seguenti scenari:
+ Quando si utilizzano policy di dimensionamento dinamico e la dimensione del gruppo diminuisce a seguito di modifiche nel valore di un parametro
+ Quando si utilizza il dimensionamento programmato e la dimensione del gruppo diminuisce a seguito di un'operazione pianificata
+ Quando hai ridotto manualmente le dimensioni del gruppo

L'esempio seguente mostra come funzionano le politiche di terminazione in presenza di una scala di eventi.

1. Prendiamo l'esempio in cui si dispone di un gruppo con scalabilità automatica con un tipo di istanza, due zone di disponibilità e una capacità desiderata di due istanze. È inoltre dotato di una policy di dimensionamento dinamico che aggiunge e rimuove le istanze quando l'utilizzo delle risorse aumenta o diminuisce. Le due istanze di questo gruppo sono distribuite tra le due zone di disponibilità, come illustrato nel diagramma seguente.  
![\[Un gruppo di Auto Scaling di base con due istanze.\]](http://docs.aws.amazon.com/it_it/autoscaling/ec2/userguide/images/termination-policy-default-diagram.png)

1. Quando il gruppo con scalabilità automatica viene dimensionato, Dimensionamento automatico Amazon EC2 avvia una nuova istanza. Il gruppo con scalabilità automatica ora dispone di tre istanze, distribuite tra le due zone di disponibilità, come illustrato nel diagramma seguente.  
![\[Un gruppo Auto Scaling dopo il ridimensionamento orizzontale di un'istanza.\]](http://docs.aws.amazon.com/it_it/autoscaling/ec2/userguide/images/termination-policy-default-2-diagram.png)

1. Quando il gruppo con scalabilità automatica viene ridotto, Dimensionamento automatico Amazon EC2 termina una delle istanze. 

1. Se non hai assegnato una policy di terminazione specifica al gruppo, Dimensionamento automatico Amazon EC2 utilizza quella di default. Seleziona la zona di disponibilità con due istanze e termina l'istanza che è stata avviata da una configurazione di avvio, da un modello di avvio diverso o dalla versione più vecchia del modello di avvio corrente. Se le istanze sono state avviate dallo stesso modello e versione di lancio, Amazon EC2 Auto Scaling seleziona l'istanza più vicina all'ora di fatturazione successiva e la interrompe.   
![\[Un gruppo Auto Scaling dopo il ridimensionamento di un'istanza.\]](http://docs.aws.amazon.com/it_it/autoscaling/ec2/userguide/images/termination-policy-default-3-diagram.png)

### Aggiornamento istanza
<a name="common-scenarios-termination-instance-refreshes"></a>

Puoi avviare un aggiornamento dell'istanza per aggiornare le istanze nel tuo gruppo Auto Scaling. Durante l'aggiornamento di un'istanza, Dimensionamento automatico Amazon EC2 termina le istanze del gruppo e quindi avvia le sostituzioni per le istanze terminate. La policy di terminazione per il gruppo con scalabilità automatica controlla quali istanze verranno sostituite per prime. 

### Ribilanciamento della zona di disponibilità
<a name="common-scenarios-termination-rebalancing"></a>

Dimensionamento automatico Amazon EC2 bilancia la tua capacità in modo uniforme, nelle zone di disponibilità abilitate per il tuo gruppo con scalabilità automatica. Ciò permette di ridurre l'impatto di un'interruzione della zona di disponibilità. Se la distribuzione della capacità tra le zone di disponibilità diventa sbilanciata, Dimensionamento automatico Amazon EC2 ribilancia il gruppo con scalabilità automatica avviando istanze nelle zone di disponibilità abilitate con il minor numero di istanze e terminandole. La policy di terminazione controlla quali istanze vengono definite prioritarie per la terminazione. 

Esistono diversi motivi per cui la distribuzione delle istanze tra le zone di disponibilità può risultare sbilanciata.

Rimozione delle istanze  
Se distacchi le istanze dal gruppo con scalabilità automatica o termini esplicitamente le istanze e decrementi la capacità desiderata, impedendo così l'avvio delle istanze sostitutive, il gruppo potrebbe risultare sbilanciato. Se ciò accade, Dimensionamento automatico Amazon EC2 compensa ribilanciando le zone di disponibilità.

Utilizzo di zone di disponibilità diverse da quelle specificate in origine  
Se espandi il gruppo con scalabilità automatica affinché includa ulteriori zone di disponibilità o modifichi le zone di disponibilità utilizzate, Dimensionamento automatico Amazon EC2 avvierà le istanze nelle nuove zone di disponibilità e le terminerà nelle altre, per garantire che si estendano uniformemente alle zone di disponibilità.

Interruzione di disponibilità  
Le interruzioni di disponibilità sono rare. Tuttavia, se una zona diventa non disponibile e viene ripristinata in seguito, il gruppo con scalabilità automatica potrebbe risultare sbilanciato tra le zone di disponibilità. Dimensionamento automatico Amazon EC2 tenta di ribilanciare gradualmente il gruppo e il ribilanciamento potrebbe terminare le istanze in altre zone.  
Per esempio, immaginate di avere un gruppo con scalabilità automatica con un tipo di istanza, due zone di disponibilità e una capacità desiderata di due istanze. In una situazione in cui in una zona di disponibilità si verifica un'interruzione, Dimensionamento automatico Amazon EC2 avvia automaticamente una nuova istanza nella zona di disponibilità integra per sostituire quella nella zona di disponibilità non integra. Quando la zona di disponibilità non integra torni a uno stato integro, Dimensionamento automatico Amazon EC2 avvierà automaticamente una nuova istanza in questa zona, che a sua volta terminerà un'istanza nella zona non interessata. 

**Nota**  
In fase di ribilanciamento, Dimensionamento automatico Amazon EC2 avvia nuove istanze, prima di arrestare quelle vecchie, in modo che il ribilanciamento non comprometta le prestazioni o la disponibilità delle applicazioni.   
Poiché Dimensionamento automatico Amazon EC2 tenta di avviare nuove istanze prima di terminare quelle vecchie, se si è raggiunta o si sta per raggiungere la capacità massima specificata, ciò potrebbe ostacolare o bloccare completamente le attività di ribilanciamento. Per evitare questo problema, durante un'attività di ribilanciamento il sistema è in grado di superare temporaneamente la capacità massima specificata di un gruppo con un margine del 10% (o con un margine di 1 istanza, a seconda del valore più alto). Il margine viene esteso solo se il gruppo ha raggiunto o è vicino alla capacità massima e necessita di riequilibrio, sia a causa di ridefinizione delle aree richiesta dall'utente o per compensare problemi di zone di disponibilità. L'estensione dura solo il tempo necessario per ribilanciare il gruppo.

# Configurazione delle politiche di terminazione per Amazon EC2 Auto Scaling
<a name="ec2-auto-scaling-termination-policies"></a>

Una politica di terminazione fornisce i criteri seguiti da Amazon EC2 Auto Scaling per terminare le istanze in un ordine specifico. Per impostazione predefinita, Amazon EC2 Auto Scaling utilizza una policy di terminazione progettata per terminare prima le istanze che utilizzano configurazioni obsolete. Puoi modificare la politica di terminazione per controllare quali istanze è più importante chiudere per prime. 

Quando Amazon EC2 Auto Scaling termina le istanze, cerca di mantenere l'equilibrio tra le zone di disponibilità abilitate per il gruppo Auto Scaling. Il mantenimento dell'equilibrio zonale ha la precedenza sulla politica di cessazione. Se una zona di disponibilità ha più istanze di altre, Amazon EC2 Auto Scaling applica prima la politica di terminazione alla zona sbilanciata. Se le zone di disponibilità sono bilanciate, applica la politica di terminazione a tutte le zone.

**Topics**
+ [Come funziona la politica di terminazione predefinita](#default-termination-policy)
+ [Policy di terminazione di default e gruppi di istanze miste](#default-termination-policy-mixed-instances-groups)
+ [Politiche di terminazione predefinite](#predefined-termination-policies)
+ [Modificare la politica di terminazione per un gruppo Auto Scaling](custom-termination-policy.md)

**Nota**  
Amazon EC2 Auto Scaling applica le politiche di terminazione solo alle istanze che non sono considerate non integre dal gruppo Auto Scaling. Di conseguenza, le istanze contrassegnate come non integre dai controlli di integrità di Auto Scaling ignoreranno la valutazione della politica di terminazione.  
Per ulteriori informazioni, consulta [Progetta le tue applicazioni per gestire correttamente la chiusura delle istanze](gracefully-handle-instance-termination.md).

## Come funziona la politica di terminazione predefinita
<a name="default-termination-policy"></a>

Quando Amazon EC2 Auto Scaling deve terminare un'istanza, identifica innanzitutto quale zona (o zone) di disponibilità ha il maggior numero di istanze e almeno un'istanza non protetta dallo scale-in. Quindi, procede alla valutazione delle istanze non protette all'interno della zona di disponibilità identificata come segue:

**Istanze che utilizzano configurazioni obsolete**
+ **Per i gruppi che utilizzano un modello di avvio**: determina se una delle istanze utilizza configurazioni obsolete, assegnando le priorità in questo ordine:

  1. Innanzitutto, controlla le istanze avviate con una configurazione di avvio.

  1. Quindi, controlla le istanze avviate utilizzando un modello di avvio diverso anziché il modello di lancio corrente.

  1. Infine, verifica le istanze che utilizzano la versione più vecchia del modello di lancio corrente.
+ **Per i gruppi che utilizzano una configurazione di avvio**: determina se una delle istanze utilizza la configurazione di avvio più vecchia.

Se non viene trovata alcuna istanza con configurazioni obsolete o se ci sono più istanze tra cui scegliere, Amazon EC2 Auto Scaling considera il criterio successivo delle istanze che si avvicinano all'ora di fatturazione successiva. 

**Istanze che si avvicinano all'ora di fatturazione successiva**  
Determina se una delle istanze che soddisfano i criteri precedenti è la più vicina all'ora di fatturazione successiva. Se più istanze sono ugualmente vicine, terminane una a caso. Questo ti aiuta a massimizzare l'uso delle istanze con fatturazione oraria. Tuttavia, la maggior parte dell'utilizzo di EC2 viene ora fatturato al secondo, quindi questa ottimizzazione offre meno vantaggi. Per ulteriori informazioni, consulta [Prezzi di Amazon EC2](https://aws.amazon.com/ec2/pricing/). 

Il seguente diagramma di flusso illustra come funziona la politica di terminazione predefinita per i gruppi che utilizzano un modello di avvio.

![\[Un diagramma di flusso che mostra come un gruppo Auto Scaling utilizza la politica di terminazione predefinita per terminare le istanze.\]](http://docs.aws.amazon.com/it_it/autoscaling/ec2/userguide/images/termination-policy-default-flowchart-diagram.png)


## Policy di terminazione di default e gruppi di istanze miste
<a name="default-termination-policy-mixed-instances-groups"></a>

Amazon EC2 Auto Scaling applica criteri aggiuntivi quando termina le [istanze in gruppi di istanze](ec2-auto-scaling-mixed-instances-groups.md) miste. 

Quando Amazon EC2 Auto Scaling deve terminare un'istanza, identifica innanzitutto quale opzione di acquisto (Spot o On-Demand) deve essere interrotta in base alle impostazioni del gruppo. Ciò garantisce che il gruppo tenda verso il rapporto specificato tra istanze Spot e On-Demand nel tempo.

Quindi applica la politica di risoluzione in modo indipendente all'interno di ciascuna zona di disponibilità. Determina quale istanza Spot o On-Demand in quale zona di disponibilità chiudere per mantenere le zone di disponibilità bilanciate. La stessa logica si applica a un gruppo di istanze miste con pesi definiti per i tipi di istanze. 

All'interno di ciascuna zona, la politica di terminazione predefinita funziona come segue per determinare quale istanza non protetta all'interno dell'opzione di acquisto identificata può essere interrotta:

1. Determina se una delle istanze può essere terminata per migliorare l'allineamento con la strategia di [allocazione specificata per il gruppo Auto Scaling](allocation-strategies.md). Se non viene identificata alcuna istanza da ottimizzare o se ci sono più istanze tra cui scegliere, la valutazione continua.

1. Determina se una delle istanze utilizza configurazioni obsolete, assegnando le priorità in questo ordine:

   1. Innanzitutto, controlla le istanze avviate con una configurazione di avvio.

   1. Quindi, controlla le istanze avviate utilizzando un modello di avvio diverso anziché il modello di lancio corrente.

   1. Infine, verifica le istanze che utilizzano la versione più vecchia del modello di lancio corrente.

   Se non viene trovata alcuna istanza con configurazioni obsolete o se ci sono più istanze tra cui scegliere, la valutazione continua.

1. Determina se una delle istanze è la più vicina all'ora di fatturazione successiva. Se più istanze sono ugualmente vicine, scegline una a caso.

## Politiche di terminazione predefinite
<a name="predefined-termination-policies"></a>

È possibile scegliere tra le seguenti politiche di terminazione predefinite:
+ **`Default`**— Termina le istanze in base alla politica di terminazione predefinita.
+ **`AllocationStrategy`**— Termina le istanze nel gruppo Auto Scaling per allineare le istanze rimanenti alla strategia di allocazione per il tipo di istanza che sta terminando (istanza Spot o istanza On-Demand). Questa policy è utile quando i tipi di istanza preferiti sono cambiati. Se la strategia di allocazione Spot è `lowest-price`, puoi gradualmente ribilanciare la distribuzione di istanze Spot tra i pool con il prezzo N più basso. Se la strategia di allocazione Spot è `capacity-optimized`, puoi gradualmente ribilanciare la distribuzione di istanze Spot tra i pool dove la capacità Spot è più disponibile. Inoltre, puoi sostituire gradualmente le istanze on demand di un tipo con priorità inferiore con istanze on demand di un tipo con priorità superiore.
+ **`OldestLaunchTemplate`**— Termina le istanze che hanno il modello di avvio più vecchio. Con questa policy, le istanze che usano il modello di avvio non corrente vengono terminate per prime, seguite da quelle che utilizzano la versione meno recente del modello di avvio corrente. Questa policy è utile quando si aggiorna un gruppo e si eliminano le istanze da una configurazione precedente.
+ **`OldestLaunchConfiguration`**— Termina le istanze che hanno la configurazione di avvio più vecchia. Questa policy è utile quando si aggiorna un gruppo e si eliminano le istanze da una configurazione precedente. Con questa policy, le istanze che usano la configurazione di avvio non corrente vengono terminate per prime.
+ **`ClosestToNextInstanceHour`**— Termina le istanze più vicine all'ora di fatturazione successiva. Questa policy consente di ottimizzare l'uso delle istanze che hanno una tariffa oraria.
+ **`NewestInstance`**— Termina l'istanza più recente del gruppo. Questa policy è utile quando si esegue il test di una nuova configurazione di avvio, ma non si desidera mantenerla in produzione.
+ **`OldestInstance`**— Termina l'istanza più vecchia del gruppo. Questa opzione è utile quando si aggiornano le istanze nel gruppo con scalabilità automatica a un nuovo tipo di istanza EC2. Puoi sostituire gradualmente le istanze del vecchio tipo con le istanze del nuovo tipo.
**Nota**  
Dimensionamento automatico Amazon EC2 bilancia sempre prima le istanze tra le zone di disponibilità, indipendentemente dalla policy di terminazione utilizzata. Di conseguenza, è possibile che si verifichino situazioni in cui alcune istanze più recenti vengono terminate prima di quelle meno recenti. Ad esempio, quando è stata aggiunta una zona di disponibilità più recente o quando una di esse ha più istanze rispetto alle altre zone di disponibilità utilizzate dal gruppo. 

# Modificare la politica di terminazione per un gruppo Auto Scaling
<a name="custom-termination-policy"></a>

Per modificare la politica di terminazione per il gruppo Auto Scaling, utilizzate uno dei seguenti metodi.

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

Non puoi modificare la politica di terminazione quando crei inizialmente un gruppo Auto Scaling nella console Amazon EC2 Auto Scaling. La policy di terminazione di default viene utilizzata automaticamente. Dopo aver creato il gruppo Auto Scaling, è possibile sostituire la politica predefinita con una politica di terminazione diversa o con più politiche di terminazione elencate nell'ordine in cui devono essere applicate. 

**Per modificare la politica di terminazione per un gruppo Auto Scaling**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)e scegli **Auto Scaling** Groups dal pannello di navigazione.

1. Seleziona la casella di controllo accanto al gruppo con dimensionamento automatico.

   Si aprirà un riquadro diviso nella parte inferiore della pagina.

1. Nella scheda **Details (Dettagli)** scegliere **Advanced configurations (Configurazioni avanzate)**, **Edit (Modifica)**.

1. Per **Termination policies (Policy di terminazione)**, scegli una o più policy di terminazione. Se si scelgono più policy, elencarle nell'ordine in cui devono essere valutate.

   È anche possibile scegliere **Custom termination policy** (Policy di terminazione personalizzata) e quindi scegliere una funzione Lambda che soddisfi le proprie esigenze. Se sono state create versioni e alias per la funzione Lambda, è possibile scegliere una versione o un alias dal menu a discesa **Version/Alias** (Versione/Alias). Per utilizzare la versione non pubblicata della funzione Lambda, mantieni **Version/Alias** (Versione/Alias) impostato sul valore di default. Per ulteriori informazioni, consulta [Creare una policy di terminazione personalizzata con Lambda.](lambda-custom-termination-policy.md).
**Nota**  
Quando si utilizzano più policy, il loro ordine deve essere impostato correttamente:  
Se utilizzi la policy **Default** (Di default), deve essere l'ultima policy dell'elenco.
Se utilizzi **Custom termination policy** (Policy di terminazione personalizzata), deve essere la prima policy dell'elenco.

1. Scegliere **Aggiorna**.

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

Viene utilizzata automaticamente la policy di terminazione di default, a meno che non ne venga specificata una diversa.

**Per modificare la politica di terminazione per un gruppo Auto Scaling**  
Utilizzare uno dei seguenti comandi:
+ [create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html)
+ [update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html)

Puoi utilizzare queste policy singolarmente oppure combinarle in un elenco di policy. Ad esempio, esegui questo comando per aggiornare un gruppo con scalabilità automatica in modo da utilizzare prima la policy `OldestLaunchConfiguration` e poi la policy `ClosestToNextInstanceHour`.

```
aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --termination-policies "OldestLaunchConfiguration" "ClosestToNextInstanceHour"
```

Se utilizzi la policy di terminazione `Default`, collocala nell'ultima posizione dell'elenco delle policy di terminazione. Ad esempio, `--termination-policies "OldestLaunchConfiguration" "Default"`.

Per utilizzare una politica di terminazione personalizzata, è necessario prima creare la politica di risoluzione utilizzando. AWS Lambda Per specificare la funzione Lambda da utilizzare come policy di terminazione, impostala alla prima posizione dell'elenco delle policy di terminazione. Ad esempio, `--termination-policies "arn:aws:lambda:us-west-2:123456789012:function:HelloFunction:prod" "OldestLaunchConfiguration"`. Per ulteriori informazioni, consulta [Creare una policy di terminazione personalizzata con Lambda.](lambda-custom-termination-policy.md).

------

# Creare una policy di terminazione personalizzata con Lambda.
<a name="lambda-custom-termination-policy"></a>

Dimensionamento automatico Amazon EC2 utilizza le policy di terminazione per assegnare la priorità alle istanze da terminare per prime quando si riducono le dimensioni del gruppo con scalabilità automatica (indicato come *scaling in (riduzione orizzontale*). Il gruppo con scalabilità automatica utilizza una policy di terminazione di default, ma è possibile scegliere o creare policy di terminazione personalizzate. Per ulteriori informazioni su come scegliere una policy di terminazione di default, consulta [Configurazione delle politiche di terminazione per Amazon EC2 Auto Scaling](ec2-auto-scaling-termination-policies.md).

In questa sezione viene descritto come creare una policy di terminazione personalizzata utilizzando una funzione AWS Lambda , che Dimensionamento automatico Amazon EC2 richiama in risposta a determinati eventi. La funzione Lambda creata elabora le informazioni nei dati di input inviati da Dimensionamento automatico Amazon EC2 e restituisce un elenco di istanze pronte per la terminazione.

Una policy di terminazione personalizzata fornisce un controllo migliore su quali istanze vengono terminate e quando. Ad esempio, quando il gruppo con scalabilità automatica viene ridotto, Dimensionamento automatico Amazon EC2 non è in grado di determinare se siano in esecuzione carichi di lavoro che non devono essere interrotti. Con una funzione Lambda, puoi convalidare la richiesta di terminazione e attendere che il carico di lavoro venga completato, prima di restituire l'ID istanza a Dimensionamento automatico Amazon EC2 per la terminazione. 

**Topics**
+ [Dati di input](#lambda-custom-termination-policy-input-data)
+ [Dati di risposta](#lambda-custom-termination-policy-response-data)
+ [Considerazioni](#lambda-termination-policy-considerations)
+ [Creazione della funzione Lambda](#lambda-custom-termination-policy-create-function)
+ [Limitazioni](#lambda-custom-termination-policy-limitations)

## Dati di input
<a name="lambda-custom-termination-policy-input-data"></a>

Amazon EC2 Auto Scaling genera un payload JSON per la scalabilità negli eventi e lo fa anche quando le istanze stanno per essere terminate a causa della durata massima dell'istanza o delle funzionalità di aggiornamento dell'istanza. Genera inoltre un payload JSON per la scalabilità degli eventi che può avviare quando ribilancia il gruppo tra le zone di disponibilità.

Questo payload contiene informazioni sulla capacità che Dimensionamento automatico Amazon EC2 deve terminare, un elenco di istanze suggerite per la terminazione e l'evento che l'ha avviata. 

Di seguito è riportato un esempio di payload:

```
{
  "AutoScalingGroupARN": "arn:aws:autoscaling:us-east-1:<account-id>:autoScalingGroup:d4738357-2d40-4038-ae7e-b00ae0227003:autoScalingGroupName/my-asg",
  "AutoScalingGroupName": "my-asg",
  "CapacityToTerminate": [
    {
      "AvailabilityZone": "us-east-1b",
      "Capacity": 2,
      "InstanceMarketOption": "on-demand"
    },
    {
      "AvailabilityZone": "us-east-1b",
      "Capacity": 1,
      "InstanceMarketOption": "spot"
    },
    {
      "AvailabilityZone": "us-east-1c",
      "Capacity": 3,
      "InstanceMarketOption": "on-demand"
    }
  ],
  "Instances": [
    {
      "AvailabilityZone": "us-east-1b",
      "InstanceId": "i-0056faf8da3e1f75d",
      "InstanceType": "t2.nano",
      "InstanceMarketOption": "on-demand"
    },
    {
      "AvailabilityZone": "us-east-1c",
      "InstanceId": "i-02e1c69383a3ed501",
      "InstanceType": "t2.nano",
      "InstanceMarketOption": "on-demand"
    },
    {
      "AvailabilityZone": "us-east-1c",
      "InstanceId": "i-036bc44b6092c01c7",
      "InstanceType": "t2.nano",
      "InstanceMarketOption": "on-demand"
    },
    ...
  ],
  "Cause": "SCALE_IN"
}
```

Il payload include il nome del gruppo con scalabilità automatica, il relativo Amazon Resource Name (ARN) e i seguenti elementi:
+ `CapacityToTerminate` descrive la quantità di capacità Spot o on demand impostata per la terminazione in una determinata zona di disponibilità. 
+ `Instances` rappresenta le istanze suggerite da Dimensionamento automatico Amazon EC2 per la terminazione in base alle informazioni contenute in `CapacityToTerminate`. 
+ `Cause` descrive l'evento che ha attivato la terminazione: `SCALE_IN`, `INSTANCE_REFRESH`, `MAX_INSTANCE_LIFETIME` oppure `REBALANCE`. 

Le seguenti informazioni delineano i fattori più significativi nel modo in cui Dimensionamento automatico Amazon EC2 genera le `Instances`nei dati di input:
+ Il mantenimento dell'equilibrio tra le zone di disponibilità ha la precedenza quando un'istanza viene interrotta a causa della scalabilità degli eventi e delle terminazioni basate sull'aggiornamento delle istanze. Di conseguenza, se una zona di disponibilità ha più istanze delle altre zone di disponibilità usate dal gruppo, i dati di input contengono istanze che sono ammissibili per la terminazione solo dalla zona di disponibilità sbilanciata. Se le zone di disponibilità utilizzate dal gruppo sono bilanciate, i dati di input contengono istanze provenienti da tutte le zone di disponibilità del gruppo. 
+ Quando utilizzi una [mixed instances policy (policy istanze miste)](ec2-auto-scaling-mixed-instances-groups.md), anche mantenere le capacità Spot e on demand bilanciate in base alle percentuali desiderate per ogni opzione di acquisto ha la precedenza. Innanzitutto identifichiamo quale dei due tipi (Spot o on demand) dovrebbe essere terminato. Inoltre, individua quali istanze (all'interno dell'opzione di acquisto identificata) terminare e in quali zone di disponibilità, in modo che risultino in un maggior bilanciamento delle zone di disponibilità. 

## Dati di risposta
<a name="lambda-custom-termination-policy-response-data"></a>

I dati di input e i dati di risposta collaborano per restringere l'elenco delle istanze da terminare. 

Con l'input fornito, la risposta dalla funzione Lambda dovrebbe essere simile al seguente esempio:

```
{
  "InstanceIDs": [
    "i-02e1c69383a3ed501",
    "i-036bc44b6092c01c7",
    ...
  ]
}
```

Gli `InstanceIDs` nella risposta rappresentano le istanze pronte per la terminazione. 

In alternativa, è possibile restituire un set diverso di istanze pronte per la terminazione, che sovrascrive le istanze nei dati di input. Se quando viene richiamata la funzione Lambda nessuna istanza è pronta per la terminazione, è anche possibile scegliere di non restituire alcuna istanza.

Se nessuna istanza è pronta per la terminazione, la risposta dalla funzione Lambda dovrebbe essere simile alla seguente:

```
{
  "InstanceIDs": [ ]
}
```

## Considerazioni
<a name="lambda-termination-policy-considerations"></a>

Quando usi una policy di terminazione personalizzata, tieni presente quanto segue:
+ La restituzione di un'istanza per prima, nei dati di risposta, non ne garantisce la terminazione. Se quando viene richiamata la funzione Lambda viene restituita una quantità superiore al numero richiesto di istanze, Dimensionamento automatico Amazon EC2 valuta ogni istanza rispetto alle altre policy di terminazione specificate per il gruppo con scalabilità automatica. Quando sono presenti più policy di terminazione, tenta di applicare quella successiva nell'elenco e, se ci sono più istanze per la terminazione di quante ne siano necessarie, passa alla policy successiva, e così via. Se non vengono specificate altre policy di terminazione, per determinare quali istanze terminare, viene impiegata quella di default.
+ Se non vengono restituite istanze o la funzione Lambda scade, Dimensionamento automatico Amazon EC2 attende per un breve periodo, prima di richiamare nuovamente la funzione. In ogni caso, su qualsiasi scala, continua a provare finché la capacità desiderata del gruppo è inferiore a quella attuale. Ad esempio, per terminazioni basate su aggiornamento, continua a provare per un'ora. Successivamente, se continua a non riuscire a terminare alcuna istanza, l'operazione di aggiornamento non riesce. Con la durata massima dell'istanza, Dimensionamento automatico Amazon EC2 continua a tentare di terminare l'istanza identificata come eccedente la durata massima. 
+ Poiché la funzione viene riprovata ripetutamente, assicurati di testare e correggere eventuali errori permanenti nel codice, prima di utilizzare una funzione Lambda come policy di terminazione personalizzata.
+ Se sostituisci i dati di input con il tuo elenco di istanze da terminare e la terminazione di queste istanze sbilancia le zone di disponibilità, Dimensionamento automatico Amazon EC2 ribilancia gradualmente la distribuzione della capacità tra le zone di disponibilità. Innanzitutto, richiama la funzione Lambda per vedere se ci siano istanze pronte per la terminazione, in modo da determinare se iniziare il ribilanciamento. Se ci sono istanze pronte per essere terminate, avvia prima quelle nuove. Al termine dell'avvio delle istanze, rileva che la capacità attuale del gruppo è superiore alla capacità desiderata e avvia una scalabilità in caso di evento.
+ Una politica di terminazione personalizzata non influisce sulla possibilità di utilizzare anche la scalabilità nella protezione per proteggere determinate istanze dalla chiusura. Per ulteriori informazioni, consulta [Utilizza la protezione scalabile in base alle istanze per controllare la chiusura dell'istanza](ec2-auto-scaling-instance-protection.md).
+ Se la funzione Lambda non restituisce alcuna istanza, ciò non impedisce automaticamente tutte le terminazioni. Amazon EC2 Auto Scaling interromperà comunque le istanze considerate non integre dai controlli di integrità di Auto Scaling, indipendentemente dalle politiche di terminazione.

## Creazione della funzione Lambda
<a name="lambda-custom-termination-policy-create-function"></a>

Inizia creando la funzione Lambda, in modo da poter specificare il relativo Amazon Resource Name (ARN) nelle policy di terminazione per il tuo gruppo con scalabilità automatica.

**Creazione di una funzione Lambda (console)**

1. Aprire la [pagina Functions (Funzioni)](https://console.aws.amazon.com/lambda/home#/functions) nella console Lambda.

1. Sulla barra di navigazione nella parte superiore della schermata, seleziona la stessa Regione utilizzata durante la creazione del gruppo con dimensionamento automatico. 

1. Scegli **Create function (Crea funzione)** e **Author from scratch (Crea da zero)**.

1. In **Basic information (Informazioni di base)**, inserisci un nome per la funzione in **Function name (Nome funzione)**.

1. Scegli **Crea funzione**. Verrai riportato alla configurazione e al codice della funzione. 

1. Con la funzione aperta nella console, in **Function code (Codice della funzione)**, incolla il codice nell'editor.

1. Seleziona **Implementa**. 

1. Facoltativamente, crea una versione pubblicata della funzione Lambda scegliendo la scheda **Versions (Versioni)**Scheda e quindi **Publish new version (Pubblica nuova versione)**. Per ulteriori informazioni sul controllo delle versioni in Lambda, consulta [Versioni delle funzioni Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) nella *Guida per gli sviluppatori di AWS Lambda *.

1. Se hai scelto di pubblicare una versione e desideri associare un alias a questa versione della funzione Lambda, scegli la scheda **Aliases (Alias)**. Per ulteriori informazioni sugli alias in Lambda, consulta [Alias delle funzioni Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) nella *Guida per gli sviluppatori di AWS Lambda *

1. Quindi, seleziona la scheda **Configuration (Configurazione) ** e poi **Permissions (Autorizzazioni)**. 

1. Scorri fino a **Resource-based policy (Policy basata su risorse)**, quindi, scegli **Add permissions (Aggiungi autorizzazioni)**. Le policy basate su risorse vengono impiegate per concedere le autorizzazioni per richiamare la funzione al principale specificato nelle policy stesse. In questo caso, il principale sarà il [Dimensionamento automatico Amazon EC2 service-linked role (Ruolo Dimensionamento automatico Amazon EC2 collegato ai servizi)](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html) associato al gruppo con scalabilità automatica.

1. Nella sezione **Policy statement (Istruzione della policy)**, configura le autorizzazioni: 

   1. Scegli **Account AWS**.

   1. In **(Principal (Principale)**, inserisci l'ARN del ruolo collegato ai servizi chiamanti, ad esempio **arn:aws:iam::<aws-account-id>:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling**.

   1. ****Per Action, scegli lambda:. InvokeFunction****

   1. In **Statement ID (ID istruzione)**, inserisci un ID di istruzione univoco, ad esempio **AllowInvokeByAutoScaling**.

   1. Scegli **Save** (Salva). 

1. Dopo aver seguito queste istruzioni, continua specificando l'ARN della tua funzione nelle policy di terminazione per il tuo gruppo con scalabilità automatica. Per ulteriori informazioni, consulta [Modificare la politica di terminazione per un gruppo Auto Scaling](custom-termination-policy.md). 

**Nota**  
Per esempi da utilizzare come riferimento per lo sviluppo della funzione Lambda, consulta il [GitHub repository](https://github.com/aws-samples/amazon-ec2-auto-scaling-group-examples) per Amazon EC2 Auto Scaling.

## Limitazioni
<a name="lambda-custom-termination-policy-limitations"></a>
+ Nelle policy di terminazione per un gruppo con scalabilità automatica è possibile specificare una sola funzione Lambda. Se sono specificate più policy di terminazione, è necessario specificare prima la funzione Lambda.
+ È possibile fare riferimento alla funzione Lambda utilizzando un ARN non qualificato (senza suffisso) o un ARN qualificato che abbia una versione o un alias come suffisso. Se utilizzi un ARN non qualificato (ad esempio, `function:my-function`), la policy basata su risorse deve essere creata sulla versione non pubblicata della funzione. Se utilizzi un ARN qualificato (ad esempio, `function:my-function:1` or `function:my-function:prod`), la policy basata su risorse deve essere creata su quella specifica versione pubblicata della funzione.
+ Non è possibile utilizzare un ARN qualificato con il suffisso `$LATEST`. Se tenti di aggiungere una policy di terminazione personalizzata che si riferisce a un ARN qualificato con il suffisso `$LATEST`, ciò risulterà in un errore.
+ Il numero di istanze fornite nei dati di input è limitato a 30.000 istanze. Se sono presenti più di 30.000 istanze che potrebbero essere terminate, i dati di input includono `"HasMoreInstances": true` per indicare che viene restituito il numero massimo di istanze. 
+ Il runtime massimo per la funzione Lambda è di due secondi (2000 millisecondi). La best practice è impostare il valore di timeout della funzione Lambda in base al runtime previsto. Le funzioni Lambda hanno un timeout di default di tre secondi, ma quest'ultimo può essere ridotto. 
+ Se il runtime supera il limite di 2 secondi, qualsiasi scala in azione rimarrà sospesa fino a quando il tempo di esecuzione non scende al di sotto di questa soglia. Per le funzioni Lambda con tempi di esecuzione costantemente più lunghi, trova un modo per ridurre il tempo di esecuzione, ad esempio memorizzando nella cache i risultati in modo che possano essere recuperati durante le successive chiamate Lambda.
+ Le funzioni Lambda tra account non sono supportate. La funzione Lambda utilizzata come politica di terminazione personalizzata deve appartenere al gruppo Auto Scaling. Account AWS Le istruzioni di configurazione in questa pagina si concentrano specificamente sulle configurazioni dello stesso account.
+ Le politiche di terminazione personalizzate non si applicano alle istanze non integre. Le istanze non integre sono sempre considerate idonee alla terminazione e la funzione Lambda valuta solo l'ordine di terminazione per le istanze rimanenti.

# Utilizza la protezione scalabile in base alle istanze per controllare la chiusura dell'istanza
<a name="ec2-auto-scaling-instance-protection"></a>

La protezione scalabile in base alle istanze ti consente di controllare quali istanze Amazon EC2 Auto Scaling può terminare. Un caso d'uso comune di questa funzionalità è la scalabilità dei carichi di lavoro basati su container. Per ulteriori informazioni, consulta [Progetta le tue applicazioni per gestire correttamente la chiusura delle istanze](gracefully-handle-instance-termination.md).

Per impostazione predefinita, la protezione scale-in dell'istanza è disabilitata quando si crea un gruppo Auto Scaling. Ciò significa che Amazon EC2 Auto Scaling può terminare qualsiasi istanza del gruppo.

Puoi proteggere le istanze non appena vengono avviate abilitando l'impostazione di protezione per la riduzione delle istanze nel gruppo con dimensionamento automatico. La protezione per la riduzione dell'istanza inizia quando lo stato dell'istanza è `InService`. Quindi, per controllare quali istanze possono terminare, disabilita l'impostazione della protezione di dimensionamento sulle singole istanze all'interno del gruppo con dimensionamento automatico. In questo modo, puoi continuare a proteggere determinate istanze da terminazioni indesiderate. 

**Topics**
+ [Considerazioni](#instance-protection-considerations)
+ [Modificare la protezione scalabile per un gruppo Auto Scaling](#instance-protection-group)
+ [Modificare la protezione scalabile per un'istanza](#instance-protection-instance)

## Considerazioni
<a name="instance-protection-considerations"></a>

Di seguito sono riportate le considerazioni relative all'utilizzo della protezione scalabile in base alle istanze:
+ Se tutte le istanze di un gruppo Auto Scaling sono protette dallo scalabilità in e si verifica un evento di scalabilità in, la capacità desiderata viene diminuita. Tuttavia, il gruppo Auto Scaling non può terminare il numero richiesto di istanze finché non viene disabilitata la scalabilità delle istanze nelle impostazioni di protezione. In Console di gestione AWS, la **cronologia delle attività** per il gruppo Auto Scaling include il seguente messaggio se tutte le istanze di un gruppo Auto Scaling sono protette dalla scalabilità in quando si verifica un evento di scalabilità in: `Could not scale to desired capacity because all remaining instances are protected from scale in.`
+ Se si scollega un'istanza protetta da scalabilità in, la relativa impostazione di protezione della scala in dell'istanza viene persa. Quando si collega nuovamente l'istanza al gruppo, questa eredita la scala dell'istanza corrente nell'impostazione di protezione del gruppo. Quando Amazon EC2 Auto Scaling lancia una nuova istanza o sposta un'istanza da un pool caldo al gruppo Auto Scaling, l'istanza eredita la scala dell'istanza nell'impostazione di protezione del gruppo Auto Scaling. 
+ La protezione per la riduzione delle istanze non protegge le istanze Auto Scaling da quanto segue:
  + Sostituzione del controllo dell'integrità nel caso in cui l'istanza non superi i controlli dell'integrità. Per ulteriori informazioni, consulta [Controlli dell'integrità per le istanze in un gruppo con dimensionamento automatico](ec2-auto-scaling-health-checks.md).
  + Interruzioni dell'istanza Spot. Un'istanza Spot viene terminata quando la capacità non è più disponibile o il prezzo spot supera il prezzo massimo. 
  + Una prenotazione Capacity Block termina. Amazon EC2 recupera le istanze Capacity Block anche se sono protette dallo scale-in.
  + Terminazione manuale tramite il comando. `terminate-instance-in-auto-scaling-group` Per ulteriori informazioni, consulta [Terminare un'istanza nel gruppo con dimensionamento automatico (AWS CLI)](ec2-auto-scaling-scaling-manually.md#terminate-an-instance-aws-cli).
  + Terminazione manuale tramite la console Amazon EC2, i comandi CLI e le operazioni API. Per proteggere le istanze Auto Scaling dalla terminazione manuale, occorre abilitare la protezione dalla terminazione di Amazon EC2. (Ciò non impedisce ad Amazon EC2 Auto Scaling di terminare le istanze o la terminazione manuale tramite il comando.) `terminate-instance-in-auto-scaling-group` Per informazioni sull'attivazione della protezione dalle terminazioni di Amazon EC2 in un modello di avvio, consulta. [Crea un modello di avvio utilizzando le impostazioni avanzate](advanced-settings-for-your-launch-template.md)

## Modificare la protezione scalabile per un gruppo Auto Scaling
<a name="instance-protection-group"></a>

È possibile attivare o disattivare l'impostazione di protezione di riduzione delle istanze per un gruppo con scalabilità automatica. Quando la abiliti, tutte le nuove istanze lanciate dal gruppo avranno la protezione scalabile in base alle istanze abilitata.

L'attivazione o la disabilitazione di questa impostazione per un gruppo Auto Scaling non influisce sulle istanze esistenti.

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

**Per abilitare la protezione scalabile in base a un nuovo gruppo Auto Scaling**  
Quando si crea il gruppo Auto Scaling, nella pagina **Configura le dimensioni del gruppo e le politiche di ridimensionamento, in Protezione scale-in** dell'**istanza, selezionare la casella di controllo Abilita protezione scale-in** **dell'istanza.**

**Per abilitare o disabilitare la protezione scalabile per un gruppo esistente**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)e scegli **Auto Scaling** Groups dal pannello di navigazione.

1. Seleziona la casella di controllo accanto al gruppo con scalabilità automatica.

   Si aprirà un riquadro diviso nella parte inferiore della pagina.

1. Nella scheda **Details (Dettagli)** scegliere **Advanced configurations (Configurazioni avanzate)**, **Edit (Modifica)**.

1. Per **Instance Scale-In Protection**, seleziona o deseleziona la casella di controllo **Enable Instance-Scale Protection per abilitare** o disabilitare questa opzione in base alle esigenze.

1. Scegliere **Aggiorna**.

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

**Per abilitare la protezione scalabile in base a un nuovo gruppo Auto Scaling**  
Utilizza il comando seguente [create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html) per abilitare la protezione per la riduzione delle istanze.

```
aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg --new-instances-protected-from-scale-in ...
```

**Per abilitare la protezione scalabile per un gruppo esistente**  
Utilizzate il [update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html)comando seguente per abilitare la protezione scale-in dell'istanza per il gruppo Auto Scaling specificato.

```
aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --new-instances-protected-from-scale-in
```

**Per disabilitare la protezione scalabile in base a un gruppo esistente**  
Utilizza il comando seguente per disabilitare la protezione per la riduzione delle istanze per il gruppo specificato.

```
aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --no-new-instances-protected-from-scale-in
```

------

## Modificare la protezione scalabile per un'istanza
<a name="instance-protection-instance"></a>

Per impostazione predefinita, un'istanza riceve l'impostazione di protezione per la riduzione delle istanze dal suo gruppo con scalabilità automatica. Tuttavia, è possibile abilitare o disabilitare la protezione scalabile in base alla scalabilità delle istanze per le singole istanze dopo l'avvio.

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

**Per abilitare o disabilitare la protezione scalabile per un'istanza**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)e scegli **Auto Scaling** Groups dal pannello di navigazione.

1. Seleziona la casella di controllo accanto al gruppo con dimensionamento automatico.

   Si aprirà un riquadro diviso nella parte inferiore della pagina. 

1. Nella scheda **Instance management (Gestione istanze)** in **Instances (Istanze)**, selezionare un'istanza.

1. Per abilitare la protezione per la riduzione delle istanze, scegli **Actions (Operazioni)**, **Set scale-in protection (Imposta protezione per la riduzione)**. Quando richiesto, scegli **Set scale-in protection (Imposta protezione per la riduzione)**.

1. Per disabilitare la protezione per la riduzione delle istanze, scegli **Actions (Operazioni)**, **Remove scale-in protection (Rimuovi protezione della riduzione)**. Quando richiesto, scegli **Remove scale-in protection (Rimuovi protezione per la riduzione)**.

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

**Per abilitare la protezione scalabile per un'istanza**  
Utilizza il comando seguente [set-instance-protection](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/set-instance-protection.html) per abilitare la protezione per la riduzione delle istanze per l'istanza specificata.

```
aws autoscaling set-instance-protection --instance-ids i-5f2e8a0d --auto-scaling-group-name my-asg --protected-from-scale-in
```

**Per disabilitare la protezione scalabile in un'istanza**  
Per disabilitare la protezione per la riduzione delle istanze per l'istanza specificata, utilizza il comando seguente.

```
aws autoscaling set-instance-protection --instance-ids i-5f2e8a0d --auto-scaling-group-name my-asg --no-protected-from-scale-in
```

------

**Nota**  
Ricorda che la protezione scale-in delle istanze non garantisce che le istanze non vengano terminate in caso di errore umano, ad esempio se qualcuno interrompe manualmente un'istanza utilizzando la console Amazon EC2 o. AWS CLI Se desideri proteggere l'istanza da una terminazione accidentale, usa la protezione dalla terminazione di Amazon EC2. Tuttavia, anche se la protezione dalla terminazione e la protezione per la riduzione delle istanze sono abilitate, i dati salvati nell'archivio istanze possono andare persi qualora un controllo dell'integrità determini che un'istanza non è integra o il gruppo stesso venga eliminato accidentalmente. Come per qualsiasi ambiente, la best practice consiste nell'eseguire il backup dei dati frequentemente o in qualsiasi momento appropriato in base ai requisiti di business continuity. 

# Progetta le tue applicazioni per gestire correttamente la chiusura delle istanze
<a name="gracefully-handle-instance-termination"></a>

 Questo argomento descrive le funzionalità che puoi utilizzare per impedire al gruppo Amazon EC2 Auto Scaling di terminare le istanze Amazon EC2 che non sono ancora pronte per la chiusura. Per impostazione predefinita, Auto Scaling non offre alcuna visibilità sulle applicazioni in esecuzione sulle istanze. Può terminare le istanze prima che l'applicazione sia in grado di chiudersi correttamente o completare i lavori assegnati. Queste funzionalità danno all'applicazione il tempo necessario per completare i lavori in corso, trasferire lo stato o eseguire la pulizia prima della chiusura dell'istanza. È possibile utilizzarle singolarmente o in combinazione a seconda dei requisiti dell'applicazione. 

 Queste funzionalità sono particolarmente utili per i carichi di lavoro stateful, in cui ogni istanza del parco istanze contiene dati, job o stati diversi rispetto alle altre istanze. L'interruzione delle istanze con stato senza un arresto automatico potrebbe comportare il riavvio dall'inizio dei processi di lunga durata, la riduzione della ridondanza o della perdita di dati e l'interruzione delle transazioni o dei calcoli in corso. Per chiudere correttamente un'istanza con stateful, il relativo carico di lavoro deve essere esaurito (completando tutti i lavori attualmente assegnati) o trasferito (spostando lavori, dati o configurazione su un'altra istanza attiva). 

**Topics**
+ [Hook del ciclo di vita di terminazione](#gracefully-handle-instance-termination-lifecycle-hooks)
+ [Protezione del dimensionamento verticale dell’istanza](#gracefully-handle-instance-termination-scale-in-protection)
+ [Policy di terminazione personalizzata](#gracefully-handle-instance-termination-custom-termination-policy)
+ [Politica del ciclo di vita delle istanze](#gracefully-handle-instance-termination-instance-lifecycle-policy)
+ [Sospendi del tutto le terminazioni](#gracefully-handle-instance-termination-suspend-terminate)
+ [Limitazioni](#gracefully-handle-instance-termination-limitations)
+ [Scenari di esempio](#gracefully-handle-instance-termination-examples)

## Hook del ciclo di vita di terminazione
<a name="gracefully-handle-instance-termination-lifecycle-hooks"></a>

 Un hook del ciclo di vita della terminazione prolunga la durata dell'istanza Amazon EC2 già selezionata per la terminazione. Fornisce più tempo per completare il lavoro in corso attualmente assegnato all'istanza o per salvare lo stato di avanzamento e trasferire il lavoro su un'altra istanza. 

 Per molti carichi di lavoro, un hook relativo al ciclo di vita della terminazione può essere sufficiente per chiudere correttamente un'applicazione su un'istanza selezionata per la chiusura. Si tratta di un approccio ottimale e non può essere utilizzato per impedire l'interruzione se un'azione del ciclo di vita di terminazione viene abbandonata. Se il tuo carico di lavoro ha una bassa tolleranza agli errori relativi al ciclo di vita delle istanze, configura le policy relative al ciclo di vita delle istanze in combinazione con gli hook relativi al [ciclo di vita della terminazione per conservare le istanze](https://docs.aws.amazon.com/autoscaling/ec2/userguide/instance-lifecycle-policy.html). 

 Per utilizzare un hook del ciclo di vita della terminazione, devi sapere quando un'istanza è selezionata per la terminazione. Puoi saperlo in due modi: 


| Opzione | Description | Ideale per | Collegamento alla documentazione | 
| --- | --- | --- | --- | 
| All'interno dell'istanza |  Il servizio di metadati di istanza (IMDS) è un endpoint sicuro che consente di verificare lo stato di un'istanza direttamente dall'istanza. Se i metadati vengono restituiti con Terminated, viene pianificata la terminazione dell'istanza.  |  Applicazioni in cui è necessario eseguire un'azione sull'istanza prima che l'istanza venga terminata.  |  [Recupera lo stato del ciclo di vita di destinazione](https://docs.aws.amazon.com/autoscaling/ec2/userguide/retrieving-target-lifecycle-state-through-imds.html)  | 
| All'esterno dell'istanza |  Quando un'istanza viene terminata, viene generata una notifica di evento. Puoi creare regole utilizzando Amazon EventBridge, Amazon SQS, Amazon SNS AWS Lambda o acquisire questi eventi e richiamare una risposta, ad esempio con una funzione Lambda.  |  Applicazioni che devono agire al di fuori dell'istanza.  |  [Configura un obiettivo di notifica](https://docs.aws.amazon.com/autoscaling/ec2/userguide/prepare-for-lifecycle-notifications.html#lifecycle-hook-notification-target)  | 

 Per utilizzare un hook del ciclo di vita, devi anche sapere quando un'istanza è pronta per essere terminata. Amazon EC2 Auto Scaling non interromperà l'istanza finché non [ CompleteLifecycleAction](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CompleteLifecycleAction.html)riceve una chiamata API o non scade il timeout, a seconda dell'evento che si verifica per primo. 

 Per impostazione predefinita, un'istanza può continuare a funzionare per un'ora (heartbeat timeout) causa di un hook del ciclo di vita della terminazione. È possibile configurare il timeout predefinito se un'ora non è sufficiente per completare l'azione del ciclo di vita. Quando è in corso un'azione relativa al ciclo di vita, puoi prolungare il timeout con chiamate API. [ RecordLifecycleActionHeartbeat](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_RecordLifecycleActionHeartbeat.html) 

 Per ulteriori informazioni, consulta [Hook del ciclo di vita di Amazon EC2 Auto Scaling](lifecycle-hooks.md). 

## Protezione del dimensionamento verticale dell’istanza
<a name="gracefully-handle-instance-termination-scale-in-protection"></a>

 È possibile utilizzare la protezione scale-in delle istanze per controllare quali istanze vengono selezionate per la terminazione durante gli eventi di scale-in, in particolare per evitare che un'istanza che sta elaborando attivamente un processo di lunga durata venga interrotta. Ad esempio, quando si eseguono carichi di lavoro containerizzati, è comune voler proteggere tutte le istanze e rimuovere la protezione solo per le istanze senza attività correnti o pianificate. Le istanze possono continuare a ricercare nuovi lavori e riattivare la protezione quando vengono assegnati nuovi lavori. 

 È possibile abilitare la protezione scalabile a livello di gruppo e istanza di Auto Scaling. Quando abiliti la protezione scalabile a livello di gruppo Auto Scaling, solo le nuove istanze vengono protette al momento della creazione. Per le istanze esistenti, puoi abilitare la protezione singolarmente. 

 Le applicazioni possono impostare la protezione dalle istanze stesse o da un piano di controllo centralizzato che gestisce se ogni istanza è terminabile. Consigliamo l'approccio centralizzato per flotte di grandi dimensioni o quando la protezione deve essere attivata frequentemente, in quanto consente di effettuare chiamate in batch ed evitare problemi di limitazione delle API. [ SetInstanceProtection](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_SetInstanceProtection.html) 

 Per ulteriori informazioni, consulta [Utilizza la protezione scalabile in base alle istanze per controllare la chiusura dell'istanza](ec2-auto-scaling-instance-protection.md). 

## Policy di terminazione personalizzata
<a name="gracefully-handle-instance-termination-custom-termination-policy"></a>

 Analogamente alla protezione scalabile in base alle istanze, una policy di terminazione personalizzata consente di impedire al gruppo Amazon EC2 Auto Scaling di terminare istanze EC2 specifiche. Le istanze non funzionanti possono comunque essere chiuse indipendentemente dalla politica di terminazione personalizzata. 

 Il tuo gruppo Auto Scaling utilizza una politica di terminazione predefinita per determinare quali istanze Amazon EC2 termina per prime. Se desideri un maggiore controllo su quali istanze terminano per prime, puoi implementare una politica di terminazione personalizzata utilizzando una funzione Lambda. Auto Scaling chiama questa funzione ogni volta che deve selezionare un'istanza per la terminazione e terminerà solo le istanze restituite dalla funzione. Se la funzione presenta errori, scade o restituisce un elenco vuoto, Auto Scaling non termina alcuna istanza a meno che l'istanza non sia integra. 

 Una politica di terminazione personalizzata è utile quando l'applicazione è in grado di identificare quali istanze sono inattive o sicure da chiudere. Ciò richiede in genere un piano di controllo che tenga traccia del carico di lavoro in tutto il gruppo. 

 Per ulteriori informazioni, consulta [Creare una policy di terminazione personalizzata con Lambda.](lambda-custom-termination-policy.md). 

## Politica del ciclo di vita delle istanze
<a name="gracefully-handle-instance-termination-instance-lifecycle-policy"></a>

 Le politiche del ciclo di vita delle istanze forniscono protezione contro le terminazioni di Amazon EC2 Auto Scaling quando un'azione del ciclo di vita di terminazione viene abbandonata. A differenza dei soli ganci relativi al ciclo di vita, le policy relative al ciclo di vita delle istanze sono progettate per garantire che le istanze passino a uno stato inalterato quando le procedure di spegnimento automatiche non vengono completate correttamente. 

 Quando Auto Scaling seleziona un'istanza per la terminazione, vengono richiamati gli hook del ciclo di vita della terminazione configurati e l'applicazione avvia procedure di spegnimento regolari. Se le azioni del ciclo di vita di terminazione vengono completate correttamente con, l'istanza termina normalmente. `CONTINUE` Tuttavia, se un'azione del ciclo di vita di terminazione viene abbandonata per qualsiasi motivo, la politica del ciclo di vita dell'istanza sposta l'istanza in uno stato mantenuto anziché terminarla. Le istanze conservate non vengono conteggiate ai fini della capacità desiderata del gruppo Auto Scaling, quindi le istanze sostitutive vengono avviate automaticamente. Saranno addebitati i costi standard di Amazon EC2 sia per l'istanza mantenuta che per la sua sostituzione fino a quando non terminerai manualmente l'istanza mantenuta utilizzando l'API. [ TerminateInstanceInAutoScalingGroup](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_TerminateInstanceInAutoScalingGroup.html) 

 Per utilizzare questa funzionalità, devi configurare sia una politica del ciclo di vita dell'istanza con il trigger di `TerminateHookAbandon` conservazione impostato su`retain`, sia almeno un hook del ciclo di vita di terminazione. Poiché le istanze conservate comportano costi continui di Amazon EC2 e richiedono un'azione manuale, il monitoraggio è fondamentale. Dovresti abilitare CloudWatch parametri come `GroupTerminatingRetainedInstances` e creare CloudWatch allarmi per avvisarti quando le istanze entrano in stati mantenuti. 

 Per ulteriori informazioni, consulta [Controlla la conservazione delle istanze con le politiche del ciclo di vita delle istanze](instance-lifecycle-policy.md). 

## Sospendi del tutto le terminazioni
<a name="gracefully-handle-instance-termination-suspend-terminate"></a>

 Se hai bisogno del controllo completo su tutte le terminazioni delle istanze EC2 all'interno del tuo gruppo Amazon EC2 Auto Scaling, sospendi il processo. `Terminate` Ti consigliamo di utilizzare questa opzione solo se le opzioni precedenti non ti offrono il controllo necessario per il tuo servizio. Chiamando [ SuspendProcesses](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_SuspendProcesses.html)per sospendere il `Terminate` processo, si impedisce ad Auto Scaling di tentare di interrompere il processo per qualsiasi motivo, ad eccezione di quelli avviati da una richiesta dell'utente all'API. [ TerminateInstanceInAutoScalingGroup](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_TerminateInstanceInAutoScalingGroup.html) 

 Per ulteriori informazioni, consulta [Sospendere e riprendere i processi di Amazon EC2 Auto Scaling](as-suspend-resume-processes.md). 

## Limitazioni
<a name="gracefully-handle-instance-termination-limitations"></a>

**Importante**  
 Quando progetti la tua applicazione su Amazon EC2 Auto Scaling per gestire correttamente le terminazioni delle istanze, tieni presenti le seguenti limitazioni. 

### Le istanze non integre aggirano alcune protezioni
<a name="gracefully-handle-instance-termination-unhealthy-bypass"></a>

 Se un'istanza non è integra, Amazon EC2 Auto Scaling inizierà a terminarla anche se disponi di politiche di terminazione personalizzate o di protezione scalabile. L'unico modo per impedire la sostituzione di istanze non integre con Auto Scaling consiste nel sospendere `HealthCheck` il `ReplaceUnhealthy` processo, or. `Terminate` È possibile utilizzare i lifecycle hook e una policy sul ciclo di vita dell'istanza per consentire all'applicazione di chiudersi correttamente o copiare tutti i dati che è necessario ripristinare prima che l'istanza non integra venga terminata. 


| Funzionalità | Controlla le istanze integre | Controlla le istanze non integre | 
| --- | --- | --- | 
| Politiche di terminazione personalizzate | ![\[alt text not found\]](http://docs.aws.amazon.com/it_it/autoscaling/ec2/userguide/images/success_icon.png) Sì | ![\[alt text not found\]](http://docs.aws.amazon.com/it_it/autoscaling/ec2/userguide/images/negative_icon.png) No | 
| Protezione dal ridimensionamento | ![\[alt text not found\]](http://docs.aws.amazon.com/it_it/autoscaling/ec2/userguide/images/success_icon.png) Sì | ![\[alt text not found\]](http://docs.aws.amazon.com/it_it/autoscaling/ec2/userguide/images/negative_icon.png) No | 
|  Sospendi HealthCheck o ReplaceUnhealthy elabora Terminate  | ![\[alt text not found\]](http://docs.aws.amazon.com/it_it/autoscaling/ec2/userguide/images/success_icon.png) Sì | ![\[alt text not found\]](http://docs.aws.amazon.com/it_it/autoscaling/ec2/userguide/images/success_icon.png) Sì | 
| Hook del ciclo di vita | ![\[alt text not found\]](http://docs.aws.amazon.com/it_it/autoscaling/ec2/userguide/images/success_icon.png) Sì | ![\[alt text not found\]](http://docs.aws.amazon.com/it_it/autoscaling/ec2/userguide/images/success_icon.png) Sì | 
| Politica del ciclo di vita delle istanze | ![\[alt text not found\]](http://docs.aws.amazon.com/it_it/autoscaling/ec2/userguide/images/success_icon.png) Sì | ![\[alt text not found\]](http://docs.aws.amazon.com/it_it/autoscaling/ec2/userguide/images/success_icon.png) Sì | 

### I soli ganci Lifecycle non garantiscono uno spegnimento corretto
<a name="gracefully-handle-instance-termination-hooks-no-guarantee"></a>

 Per impostazione predefinita, i termination lifecycle hook funzionano al meglio. Se un'azione di terminazione del ciclo di vita viene abbandonata, Amazon EC2 Auto Scaling procede immediatamente alla chiusura dell'istanza. Puoi combinare gli agganci del ciclo di vita della terminazione con una politica del ciclo di vita dell'istanza per conservare le istanze quando le azioni relative al ciclo di vita di terminazione vengono abbandonate. Con questa combinazione: 
+  Gli hook del ciclo di vita della terminazione tentano di chiudere correttamente l'applicazione dopo che Auto Scaling ha attivato la chiusura dell'istanza e il drenaggio da qualsiasi sistema di bilanciamento del carico Elastic Load Balancing configurato è stato completato. 
+  Se un'azione del ciclo di vita di terminazione viene abbandonata per qualsiasi motivo, l'istanza passa a uno stato mantenuto anziché essere terminata. 
+  L'istanza mantenuta rimane nello stato corrente di Amazon EC2, consentendoti di completare manualmente le procedure di spegnimento o di indagare sull'errore. 
+  Puoi terminare manualmente le istanze conservate chiamando l'API dopo aver completato le [ TerminateInstanceInAutoScalingGroup](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_TerminateInstanceInAutoScalingGroup.html)azioni necessarie. 

 Per ulteriori informazioni, consulta [Controlla la conservazione delle istanze con le politiche del ciclo di vita delle istanze](instance-lifecycle-policy.md). 

### Alcune opzioni di mercato delle istanze possono essere interrotte con un preavviso limitato
<a name="gracefully-handle-instance-termination-spot-interruptions"></a>

 Se utilizzi opzioni di mercato delle istanze come istanze Spot e prenotazioni di capacità interrompibile nel tuo gruppo Auto Scaling, Amazon EC2 può interrompere e recuperare le tue istanze in qualsiasi momento. Queste interruzioni aggirano tutti i meccanismi di protezione di Amazon EC2 Auto Scaling, tra cui: 
+ Hook del ciclo di vita di terminazione
+ Protezione del dimensionamento verticale dell’istanza
+ Politiche di terminazione personalizzate
+ Politiche relative al ciclo di vita delle istanze
+ Processi sospesi

 Quando un'istanza Spot riceve un avviso di interruzione, hai a disposizione circa due minuti per eseguire le normali operazioni di spegnimento. Sebbene sia possibile utilizzare gli hook del ciclo di vita della terminazione per rispondere alle interruzioni dell'istanza Spot, l'istanza verrà interrotta forzatamente allo scadere del periodo di due minuti, anche se l'hook del ciclo di vita è ancora in corso. Inoltre, le politiche relative al ciclo di vita delle istanze non possono impedire le interruzioni delle istanze Spot. 

 Per ulteriori informazioni sulla gestione delle interruzioni delle istanze Spot, consulta le [interruzioni delle istanze Spot e le](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html) [migliori pratiche per Amazon EC2 Spot nella Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-best-practices.html) User *Guide*. 

### Le terminazioni dirette di Amazon EC2 ignorano tutte le protezioni
<a name="gracefully-handle-instance-termination-direct-ec2-api"></a>

 Se interrompi un'istanza nel tuo gruppo Auto Scaling direttamente con l'API Amazon [ TerminateInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TerminateInstances.html)EC2, la terminazione ignora tutti i meccanismi di protezione di Amazon EC2 Auto Scaling. 

 Per terminare le istanze nel tuo gruppo Auto Scaling rispettando le protezioni configurate, utilizza invece l'API. [ TerminateInstanceInAutoScalingGroup](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_TerminateInstanceInAutoScalingGroup.html) 

## Scenari di esempio
<a name="gracefully-handle-instance-termination-examples"></a>

 Quando utilizzi Amazon EC2 Auto Scaling, puoi scegliere la quantità di gestione del parco veicoli che Auto Scaling gestisce per tuo conto rispetto al controllo diretto che mantieni sulle decisioni di terminazione delle istanze EC2. Più il carico di lavoro è sensibile alle terminazioni delle istanze, maggiore è il controllo che potresti voler mantenere. Gli esempi seguenti descrivono carichi di lavoro con diversi livelli di tolleranza e le configurazioni consigliate: 

### Esempio 1: nodi di database distribuiti (bassa tolleranza)
<a name="gracefully-handle-instance-termination-example-database"></a>

 Esegui un database distribuito in cui ogni istanza EC2 contiene una partizione dei dati con un fattore di replica pari a 3. La perdita di più istanze che contengono repliche della stessa partizione potrebbe causare la perdita di dati o rendere tale partizione non disponibile. 

 **Sfida:** l'Auto Scaling potrebbe terminare le istanze più velocemente di quanto i dati possano essere replicati su altri nodi e le terminazioni potrebbero ridurre la capacità al di sotto di quella necessaria per mantenere il fattore di replica. 

Considerate le seguenti configurazioni:
+  Abilita la [protezione scale-in delle istanze](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html) su tutte le istanze del database; rimuovila a livello di codice solo dopo aver verificato che i dati siano replicati in modo sicuro altrove. 
+  Configura gli [hook del ciclo di vita della terminazione con timeout prolungati in combinazione con una policy sul ciclo](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html) di vita dell'istanza per consentire il completamento del trasferimento dei dati. 
+  Imposta una [politica di manutenzione delle istanze](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html) con una percentuale minima di integrità del 100% per mantenere la capacità richiesta. 

### Esempio 2: elaborazione di lavori a lunga durata (tolleranza media)
<a name="gracefully-handle-instance-termination-example-job-processing"></a>

 Hai una coda Amazon SQS che raccoglie i messaggi in arrivo per lavori di lunga durata. Quando arriva un nuovo messaggio, un'istanza EC2 recupera il messaggio e avvia un processo che richiede 3 ore per l'elaborazione. Man mano che la coda cresce, Auto Scaling aggiunge istanze in base alle tue politiche di scalabilità. Man mano che la coda si restringe, Auto Scaling interrompe le istanze. 

 **Sfida:** Auto Scaling potrebbe terminare un'istanza dopo 3 ore di elaborazione di un processo anziché un'istanza inattiva. Il processo può essere riavviato su un'altra istanza, ma si perdono progressi significativi. 

Considerate le seguenti configurazioni:
+  Configura una [politica di terminazione personalizzata](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lambda-custom-termination-policy.html) che dia priorità alla chiusura delle istanze inattive. 
+  Utilizza gli hook del [ciclo di vita della terminazione per consentire il completamento dei lavori in corso](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html). 
+  Abilita la [protezione scale-in dell'istanza](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html) a livello di codice quando un'istanza avvia un processo e rimuovila al termine del processo. 

### Esempio 3: Flotta di lavoratori per ambienti di test (alta tolleranza)
<a name="gracefully-handle-instance-termination-example-test"></a>

 Gestisci una flotta di istanze EC2 che eseguono test automatici, processi di CI/CD pipeline o carichi di lavoro di sviluppo. Queste istanze di lavoro estraggono le attività da una coda e i risultati dei test possono essere rigenerati se un processo fallisce. 

 **Sfida:** i processi di test possono essere interrotti durante gli eventi di scalabilità, ma poiché i test possono essere riprovati senza alcun impatto, è preferibile ottimizzare i costi e la semplicità anziché garantire una disponibilità senza interruzioni. 

Considerate le seguenti configurazioni:
+  Utilizza gli [hook del ciclo di vita della terminazione per consentire il completamento delle richieste](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html) in volo. 
+  Prendi in considerazione l'utilizzo di [istanze Spot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html) con una strategia di allocazione ottimizzata in termini di capacità per ridurre ulteriormente i costi. 