

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

# Interrompi in modo sicuro i carichi di lavoro Amazon ECS in esecuzione sulle istanze EC2
<a name="managed-instance-draining"></a>

Il drenaggio delle istanze gestite facilita la terminazione graduale delle istanze Amazon EC2. Ciò consente ai carichi di lavoro di interrompersi in sicurezza e di essere riprogrammati su istanze di non terminazione. La manutenzione e gli aggiornamenti dell'infrastruttura vengono eseguiti senza preoccuparsi di interrompere i carichi di lavoro. Usando il drenaggio delle istanze gestite, semplifichi i flussi di lavoro di gestione dell'infrastruttura che richiedono la sostituzione delle istanze Amazon EC2, garantendo al contempo la resilienza e la disponibilità delle tue applicazioni.

Il drenaggio delle istanze gestite da Amazon ECS funziona con le istanze di gruppo Auto Scaling sostitutive. In base all'aggiornamento delle istanze e alla durata massima delle stesse, i clienti possono garantire la conformità con i più recenti requisiti di sistema operativo e sicurezza per la loro capacità.

Il drenaggio delle istanze gestite da Amazon ECS può essere usato solo con i provider di capacità Amazon ECS. Puoi attivare il drenaggio gestito delle istanze quando crei o aggiorni i fornitori di capacità del gruppo Auto Scaling utilizzando la console AWS CLI Amazon ECS o l'SDK.

