

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

# Proteggere le attività di Amazon ECS dall'interruzione causata da eventi di riduzione orizzontale
<a name="task-scale-in-protection"></a>

La protezione scalabile di Amazon ECS consente di proteggere le attività dall'interruzione da parte di eventi di riduzione orizzontale derivanti da scalabilità automatica del servizio o implementazioni varie.

Alcune applicazioni richiedono un meccanismo per salvaguardare le attività strategiche dall'interruzione dovuta a eventi scalabili nei periodi di scarso utilizzo o durante le implementazioni dei servizi. Esempio:
+ Si tratta di un'applicazione asincrona di elaborazione delle code, ad esempio un processo di transcodifica video in cui alcune attività devono essere eseguite per ore anche quando l'utilizzo cumulativo del servizio è basso.
+ Si dispone di un'applicazione di gioco che esegue i server di gioco come attività di Amazon ECS che devono continuare a funzionare anche se tutti gli utenti si sono disconnessi per ridurre la latenza di avvio di un riavvio del server.
+ Quando si implementa una nuova versione del codice, è necessario che le attività continuino a essere eseguite perché sarebbe costoso rielaborarle.

Per evitare che le attività appartenenti al servizio vengano terminate in caso di un evento di dimensionamento, imposta l'attributo `ProtectionEnabled` su `true`. Quando si imposta `ProtectionEnabled` su true, le attività vengono protette per 2 ore per impostazione predefinita. Poi è possibile personalizzare il periodo di protezione utilizzando l'attributo `ExpiresInMinutes`. Puoi proteggere le tue attività per un minimo di 1 minuto e fino a un massimo di 2.880 minuti (48 ore). Se stai utilizzando AWS CLI, puoi specificare l'opzione. `--protection-enabled`

Dopo che un'attività ha terminato il lavoro richiesto, sarà possibile impostare l'attributo `ProtectionEnabled` su `false`, in modo che l'attività venga terminata da successivi eventi di scalabilità. Se si utilizza il AWS CLI, è possibile specificare l'`--no-protection-enabled`opzione.

## Meccanismi di protezione scalabile delle attività
<a name="task-scale-in-protection-mechanisms"></a>

Puoi impostare e ottenere una protezione scalabile delle attività utilizzando l'endpoint dell'agente container Amazon ECS o l'API Amazon ECS.
+ **Endpoint dell'agente del container Amazon ECS**

  Consigliamo di utilizzare l'endpoint dell'agente container Amazon ECS per attività che possono determinare autonomamente la necessità di essere protette. Utilizza questo approccio per carichi di lavoro basati su code o di elaborazione dei processi

  Quando un container inizia il lavoro di elaborazione, ad esempio consumando un messaggio SQS, è possibile impostare l'attributo `ProtectionEnabled` tramite il percorso dell'endpoint di protezione scalabile dell'attività `$ECS_AGENT_URI/task-protection/v1/state` dall'interno del container. Amazon ECS non terminerà questa attività durante gli eventi di scalabilità. Al termine dell'attività, è possibile annullare l'attributo `ProtectionEnabled` utilizzando lo stesso endpoint, rendendo l'attività idonea all'interruzione durante i successivi eventi di scalabilità.

  Per ulteriori informazioni sull'endpoint dell'agente del container Amazon ECS, consultare [Endpoint di protezione scalabile di Amazon ECS](task-scale-in-protection-endpoint.md).
+ **API Amazon ECS**

  È possibile utilizzare l'API Amazon ECS per impostare e recuperare la protezione scalabile delle attività se l'applicazione dispone di un componente che tiene traccia dello stato delle attività attive. Utilizzare `UpdateTaskProtection` per contrassegnare una o più attività come protette. Utilizzare `GetTaskProtection` per recuperare lo stato di protezione.

  Un esempio di questo approccio potrebbe essere se l'applicazione ospita sessioni del server di gioco come attività Amazon ECS. Quando un utente accede a una sessione sul server (attività), è possibile contrassegnare l'attività come protetta. Dopo la disconnessione dell'utente, puoi annullare la protezione specifica per l'attività o annullare periodicamente la protezione per attività simili che non hanno più sessioni attive, a seconda se è necessario mantenere i server inattivi.

  Per ulteriori informazioni, consulta [UpdateTaskProtection](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateTaskProtection.html)e consulta il *riferimento [GetTaskProtection](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_GetTaskProtection.html)all'API di Amazon Elastic Container Service*.

È possibile combinare entrambi gli approcci. Ad esempio, utilizza l'endpoint dell'agente Amazon ECS per impostare la protezione delle attività dall'interno di un container e utilizza l'API Amazon ECS per rimuovere la protezione delle attività dal servizio di controller esterno.