Gli eventi riportati di seguito sono coperti dal drenaggio delle istanze gestite da Amazon ECS.
+ [Aggiornamento delle istanze di gruppo Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-instance-refresh.html): usa l'aggiornamento dell'istanza per eseguire la sostituzione graduale delle istanze Amazon EC2 nel gruppo Auto Scaling invece di eseguirla manualmente in batch. Ciò è utile quando è necessario sostituire un numero elevato di istanze, L'aggiornamento dell'istanza viene avviato tramite la console Amazon EC2 o l'API `StartInstanceRefresh`. Assicurati di selezionare `Replace` per ottenere la protezione scalabile quando chiami `StartInstanceRefresh` se usi la protezione dalla terminazione gestita.
+ [Durata massima dell'istanza](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-max-instance-lifetime.html): puoi definire una durata massima quando devi sostituire le istanze del gruppo Auto Scaling. Ciò è utile per pianificare le istanze sostitutive in base a policy di sicurezza interne o alla conformità.
+ Riduzione orizzontale automatica del gruppo Auto Scaling: basato su policy di dimensionamento e azioni di dimensionamento pianificate, il gruppo Auto Scaling supporta il dimensionamento automatico delle istanze. Usando un gruppo Auto Scaling come provider di capacità Amazon ECS, puoi ridurre orizzontalmente le istanze di gruppo Auto Scaling quando non è in esecuzione alcuna attività.
+ [Controlli dell'integrità del gruppo Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html): il gruppo Auto Scaling supporta molti controlli di integrità per gestire la terminazione delle istanze non integre.
+ [CloudFormation aggiornamenti dello stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-direct.html) ‐ Puoi aggiungere un `UpdatePolicy` attributo allo CloudFormation stack per eseguire aggiornamenti continui quando il gruppo cambia.
+ [Ribilanciamento della capacità spot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html) ‐ Il gruppo Auto Scaling cerca di sostituire in modo proattivo le istanze spot con un rischio di interruzione più elevato sulla base dell'avviso di ribilanciamento della capacità di Amazon EC2. Il gruppo Auto Scaling termina l'istanza precedente quando quella sostitutiva viene avviata e risulta funzionante. Il drenaggio delle istanze gestite da Amazon ECS drena le istanze spot allo stesso modo in cui drena le istanze non spot.
+ [Interruzione spot](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html): le istanze Spot vengono terminate con un preavviso di due minuti. Il drenaggio delle istanze gestite da Amazon ECS mette l'istanza in stato di drenaggio in risposta.

**Hook del ciclo di vita di Amazon EC2 Auto Scaling con drenaggio delle istanze gestite**  
Gli hook del ciclo di vita del gruppo Auto Scaling consentono ai clienti di creare soluzioni che vengono attivate da determinati eventi nel ciclo di vita dell'istanza ed eseguono un'azione personalizzata quando si verifica quel determinato evento. Un gruppo Auto Scaling consente fino a 50 hook. Possono esistere più hook di terminazione che vengono eseguiti in parallelo. Il gruppo Auto Scaling attende il completamento di tutti gli hook prima di terminare un'istanza.

Oltre alla terminazione degli hook gestita da Amazon ECS, è anche possibile configurare hook di terminazione del ciclo di vita personalizzati. Gli hook del ciclo di vita hanno `default action` e suggeriamo di impostare `continue` come impostazione predefinita per garantire che altri hook, come l'hook gestito da Amazon ECS, non siano influenzati da eventuali errori degli hook personalizzati.

Se hai già configurato un hook del ciclo di vita di terminazione del gruppo Auto Scaling e hai anche abilitato il drenaggio delle istanze gestite da Amazon ECS, vengono eseguiti entrambi gli hook del ciclo di vita. Tuttavia, le tempistiche relative non sono garantite. Gli hook del ciclo di vita hanno un'impostazione `default action` per specificare l'azione da intraprendere allo scadere del timeout. In caso di errori, consigliamo di usare `continue` come risultato predefinito nel tuo hook personalizzato. Ciò garantisce che altri hook, in particolare quelli gestiti da Amazon ECS, non siano influenzati da eventuali errori nel tuo hook del ciclo di vita personalizzato. Il risultato alternativo di `abandon` comporta che tutti gli altri hook vengano ignorati, e questo dovrebbe essere evitato. Per ulteriori informazioni sugli hook del ciclo di vita del gruppo Auto Scaling, consulta [Hook del ciclo di vita di Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html) nella *Guida per l'utente di Amazon EC2 Auto Scaling*.

**Drenaggio delle istanze gestite e delle attività**  
Il drenaggio delle istanze gestite da Amazon ECS usa la funzionalità di drenaggio esistente presente nelle istanze di container. La funzionalità di [drenaggio delle istanze di container](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-instance-draining.html) esegue la sostituzione e l'interruzione delle attività di replica che appartengono a un servizio Amazon ECS. Un'attività autonoma, come quella invocata da `RunTask`, che si trova nello stato `PENDING` o `RUNNING`, rimane inalterata. È necessario attendere che queste attività vengano completate o interromperle manualmente. L'istanza di container rimane nello stato `DRAINING` fino a quando tutte le attività non vengono interrotte o non sono trascorse 48 ore. Le attività daemon sono le ultime a essere interrotte dopo che tutte le attività di replica sono state interrotte.

**Drenaggio delle istanze gestite e protezione dalla terminazione gestita**  
Il drenaggio delle istanze gestite funziona anche se la terminazione gestita è disabilitata. Per informazioni sulla protezione da terminazione gestita, consulta [Controlla le istanze terminate da Amazon ECS](managed-termination-protection.md). 

La seguente tabella riassume il comportamento per diverse combinazioni di terminazione gestita e drenaggio gestito.


|  Terminazione gestita  |  Drenaggio gestito  |  Outcome  | 
| --- | --- | --- | 
|  Abilitato  | Abilitato | Amazon ECS protegge le istanze Amazon EC2 che eseguono attività dalla terminazione causata da eventi di riduzione orizzontale. Tutte le istanze in fase di terminazione, ad esempio quelle per cui non è impostata la protezione dalla terminazione, che hanno subito una terminazione spot o sono state forzate dall'aggiornamento dell'istanza, vengono drenate correttamente. | 
|  Disabilitato  | Abilitato | Amazon ECS non protegge le istanze Amazon EC2 che eseguono attività dal dimensionamento. Tuttavia, tutte le istanze che vengono terminate vengono svuotate in modo corretto. | 
|  Abilitato  | Disabilitato | Amazon ECS protegge le istanze Amazon EC2 che eseguono attività dalla terminazione causata da eventi di riduzione orizzontale. Tuttavia, le istanze possono comunque essere terminate da un'interruzione spot o da un aggiornamento forzato dell'istanza, oppure se non stanno eseguendo alcuna attività. Amazon ECS non esegue il drenaggio graduale per queste istanze e avvia attività di servizio sostitutive dopo il loro arresto. | 
|  Disabilitato  | Disabilitato | Le istanze Amazon EC2 possono essere ridotte orizzontalmente o terminate in qualsiasi momento, anche se eseguono attività Amazon ECS. Amazon ECS avvierà attività di servizio sostitutive dopo la loro interruzione. | 

**Drenaggio delle istanze gestite e drenaggio delle istanze spot**  
Con il drenaggio delle istanze spot, è possibile impostare una variabile di ambiente `ECS_ENABLE_SPOT_INSTANCE_DRAINING` sull'agente Amazon ECS che consente ad Amazon ECS di mettere un'istanza in stato di drenaggio in risposta all'interruzione spot di due minuti. Il drenaggio delle istanze gestite da Amazon ECS facilita lo spegnimento graduale delle istanze Amazon EC2 in fase di terminazione per diverse ragioni, non solo per una terminazione spot. Ad esempio, è possibile utilizzare il ribilanciamento della capacità di Amazon EC2 Auto Scaling per sostituire in modo proattivo le istanze spot a elevato rischio di interruzione, mentre il drenaggio delle istanze gestite esegue lo spegnimento graduale delle istanze spot sostituite. Quando si utilizza il drenaggio gestito delle istanze, non è necessario abilitare separatamente il drenaggio delle istanze spot, quindi `ECS_ENABLE_SPOT_INSTANCE_DRAINING` nei dati utente del gruppo Auto Scaling è ridondante. Per ulteriori informazioni sulle istanze spot, consulta [Spot Instances](create-capacity.md#container-instance-spot).

## Come funziona il drenaggio gestito delle istanze con EventBridge
<a name="managed-instance-draining-eventbridge"></a>

Gli eventi di drenaggio delle istanze gestite di Amazon ECS vengono pubblicati su Amazon EventBridge e Amazon ECS crea una regola EventBridge gestita nel bus predefinito del tuo account per supportare il drenaggio gestito delle istanze. Puoi filtrare questi eventi su altri AWS servizi come Lambda, Amazon SNS e Amazon SQS per monitorare e risolvere i problemi.
+ Amazon EC2 Auto Scaling invia un EventBridge evento quando viene richiamato un hook del ciclo di vita.
+ Gli avvisi di interruzione Spot vengono pubblicati su. EventBridge
+ Amazon ECS genera messaggi di errore che puoi recuperare tramite la console Amazon ECS e. APIs
+ EventBridge dispone di meccanismi di riprova integrati per mitigare i guasti temporanei.

# Configurazione dei provider di capacità Amazon ECS per chiudere le istanze in modo sicuro
<a name="enable-managed-instance-draining"></a>

Puoi attivare il drenaggio delle istanze gestite quando crei o aggiorni i provider di capacità del gruppo Auto Scaling usando la console e la AWS CLI Amazon ECS.

**Nota**  
Il drenaggio delle istanze gestite è attivo per impostazione predefinita quando si crea un provider di capacità.

Di seguito sono riportati alcuni esempi di utilizzo di AWS CLI per creare un provider di capacità con il drenaggio gestito delle istanze abilitate e di abilitazione del drenaggio gestito delle istanze per il provider di capacità esistente di un cluster.

**Creare un provider di capacità con il drenaggio delle istanze gestite abilitato**  
Per creare un provider di capacità con lo svuotamento delle istanze gestito abilitato, usa il comando `create-capacity-provider`. Imposta il parametro `managedDraining` su `ENABLED`.

```
aws ecs create-capacity-provider \
--name capacity-provider \
--auto-scaling-group-provider '{
  "autoScalingGroupArn": "asg-arn",
  "managedScaling": {
    "status": "ENABLED",
    "targetCapacity": 100,
    "minimumScalingStepSize": 1,
    "maximumScalingStepSize": 1
  },
  "managedDraining": "ENABLED",
  "managedTerminationProtection": "ENABLED",
}'
```

Risposta:

```
{
    "capacityProvider": {
        "capacityProviderArn": "capacity-provider-arn",
        "name": "capacity-provider",
        "status": "ACTIVE",
        "autoScalingGroupProvider": {
            "autoScalingGroupArn": "asg-arn",
            "managedScaling": {
                "status": "ENABLED",
                "targetCapacity": 100,
                "minimumScalingStepSize": 1,
                "maximumScalingStepSize": 1
            },
            "managedTerminationProtection": "ENABLED"
            "managedDraining": "ENABLED"
        }
    }
}
```

**Abilita il drenaggio delle istanze gestite per il provider di capacità esistente di un cluster**  
Per abilitare il drenaggio delle istanze gestite per il provider di capacità esistente di un cluster, usa il comando `update-capacity-provider`. Come puoi vedere, `managedDraining` indica `DISABLED` e `updateStatus` indica `UPDATE_IN_PROGRESS`.

```
aws ecs update-capacity-provider \
--name cp-draining \
--auto-scaling-group-provider '{
  "managedDraining": "ENABLED"
}
```

Risposta:

```
{
    "capacityProvider": {
        "capacityProviderArn": "cp-draining-arn",
        "name": "cp-draining",
        "status": "ACTIVE",
        "autoScalingGroupProvider": {
            "autoScalingGroupArn": "asg-draining-arn",
            "managedScaling": {
                "status": "ENABLED",
                "targetCapacity": 100,
                "minimumScalingStepSize": 1,
                "maximumScalingStepSize": 1,
                "instanceWarmupPeriod": 300
            },
            "managedTerminationProtection": "DISABLED",
            "managedDraining": "DISABLED" // before update
        },
        "updateStatus": "UPDATE_IN_PROGRESS", // in progress and need describe again to find out the result
        "tags": [
        ]
    }
}
```



Usa il comando `describe-clusters` e includi `ATTACHMENTS`. Lo `status` dell'allegato di drenaggio dell'istanza gestita è `PRECREATED` e lo `attachmentsStatus` generale è `UPDATING`.

```
aws ecs describe-clusters --clusters cluster-name --include ATTACHMENTS
```

Risposta:

```
{
    "clusters": [
        {
            ...

            "capacityProviders": [
                "cp-draining"
            ],
            "defaultCapacityProviderStrategy": [],
            "attachments": [
                # new precreated managed draining attachment
                {
                    "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
                    "type": "managed_draining",
                    "status": "PRECREATED",
                    "details": [
                        {
                            "name": "capacityProviderName",
                            "value": "cp-draining"
                        },
                        {
                            "name": "autoScalingLifecycleHookName",
                            "value": "ecs-managed-draining-termination-hook"
                        }
                    ]
                },

                ...

            ],
            "attachmentsStatus": "UPDATING"
        }
    ],
    "failures": []
}
```

Al termine dell'aggiornamento, utilizza `describe-capacity-providers` e vedrai che `managedDraining` è ora `ENABLED`.

```
aws ecs describe-capacity-providers --capacity-providers cp-draining
```

Risposta:

```
{
    "capacityProviders": [
        {
            "capacityProviderArn": "cp-draining-arn",
            "name": "cp-draining",
            "status": "ACTIVE",
            "autoScalingGroupProvider": {
                "autoScalingGroupArn": "asg-draning-arn",
                "managedScaling": {
                    "status": "ENABLED",
                    "targetCapacity": 100,
                    "minimumScalingStepSize": 1,
                    "maximumScalingStepSize": 1,
                    "instanceWarmupPeriod": 300
                },
                "managedTerminationProtection": "DISABLED",
                "managedDraining": "ENABLED" // successfully update
            },
            "updateStatus": "UPDATE_COMPLETE",
            "tags": []
        }
    ]
}
```

## Risoluzione dei problemi relativi al drenaggio delle istanze gestite da Amazon ECS
<a name="managed-instance-troubleshooting"></a>

Potrebbe capitarti di dover risolvere i problemi relativi al drenaggio delle istanze gestite. Di seguito è riportato un esempio di un problema che potresti incontrare durante l'utilizzo e della relativa risoluzione.

**Le istanze non terminano dopo aver superato la durata massima dell'istanza quando si utilizza il dimensionamento automatico.**  
Se le istanze non vengono terminate neppure dopo aver raggiunto e superato la durata massima prevista durante l'utilizzo di un gruppo Auto Scaling, è possibile che siano protette dalla riduzione orizzontale. È possibile disattivare la terminazione gestita e consentire il drenaggio gestito per gestire il riciclo delle istanze. 

## Comportamento di drenaggio per le istanze gestite da Amazon ECS
<a name="managed-instances-draining-behavior"></a>

La terminazione di Amazon ECS Managed Instances garantisce transizioni agevoli dei carichi di lavoro, ottimizzando al contempo i costi e mantenendo lo stato del sistema. Il sistema di terminazione offre tre percorsi decisionali distinti per la terminazione delle istanze, ciascuno con caratteristiche temporali e profili di impatto sul cliente diversi.

### Percorsi decisionali per la terminazione
<a name="managed-instances-termination-paths"></a>

Terminazione avviata dal cliente  
Consente il controllo diretto sulla rimozione delle istanze quando bisogna rimuovere immediatamente le istanze di container dal servizio. Si richiama l' DeregisterContainerInstance API con il flag force impostato su true, a indicare che è necessaria la terminazione immediata nonostante i carichi di lavoro in esecuzione.

Terminazione dello stato di inattività avviata dal sistema  
Amazon ECS Managed Instances monitora continuamente e ottimizza in modo proattivo i costi chiudendo le istanze di container Amazon ECS inattive che non eseguono alcuna attività. ECS utilizza un ritardo euristico per dare alle istanze di container la possibilità di acquisire attività appena avviate prima di essere terminate. Questo può essere personalizzato con il parametro di configurazione del provider di capacità di `scaleInAfter` Amazon ECS Managed Instances.

Terminazione dell'aggiornamento dell'infrastruttura  
Amazon ECS Managed Instances gestisce e aggiorna automaticamente il software sulle istanze di container gestite per garantire sicurezza e conformità mantenendo al contempo la disponibilità del carico di lavoro. Per ulteriori informazioni, consulta la sezione Applicazione di [patch in Amazon ECS Managed Instances.](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/managed-instances-patching.html)

### Drenaggio regolare e migrazione del carico di lavoro
<a name="managed-instances-draining-coordination"></a>

Il sistema di drenaggio regolare implementa un sofisticato coordinamento con la gestione dei servizi Amazon ECS per garantire che le attività gestite dal servizio vengano correttamente migrate dalle istanze pianificate per la terminazione.

**Coordinamento del drenaggio delle attività di servizio**  
Quando un'istanza passa allo stato DRAINING, il pianificatore di Amazon ECS interrompe automaticamente l'assegnazione di nuove attività all'istanza, implementando al contempo procedure di spegnimento graduale per le attività di servizio esistenti. Il drenaggio delle attività di servizio include il coordinamento con le strategie di implementazione dei servizi, i requisiti di controllo dell'integrità e le preferenze di drenaggio dell'utente, al fine di garantire tempi di migrazione ottimali e tassi di successo elevati.

**Gestione delle attività autonome**  
Per le attività autonome è necessaria una gestione diversa perché non beneficiano della gestione automatica dei servizi. Il sistema valuta le caratteristiche delle attività autonome, tra cui le stime della durata delle attività, l'analisi della probabilità di completamento e la valutazione dell'impatto sui clienti. La strategia di completamento graduale consente alle attività autonome di completarsi naturalmente durante un periodo di tolleranza prolungato, mentre la terminazione forzata garantisce che l'aggiornamento dell'infrastruttura avvenga entro tempi accettabili quando le attività non sono state completate naturalmente.

### Strategia di completamento in due fasi
<a name="managed-instances-two-phase-completion"></a>

Il sistema di terminazione implementa un approccio in due fasi che bilancia la continuità del carico di lavoro e i requisiti di gestione dell'infrastruttura.

**Fase 1: periodo di completamento graduale**  
Durante questa fase, il sistema implementa strategie di drenaggio graduale che danno priorità alla continuità del carico di lavoro. Le attività di servizio subiscono un drenaggio graduale attraverso le normali attività di pianificazione di Amazon ECS, le attività autonome continuano ad essere eseguite e possono essere completate naturalmente, mentre il sistema monitora tutte le attività affinché raggiungano lo stato di arresto attraverso attività di completamento naturali.

**Fase 2: applicazione di scadenze rigide**  
Quando il completamento graduale non consente di raggiungere gli obiettivi di terminazione entro tempi accettabili, il sistema applica una scadenza rigida. Solitamente, la scadenza rigida è fissata al momento dell'avvio del drenaggio più sette giorni, in modo da garantire un tempo sufficiente per il completamento dell'operazione nel rispetto dei requisiti operativi. L'applicazione prevede l'invocazione automatica delle procedure di annullamento forzato della registrazione e l'immediata terminazione di tutte le attività rimanenti, indipendentemente dal loro stato di completamento.