## Considerazioni
<a name="task-scale-in-protection-considerations"></a>

Considera i seguenti punti prima di utilizzare la protezione scalabile delle attività:
+ La protezione scalabile è supportata solo con le attività implementate da un servizio.
+ La protezione scalabile è supportata con attività implementate da un servizio in esecuzione su istanze gestite da Amazon ECS.
+ Ti consigliamo di utilizzare l'endpoint dell'agente del container Amazon ECS, in quanto l'agente Amazon ECS dispone di meccanismi di ripetizione integrati e di un'interfaccia più semplice.
+ Puoi reimpostare il periodo di scadenza della protezione per il dimensionamento delle attività richiamando `UpdateTaskProtection` su un'attività che ha già la protezione attivata.
+ Determina il tempo necessario a un'attività per completare il lavoro richiesto e imposta la proprietà `expiresInMinutes` di conseguenza. Se imposti la scadenza della protezione più a lungo del necessario, dovrai sostenere costi e ritardi nell'implementazione di nuove attività.
+ La protezione per il dimensionamento delle attività è supportata sull'agente del container Amazon ECS `1.65.0` o versioni successive. Questa caratteristica può essere supportata sulle istanze Amazon EC2 utilizzando versioni precedenti dell'agente di container Amazon ECS aggiornando l'agente alla versione più recente. Per ulteriori informazioni, consultare [Aggiornamento dell'agente del container Amazon ECS](ecs-agent-update.md).
+ Considerazioni sull'implementazione:
  + Se il servizio utilizza un aggiornamento in sequenza, verranno create nuove attività ma le attività che eseguono una versione precedente non verranno interrotte fino a quando `protectionEnabled` non viene annullato o scade. È possibile regolare il parametro `maximumPercentage` nella configurazione di implementazione su un valore che consenta di creare nuove attività quando le vecchie attività sono protette.
  + Se viene applicato un blue/green aggiornamento, la distribuzione blu con attività protette non verrà rimossa se le attività lo hanno fatto`protectionEnabled`. Il traffico verrà deviato verso le nuove attività che si presentano e le attività più vecchie verranno rimosse solo quando la `protectionEnabled` viene eliminata o scade. A seconda del timeout degli CloudFormation aggiornamenti, la CodeDeploy distribuzione potrebbe scadere e le attività Blue precedenti potrebbero essere ancora presenti.
  + Se lo utilizzi CloudFormation, lo update-stack ha un timeout di 3 ore. Pertanto, se imposti la protezione delle attività per più di 3 ore, la CloudFormation distribuzione potrebbe causare errori e ripristini.

    Durante il periodo in cui le vecchie attività sono protette, lo CloudFormation stack viene visualizzato. `UPDATE_IN_PROGRESS` Se la protezione per il dimensionamento delle attività viene rimossa o scade entro la finestra di 3 ore, l'implementazione avrà esito positivo e passerà allo stato `UPDATE_COMPLETE`. Se l'implementazione rimane bloccata in `UPDATE_IN_PROGRESS` per più di 3 ore, non riuscirà e mostrerà lo stato `UPDATE_FAILED`, quindi verrà ripristinato il vecchio set di attività.
  + Amazon ECS invia gli eventi di servizio se le attività protette impediscono a un'implementazione (in sequenza o blu/verde) di raggiungere lo stato stazionario, in modo che sia possibile intraprendere azioni correttive. Durante il tentativo di aggiornare lo stato di protezione di un'attività, se viene ricevuto un messaggio di errore `DEPLOYMENT_BLOCKED`, allora significa che il servizio ha più attività protette rispetto al numero di attività desiderato per il servizio. Per risolvere questo errore, effettuare una delle seguenti operazioni:
    + Attendi la scadenza della protezione dell'attività corrente. Quindi imposta la protezione delle attività.
    + Determina quali attività possono essere arrestate. Quindi, usa `UpdateTaskProtection` con l'opzione `protectionEnabled` impostata su `false` per queste attività.
    + Aumenta il numero di attività desiderate del servizio portandolo a un numero maggiore del numero di attività protette.

## Autorizzazioni IAM richieste per la protezione scalabile delle attività
<a name="task-scale-in-protection-iam"></a>

L'attività deve avere il ruolo di attività Amazon ECS con le seguenti autorizzazioni:
+ `ecs:GetTaskProtection`: consente all'agente del container Amazon ECS di effettuare chiamate `GetTaskProtection`.
+ `ecs:UpdateTaskProtection`: consente all'agente del container Amazon ECS di effettuare chiamate `UpdateTaskProtection`.