

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

# Gruppi di destinazioni per gli Application Load Balancer
<a name="load-balancer-target-groups"></a>

I gruppi di destinazioni instradano le richieste su destinazioni individuali registrate, ad esempio le istanze EC2, utilizzando il protocollo e il numero di porta specificati. È possibile registrare un target a più gruppi target. È possibile configurare controlli dello stato per ciascun gruppo target. I controlli dello stato vengono eseguiti su tutti i target registrati a un gruppo target specificato in una regola di listener per il sistema di bilanciamento del carico.

Ogni gruppo target viene utilizzato per instradare le richieste a uno o più target registrati. Al momento della creazione di ciascuna regola del listener, è necessario specificare un gruppo target e le condizioni. Quando una condizione di una regola viene soddisfatta, il traffico viene instradato al gruppo target corrispondente. È possibile creare diversi gruppi target per diversi tipi di richieste. Ad esempio, è possibile creare un gruppo target per le richieste generali e altri gruppi target per le richieste per i microservizi dell'applicazione. È possibile utilizzare ogni gruppo di destinazioni con un solo sistema di bilanciamento del carico. Per ulteriori informazioni, consulta [Componenti di Application Load Balancer](introduction.md#application-load-balancer-components).

È possibile definire le impostazioni di controllo dello stato per il sistema di bilanciamento del carico per ciascun gruppo target. Ogni gruppo target utilizza le impostazioni di controllo dello stato predefinite, a meno che non vengano sostituite al momento della creazione del gruppo target o modificate in un secondo momento. Dopo aver specificato un gruppo target in una regola per un listener, il sistema di bilanciamento del carico monitora continuamente lo stato di tutti i target registrati con il gruppo target che si trovano in una zona di disponibilità abilitata per il sistema di bilanciamento del carico. Il sistema di bilanciamento del carico instrada le richieste ai target registrati con stato integro.

**Topics**
+ [Configurazione dell'instradamento](#target-group-routing-configuration)
+ [Target type (Tipo di destinazione)](#target-type)
+ [Tipo di indirizzo IP](#target-group-ip-address-type)
+ [Versione del protocollo](#target-group-protocol-version)
+ [Destinazioni registrate](#registered-targets)
+ [Target Optimizer](#target-optimizer)
+ [Attributi dei gruppi di destinazione](#target-group-attributes)
+ [Integrità del gruppo di destinazione](#target-group-health)
+ [Creazione di un gruppo target](create-target-group.md)
+ [Configurare i controlli sanitari](target-group-health-checks.md)
+ [Modifica gli attributi del gruppo target](edit-target-group-attributes.md)
+ [Registrazione di destinazioni](target-group-register-targets.md)
+ [Usa le funzioni Lambda come obiettivi](lambda-functions.md)
+ [Tagga un gruppo target](target-group-tags.md)
+ [Eliminazione di un gruppo target](delete-target-group.md)

## Configurazione dell'instradamento
<a name="target-group-routing-configuration"></a>

Per impostazione predefinita, un sistema di bilanciamento del carico instrada le richieste ai target utilizzando il protocollo e il numero di porta specificati al momento della creazione del gruppo target. In alternativa, è possibile sostituire la porta utilizzata per l'instradamento del traffico a un target al momento della registrazione con il gruppo target.

I gruppi di destinazioni supportano i seguenti protocolli e porte:
+ **Protocolli**: HTTP, HTTPS
+ **Porte**: 1-65535

Quando un gruppo target è configurato con il protocollo HTTPS o utilizza i controlli di integrità HTTPS, se un listener HTTPS utilizza una politica di sicurezza TLS 1.3, la politica di `ELBSecurityPolicy-TLS13-1-0-2021-06` sicurezza verrà utilizzata per le connessioni di destinazione. Altrimenti, viene utilizzata la politica `ELBSecurityPolicy-2016-08` di sicurezza. Il sistema di bilanciamento del carico stabilisce le connessioni TLS con le destinazioni utilizzando i certificati installati nelle destinazioni. Il sistema di bilanciamento del carico non convalida questi certificati. Pertanto, è possibile utilizzare certificati autofirmati o certificati scaduti. Poiché il sistema di bilanciamento del carico e le sue destinazioni si trovano in un cloud privato virtuale (VPC), il traffico tra il sistema di bilanciamento del carico e le destinazioni viene autenticato a livello di pacchetto, quindi non è a rischio man-in-the-middle di attacchi o spoofing anche se i certificati sulle destinazioni non sono validi. Il traffico in uscita non AWS avrà le stesse protezioni e potrebbero essere necessarie ulteriori misure per proteggere ulteriormente il traffico.

## Target type (Tipo di destinazione)
<a name="target-type"></a>

Quando si crea un gruppo di destinazioni, occorre specificare il relativo tipo, che determina il tipo di destinazione specificato al momento della registrazione delle destinazioni con tale gruppo di destinazioni. Dopo aver creato un gruppo di destinazione, non è possibile modificarne il tipo di destinazione.

I tipi di target possibili sono i seguenti:

`instance`  
I target vengono specificati in base all'ID istanza.

`ip`  
Le destinazioni sono indirizzi IP.

`lambda`  
La destinazione è una funzione Lambda.

Quando il tipo di target è `ip`, è possibile specificare gli indirizzi IP da uno dei blocchi CIDR seguenti:
+ Sottoreti del VPC per il gruppo target
+ 10.0.0.0/8 ([RFC 1918](https://tools.ietf.org/html/rfc1918))
+ 100.64.0.0/10 ([RFC 6598](https://tools.ietf.org/html/rfc6598))
+ 172.16.0.0/12 (RFC 1918)
+ 192.168.0.0/16 (RFC 1918)

**Importante**  
Non è possibile specificare indirizzi IP instradabili pubblicamente.

Tutti i blocchi CIDR consentono di registrare le seguenti destinazioni in un gruppo di destinazioni: 
+ Istanze in un VPC collegato in peering al VPC del sistema di bilanciamento del carico (nella stessa regione o in una regione diversa).
+ AWS risorse indirizzabili tramite indirizzo IP e porta (ad esempio database).
+ Risorse locali collegate AWS tramite Direct Connect o una Site-to-Site connessione VPN.

**Nota**  
Per gli Application Load Balancer distribuiti all'interno di una zona locale, gli `ip` di destinazione devono trovarsi nella stessa zona per ricevere traffico.  
Per ulteriori informazioni, consulta [What is AWS Local Zones?](https://docs.aws.amazon.com/local-zones/latest/ug/getting-started.html)

Se i target vengono specificati utilizzando un ID istanza, il traffico viene instradato alle istanze utilizzando l'indirizzo IP privato primario specificato nell'interfaccia di rete primaria per l'istanza. Se i target vengono specificati utilizzando gli indirizzi IP, è possibile instradare il traffico a un'istanza utilizzando qualsiasi indirizzo IP privato di una o più interfacce di rete. Ciò consente a più applicazioni in un'istanza di utilizzare la stessa porta. Ogni interfaccia di rete può avere il proprio gruppo di sicurezza.

Se il tipo di destinazione del gruppo è `lambda`, è possibile registrare una singola funzione Lambda. Quando riceve una richiesta per la funzione Lambda, il sistema di bilanciamento del carico chiama la funzione Lambda. Per ulteriori informazioni, consulta [Usa le funzioni Lambda come obiettivi di un Application Load Balancer](lambda-functions.md).

Puoi configurare Amazon Elastic Container Service (Amazon ECS) come destinazione dell'Application Load Balancer. Per ulteriori informazioni, consulta [Use an Application Load Balancer for Amazon ECS nella Amazon](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/alb.html) *Elastic Container Service* Developer Guide.

## Tipo di indirizzo IP
<a name="target-group-ip-address-type"></a>

Durante la creazione di un nuovo gruppo di destinazioni, è possibile seleziona il tipo di indirizzo IP del gruppo. In questo modo è possibile controllare la versione IP utilizzata per comunicare con le destinazioni e verificarne lo stato di integrità.

I gruppi target per i tuoi Application Load Balancer supportano i seguenti tipi di indirizzi IP:

**`ipv4`**  
Il load balancer comunica con i target utilizzando. IPv4

**`ipv6`**  
Il sistema di bilanciamento del carico comunica con i target utilizzando. IPv6

**Considerazioni**
+ Il sistema di bilanciamento del carico comunica con le destinazioni in base al tipo di indirizzo IP del gruppo di destinazioni. Le destinazioni di un gruppo IPv4 target devono accettare il IPv4 traffico proveniente dal sistema di bilanciamento del carico e le destinazioni di un gruppo IPv6 target devono accettare il IPv6 traffico proveniente dal sistema di bilanciamento del carico.
+ Non è possibile utilizzare un gruppo IPv6 target con un sistema di bilanciamento del `ipv4` carico.
+ Non è possibile registrare una funzione Lambda con un gruppo IPv6 target.

## Versione del protocollo
<a name="target-group-protocol-version"></a>

Per impostazione predefinita, gli Application Load Balancer inviano richieste alle destinazioni utilizzando HTTP/1.1. È possibile utilizzare la versione del protocollo per inviare richieste alle destinazioni utilizzando HTTP/2 o gRPC.

La tabella seguente riassume il risultato per le combinazioni di protocollo della richiesta e versione del protocollo del gruppo di destinazioni.


| Protocollo della richiesta | Versione del protocollo | Risultato | 
| --- | --- | --- | 
| HTTP/1.1 | HTTP/1.1 | Riuscito | 
| HTTP/2 | HTTP/1.1 | Riuscito | 
| gRPC | HTTP/1.1 | Errore | 
| HTTP/1.1 | HTTP/2 | Errore | 
| HTTP/2 | HTTP/2 | Completato | 
| gRPC | HTTP/2 | Riuscito se le destinazioni supportano gRPC | 
| HTTP/1.1 | gRPC | Errore | 
| HTTP/2 | gRPC | Riuscito se la richiesta è POST | 
| gRPC | gRPC | Completato | 

**Considerazioni sulla versione del protocollo gRPC**
+ L'unico protocollo dell'ascoltatore supportato è HTTPS.
+ L'unico tipo di operazione supportato per le regole dell'ascoltatore è `forward`.
+ Gli unici tipi di istanza supportati sono `instance` e `ip`.
+ Il sistema di bilanciamento del carico analizza le richieste gRPC e instrada le chiamate gRPC ai gruppi di destinazioni appropriati in base al pacchetto, al servizio e al metodo.
+ Il sistema di bilanciamento del carico supporta lo streaming unario lato client, lo streaming lato server e lo streaming bidirezionale.
+ È necessario fornire un metodo di controllo dell'integrità personalizzato con il formato `/package.service/method`.
+ È necessario specificare i codici di stato gRPC da utilizzare durante la verifica di una risposta positiva ricevuta da una destinazione.
+ Non puoi usare le funzioni Lambda come obiettivi.

**Considerazioni sulla versione del protocollo HTTP/2**
+ L'unico protocollo dell'ascoltatore supportato è HTTPS.
+ L'unico tipo di operazione supportato per le regole dell'ascoltatore è `forward`.
+ Gli unici tipi di istanza supportati sono `instance` e `ip`.
+ Il sistema di bilanciamento del carico supporta lo streaming unario lato client, lo streaming lato server e lo streaming bidirezionale. Il numero massimo di stream per connessione HTTP/2 client è 128.

## Destinazioni registrate
<a name="registered-targets"></a>

Il sistema di bilanciamento del carico funge da singolo punto di contatto per i client e distribuisce il traffico in entrata tra i target registrati con stato integro. È possibile registrare ogni target con uno o più gruppi target.

Se il carico di richieste per l'applicazione aumenta, puoi registrare target aggiuntivi con uno o più gruppi target al fine di gestire le richieste. Il load balancer inizia a indirizzare il traffico verso una destinazione appena registrata non appena il processo di registrazione viene completato e la destinazione supera il primo controllo di integrità iniziale, indipendentemente dalla soglia configurata.

Se il carico di richieste per l'applicazione diminuisce o devi eseguire la manutenzione dei target, puoi annullare la loro registrazione dai gruppi target. L'annullamento della registrazione di un target rimuove il target dal gruppo target, ma non influisce in altro modo sul target stesso. Il sistema di bilanciamento del carico arresta l'instradamento delle richieste a una destinazione non appena la sua registrazione viene annullata. Il target passa allo stato `draining` fino a quando non vengono completate le richieste in transito. Puoi registrare di nuovo la destinazione con il gruppo di destinazioni quando è possibile riprendere la ricezione delle richieste.

Se stai eseguendo la registrazione dei target in base all'ID istanza, puoi utilizzare il sistema di bilanciamento del carico con un gruppo con dimensionamento automatico. Dopo aver collegato un gruppo di destinazioni a un gruppo con dimensionamento automatico, il dimensionamento automatico registra automaticamente le destinazioni nel gruppo di destinazioni al momento dell'avvio. Per maggiori informazioni, consulta [Attaching a load balancer to your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/attach-load-balancer-asg.html) nella *Guida per l'utente di Dimensionamento automatico Amazon EC2*.

**Limits**
+ Non è possibile registrare gli indirizzi IP di un altro Application Load Balancer nello stesso VPC. Se l'altro Application Load Balancer si trova in un VPC in peering al VPC del sistema di bilanciamento del carico, è possibile registrarne gli indirizzi IP.
+ Non puoi registrare le istanze in base all'ID dell'istanza se si trovano in un VPC collegato al VPC del sistema di bilanciamento del carico (stessa regione o regione diversa). È possibile registrare queste istanze in base all'indirizzo IP.

## Target Optimizer
<a name="target-optimizer"></a>

 È possibile abilitare Target Optimizer su un gruppo target. Target Optimizer consente di applicare con precisione un numero massimo di richieste simultanee su una destinazione. Funziona con l'aiuto di un agente che puoi installare e configurare sulle destinazioni. Per abilitare l'ottimizzatore delle destinazioni, è necessario specificare una porta di controllo della destinazione per il gruppo di destinazione. Questa porta viene utilizzata per la gestione del traffico tra gli agenti e il sistema di bilanciamento del carico. L'ottimizzatore di Target può essere abilitato solo durante la creazione del gruppo target. La porta di controllo di Target, una volta specificata, non può essere modificata. Per ulteriori informazioni, consulta [Target Optimizer](target-group-register-targets.md#register-targets-target-optimizer). 

## Attributi dei gruppi di destinazione
<a name="target-group-attributes"></a>

È possibile configurare un gruppo target modificandone gli attributi. Per ulteriori informazioni, consulta [Modifica gli attributi del gruppo target](edit-target-group-attributes.md).

I seguenti attributi del gruppo di destinazioni sono supportati se il tipo di gruppo di destinazioni è `instance` o `ip`:

`deregistration_delay.timeout_seconds`  
Il tempo che Elastic Load Balancing deve aspettare prima di annullare la registrazione di una destinazione. L'intervallo è compreso tra 0 e 3600 secondi. Il valore predefinito è 300 secondi.

`load_balancing.algorithm.type`  
L'algoritmo di routing determina il modo in cui il load balancer seleziona gli obiettivi durante l'instradamento delle richieste. Il valore è`round_robin`, o. `least_outstanding_requests` `weighted_random` Il valore predefinito è `round_robin`.

`load_balancing.algorithm.anomaly_mitigation`  
Disponibile solo quando lo `load_balancing.algorithm.type` è`weighted_random`. Indica se la mitigazione delle anomalie è abilitata. Il valore è `on` o `off`. Il valore predefinito è `off`.

`load_balancing.cross_zone.enabled`  
Indica se è abilitato il bilanciamento del carico tra le zone. Il valore è `true`, `false` o `use_load_balancer_configuration`. Il valore predefinito è `use_load_balancer_configuration`.

`slow_start.duration_seconds`  
L'intervallo di tempo in secondi durante il quale il sistema di bilanciamento del carico invia a una destinazione appena registrata una quantità di traffico in aumento lineare verso il gruppo di destinazioni. L'intervallo è compreso tra 30 e 900 secondi (15 minuti). L'impostazione predefinita è 0 secondi (disattivata).

`stickiness.enabled`  
Indica se le sticky session sono abilitate. Il valore è `true` o `false`. Il valore predefinito è `false`.

`stickiness.app_cookie.cookie_name`  
Il nome del cookie dell'applicazione. Il nome del cookie dell'applicazione non può avere i seguenti prefissi:`AWSALB`,`AWSALBAPP`, oppure`AWSALBTG`; sono riservati all'uso da parte del load balancer.

`stickiness.app_cookie.duration_seconds`  
Il periodo di scadenza dei cookie basati sull'applicazione, in secondi. Al termine di questo periodo, il cookie è considerato obsoleto. Il valore minimo è 1 secondo e il valore massimo è 7 giorni (604800 secondi). Il valore predefinito è 1 giorno (86400 secondi).

`stickiness.lb_cookie.duration_seconds`  
Il periodo di scadenza dei cookie basati sulla durata, in secondi. Al termine di questo periodo, il cookie è considerato obsoleto. Il valore minimo è 1 secondo e il valore massimo è 7 giorni (604800 secondi). Il valore predefinito è 1 giorno (86400 secondi).

`stickiness.type`  
Il tipo di persistenza. I valori possibili sono `lb_cookie` e `app_cookie`.

`target_group_health.dns_failover.minimum_healthy_targets.count`  
Il numero minimo di destinazioni che devono essere integre. Se il numero di destinazioni integre è inferiore a questo valore, contrassegna il nodo come non integro nel DNS, in modo che il traffico venga indirizzato solo verso nodi integri. I valori possibili sono `off` o un numero intero compreso tra 1 e il numero massimo di destinazioni. Quando `off` il DNS fail away è disabilitato, il che significa che anche se tutte le destinazioni del gruppo di destinazione non sono integre, il nodo non viene rimosso dal DNS. Il valore di default è 1.

`target_group_health.dns_failover.minimum_healthy_targets.percentage`  
La percentuale minima di destinazioni che devono essere integre. Se la percentuale di destinazioni integre è inferiore a questo valore, contrassegna il nodo come non integro nel DNS, in modo che il traffico venga indirizzato solo verso nodi integri. I valori possibili sono `off` o un numero intero compreso tra 1 e 100. Quando `off` il DNS fail away è disabilitato, il che significa che anche se tutte le destinazioni del gruppo di destinazione non sono integre, il nodo non viene rimosso dal DNS. Il valore predefinito è `off`.

`target_group_health.unhealthy_state_routing.minimum_healthy_targets.count`  
Il numero minimo di destinazioni che devono essere integre. Se il numero di destinazioni integre è inferiore a questo valore, invia il traffico a tutte le destinazioni, incluse le destinazioni non integre. L'intervallo è compreso tra 1 e il numero massimo di destinazioni. Il valore di default è 1.

`target_group_health.unhealthy_state_routing.minimum_healthy_targets.percentage`  
La percentuale minima di destinazioni che devono essere integre. Se la percentuale di destinazioni integre è inferiore a questo valore, invia il traffico a tutte le destinazioni, incluse le destinazioni non integre. I valori possibili sono `off` o un numero intero compreso tra 1 e 100. Il valore predefinito è `off`.

Il seguente attributo del gruppo di destinazioni è supportato se il tipo di gruppo di destinazioni è `lambda`:

`lambda.multi_value_headers.enabled`  
Indica se le intestazioni di richieste e risposte scambiate tra il sistema di bilanciamento del carico e la funzione Lambda includono array di valori o stringhe. I valori possibili sono `true` o `false`. Il valore predefinito è `false`. Per ulteriori informazioni, consulta [Intestazioni con più valori](lambda-functions.md#multi-value-headers).

## Integrità del gruppo di destinazione
<a name="target-group-health"></a>

Per impostazione predefinita, un gruppo di destinazioni è considerato integro purché contenga almeno una destinazione integra. Se disponi di un parco istanze di grandi dimensioni, non è sufficiente avere una sola destinazione integra per la distribuzione del traffico. Al contrario, è possibile specificare un numero o percentuale minimi di destinazioni che devono essere integre e quali operazioni svolge il sistema di bilanciamento del carico quando le destinazioni integre scendono al di sotto della soglia specificata. Ciò migliora la disponibilità dell'applicazione.

**Topics**
+ [Operazioni per lo stato di non integrità](#unhealthy-state-actions)
+ [Requisiti e considerazioni](#target-group-health-considerations)
+ [Monitoraggio](#target-group-health-monitoring)
+ [Esempio](#target-group-health-examples)
+ [Utilizzo del failover DNS Route 53 per il sistema di bilanciamento del carico](#r53-dns-failover)

### Operazioni per lo stato di non integrità
<a name="unhealthy-state-actions"></a>

È possibile configurare soglie di integrità per le seguenti operazioni:
+ **Failover DNS**: quando gli obiettivi integri in una zona scendono al di sotto della soglia, nel DNS contrassegniamo gli indirizzi IP del nodo di bilanciamento del carico relativo alla zona come non integri. Pertanto, quando i client risolvono il nome DNS del sistema di bilanciamento del carico, il traffico viene instradato solo nelle zone integre.
+ **Failover di routing**: quando gli obiettivi integri in una zona scendono al di sotto della soglia, il load balancer invia il traffico a tutte le destinazioni disponibili per il nodo di bilanciamento del carico, comprese le destinazioni non integre. In questo modo si aumentano le possibilità di successo di una connessione client, soprattutto quando le destinazioni non superano temporaneamente i controlli dell'integrità, e si riduce il rischio di sovraccaricare le destinazioni integre.

### Requisiti e considerazioni
<a name="target-group-health-considerations"></a>
+ Se abiliti l'ottimizzatore di destinazione sul gruppo di destinazione, ti consigliamo di impostare la porta per il controllo dello stato del gruppo di destinazione in modo che sia la stessa porta in TARGET\$1CONTROL\$1DATA\$1ADDRESS. Ciò garantisce che il target non superi i controlli di integrità se l'agente non è integro. Per ulteriori informazioni, consulta [Target Optimizer](target-group-register-targets.md#register-targets-target-optimizer).
+ Non è possibile utilizzare questa funzionalità con i gruppi di destinazioni quando la destinazione è una funzione Lambda. Se l'Application Load Balancer è la destinazione di un Network Load Balancer o Global Accelerator, non configurare una soglia per il failover DNS.
+ Se per un'operazione vengono specificati entrambi i tipi di soglia (numero e percentuale), il sistema di bilanciamento del carico esegue l'operazione quando viene superata una delle due soglie.
+ Se viene specificata una soglia per entrambe le operazioni, la soglia per il failover DNS dev'essere maggiore o uguale alla soglia per il failover di instradamento, in modo che il failover DNS si verifichi insieme o prima rispetto al failover di instradamento.
+ Se la soglia viene specificata in percentuale, il valore viene calcolato in modo dinamico, sulla base del numero totale di destinazioni registrato nei gruppi di destinazioni.
+ Il numero totale di destinazioni si basa sull'attivazione o meno del bilanciamento del carico tra zone. Se il bilanciamento del carico tra zone è disattivato, ogni nodo invia il traffico solo alle destinazioni nella propria zona, il che significa che le soglie vengono applicate separatamente al numero di destinazioni in ogni zona abilitata. Se il bilanciamento del carico tra zone è attivato, ogni nodo invia il traffico a tutte le destinazioni in tutte le zone abilitate, il che significa che le soglie specificate vengono applicate al numero totale di destinazioni in tutte le zone abilitate. Per ulteriori informazioni, consulta [Bilanciamento del carico tra zone](edit-target-group-attributes.md#modify-cross-zone).
+ Quando si verifica il failover DNS, influisce su tutti i gruppi target associati al sistema di bilanciamento del carico. È necessario assicurarsi di disporre di capacità sufficiente nelle zone rimanenti per gestire il traffico aggiuntivo, soprattutto se il bilanciamento del carico tra zone è disattivato.
+ Con il failover DNS, rimuoviamo gli indirizzi IP delle zone non integre dal nome host DNS del load balancer. Tuttavia, la cache DNS del client locale potrebbe contenere questi indirizzi IP fino alla scadenza del time-to-live (TTL) nel record DNS (60 secondi).
+ Con il failover DNS, se ci sono più gruppi target collegati a un Application Load Balancer e un gruppo target non è integro in una zona, i controlli di integrità del DNS hanno esito positivo se almeno un altro gruppo target è integro in quella zona.
+ Con il failover DNS, se tutte le zone del sistema di bilanciamento del carico sono considerate non integre, il sistema invia il traffico a tutte le zone, comprese quelle non integre.
+ Oltre alla presenza di destinazioni integre sufficienti, vi sono altri fattori che possono portare al failover DNS, come l'integrità della zona.

### Monitoraggio
<a name="target-group-health-monitoring"></a>

Per monitorare lo stato dei gruppi target, consulta le [CloudWatch metriche](load-balancer-cloudwatch-metrics.md#target-group-health-metric-table) relative allo stato del gruppo target.

### Esempio
<a name="target-group-health-examples"></a>

L'esempio seguente illustra come vengono applicate le impostazioni di integrità del gruppo di destinazioni.

**Scenario**
+ Un sistema di bilanciamento del carico che supporta le due zone di disponibilità A e B
+ Ogni zona di disponibilità contiene 10 destinazioni registrate
+ Il gruppo di destinazioni dispone delle seguenti impostazioni di integrità del gruppo di destinazioni:
  + Failover DNS: 50%
  + Failover di instradamento: 50%
+ Nella zona di disponibilità B non superano i controlli

![\[Un sistema di bilanciamento del carico abilitato per due zone. AZ A ha 10 obiettivi sani e AZ B ha 4 obiettivi sani e 6 obiettivi malsani.\]](http://docs.aws.amazon.com/it_it/elasticloadbalancing/latest/application/images/tg-health-example.png)


**Se il bilanciamento del carico tra zone è disattivato**
+ Il nodo del sistema di bilanciamento del carico in ogni zona di disponibilità può inviare il traffico solo alle 10 destinazioni presenti nella propria zona.
+ Nella zona di disponibilità A sono presenti 10 destinazioni integre, che soddisfano la percentuale richiesta di destinazioni integre. Il sistema di bilanciamento del carico continua a distribuire il traffico nelle 10 destinazioni integre.
+ Nella zona di disponibilità B sono presenti solo 4 zone integre, che rappresentano solo il 40% delle destinazioni per il nodo del sistema di bilanciamento del carico presente in tale zona. Dato che questa percentuale è inferiore a quella di destinazioni integre richiesta, il sistema di bilanciamento del carico esegue le seguenti operazioni:
  + Failover DNS: la zona di disponibilità B viene contrassegnata come non integra nel DNS. Dato che i client non possono risolvere il nome del sistema di bilanciamento del carico per ricavare il nodo del sistema nella zona di disponibilità B e la zona di disponibilità A è integra, i client inviano le nuove connessioni alla zona di disponibilità A.
  + Failover di instradamento: quando vengono inviate nuove connessioni esplicitamente alla zona di disponibilità B, il sistema di bilanciamento del carico distribuisce il traffico a tutte le destinazioni nella zona di disponibilità B, comprese quelle non integre. In questo modo si evitano interruzioni nelle destinazioni integre rimanenti.

**Se il bilanciamento del carico tra zone è attivato**
+ Ogni nodo del sistema di bilanciamento del carico può inviare il traffico a tutte le 20 destinazioni registrate in entrambe le zone di disponibilità.
+ Sono presenti 10 destinazioni integre nella zona di disponibilità A e 4 nella zona di disponibilità B, per un totale di 14 destinazioni integre. Si tratta del 70% delle destinazioni dei nodi del sistema di bilanciamento del carico in entrambe le zone di disponibilità, una percentuale di destinazioni integre che soddisfa quella richiesta.
+ Il sistema di bilanciamento del carico distribuisce il traffico nelle 14 destinazioni integre in entrambe le zone di disponibilità.

### Utilizzo del failover DNS Route 53 per il sistema di bilanciamento del carico
<a name="r53-dns-failover"></a>

Se utilizzi Route 53 per il routing delle query DNS al bilanciamento del carico, puoi anche configurare il failover DNS per il load balancer utilizzando Route 53. In una configurazione di failover, Route 53 controlla l'integrità delle destinazioni del gruppo di destinazioni registrate per il sistema di bilanciamento del carico per determinare se siano disponibili. Se non sono disponibili destinazioni integre registrate per il sistema di bilanciamento del carico, o se il sistema di bilanciamento del carico stesso non è integro, Route 53 esegue il routing del traffico a un'altra risorsa disponibile, come un sistema di bilanciamento del carico integro o un sito web statico in Amazon S3.

Ad esempio, supponiamo che tu disponga di un'applicazione web per `www.example.com` e che desideri istanze ridondanti in esecuzione dietro due bilanciatori del carico che risiedono in regioni diverse. Desideri che il routing del traffico avvenga principalmente verso il load balancer in una regione e vuoi utilizzare il bilanciamento del carico nell'altra regione come backup durante i guasti. Se configuri un failover di DNS, puoi specificare i bilanciatori del carico principale e secondario (backup). Route 53 indirizza il traffico verso il bilanciamento del carico principale, se è disponibile, in caso contrario, al load balancer secondario.

**Come funziona Value Target Health**
+ Se la valutazione dello stato dell'obiettivo è impostata `Yes` su un record di alias per un Application Load Balancer, Route 53 valuta lo stato della risorsa specificata dal valore. `alias target` Route 53 utilizza i controlli di integrità del gruppo target.
+ Se tutti i gruppi target collegati a un Application Load Balancer sono integri, Route 53 contrassegna il record di alias come integro. Se hai configurato una soglia per un gruppo target e questo raggiunge la soglia, supera i controlli di integrità. Altrimenti, se un gruppo target contiene almeno un bersaglio sano, supera i controlli sanitari. Se i controlli sanitari vengono superati, Route 53 restituisce i record in base alla politica di routing. Se viene utilizzata una politica di routing di failover, Route 53 restituisce il record principale.
+ Se uno dei gruppi target collegati a un Application Load Balancer non è integro, il record di alias non supera il controllo di integrità della Route 53 (fail-open). Se si utilizza assessment target health, la policy di routing di failover reindirizza il traffico verso la risorsa secondaria.
+ Se tutti i gruppi target collegati a un Application Load Balancer sono vuoti (nessun target), Route 53 considera il record non integro (fail-open). Se si utilizza assessment target health, la policy di routing di failover reindirizza il traffico verso la risorsa secondaria.

*Per ulteriori informazioni, consulta la sezione [Utilizzo delle soglie di integrità del gruppo target del sistema di bilanciamento del carico per migliorare la disponibilità](https://aws.amazon.com/blogs/networking-and-content-delivery/using-load-balancer-target-group-health-thresholds-to-improve-availability/) nel AWS blog e [Configurazione del failover DNS nella](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-configuring.html) Amazon Route 53 Developer Guide.*

# Crea un gruppo target per il tuo Application Load Balancer
<a name="create-target-group"></a>

Puoi registrare le destinazioni con un gruppo di destinazioni. Per impostazione predefinita, il sistema di bilanciamento del carico invia le richieste ai target registrati utilizzando la porta e il protocollo specificati per il gruppo target. È possibile sostituire questa porta al momento della registrazione di ogni target con il gruppo target.

Dopo la creazione di un gruppo target, è possibile aggiungere tag.

Per instradare il traffico verso le destinazioni in un gruppo, specifica il gruppo in un'operazione al momento della creazione di un listener oppure crea una regola per il listener. Per ulteriori informazioni, consulta [Regole dell'ascoltatore per Application Load Balancer](listener-rules.md). È possibile specificare lo stesso gruppo di destinazioni in più ascoltatori, che però devono appartenere allo stesso Application Load Balancer. Per utilizzare un gruppo di destinazioni con un sistema di bilanciamento del carico, è necessario verificare che tale gruppo non sia utilizzato da un ascoltatore per nessun altro sistema di bilanciamento del carico.

È possibile aggiungere o rimuovere target dal gruppo target in qualsiasi momento. Per ulteriori informazioni, consulta [Registra gli obiettivi con il tuo gruppo target di Application Load Balancer](target-group-register-targets.md). È anche possibile modificare le impostazioni di controllo dello stato per il gruppo target. Per ulteriori informazioni, consulta [Aggiornare le impostazioni del controllo dello stato di un gruppo target di Application Load Balancer](modify-health-check-settings.md).

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

**Per creare un gruppo di destinazione**

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

1. Nel pannello di navigazione, in **Load balancing** (Bilanciamento del carico) scegli **Target Groups** (Gruppi di destinazione).

1. Scegliere **Crea gruppo target**.

1. In **Scegli tipo di target**, seleziona **Istanze** per registrare le destinazioni per ID istanza, **Indirizzi IP** per registrare le destinazioni per indirizzo IP o **Funzione Lambda** per registrare una funzione Lambda come destinazione.

1. Per **Nome gruppo di destinazioni** digitare un nome per il gruppo di destinazioni. Questo nome deve essere unico per Regione per ogni account, può avere un massimo di 32 caratteri, deve contenere solo caratteri alfanumerici o trattini e non deve iniziare o terminare con un trattino.

1. (Facoltativo) Per **Protocollo** e **Porta**, modificare i valori predefiniti come necessario.

1. Se il tipo di destinazione è **Istanze** o **indirizzi IP**, scegli **IPv4**o **IPv6**come **tipo di indirizzo IP**, altrimenti vai al passaggio successivo.

   Tieni presente che in questo gruppo di destinazioni possono essere incluse solo le destinazioni che hanno il tipo di indirizzo IP selezionato. Il tipo di indirizzo IP non può essere modificato dopo la creazione del gruppo di destinazione.

1. Per **VPC**, selezionare un cloud privato virtuale (VPC, Virtual Private Cloud). Tieni presente che per i tipi di destinazione **degli indirizzi IP**, i tipi di destinazione VPCs disponibili per la selezione sono quelli che supportano il **tipo di indirizzo IP** scelto nel passaggio precedente. 

1. (Facoltativo) Per **Versione del protocollo**, modifica i valori predefiniti secondo necessità. Per ulteriori informazioni, consulta [Versione del protocollo](load-balancer-target-groups.md#target-group-protocol-version).

1. (Facoltativo) Nella sezione **Controlli dell'integrità**, modifica le impostazioni predefinite in base alle esigenze. Per ulteriori informazioni, consulta [Impostazioni del controllo dello stato](target-group-health-checks.md#health-check-settings).

1. Se il tipo di destinazione è **Funzione Lambda**, puoi abilitare i controlli dell'integrità selezionando **Abilita** nella sezione **Controlli dell'integrità**.

1.  (Facoltativo) Per abilitare **Target Optimizer** sul gruppo di destinazione, specifica una porta di controllo di destinazione. La porta non può essere modificata dopo la creazione del gruppo target. Target Optimizer funziona con l'aiuto di un agente che si installa sulle destinazioni. Per ulteriori informazioni, consulta [Target Optimizer](target-group-register-targets.md#register-targets-target-optimizer). 

1. (Facoltativo) Aggiungere uno o più tag come illustrato di seguito:

   1. Espandere la sezione **Tag**.

   1. Selezionare **Aggiungi tag**.

   1. Immetti una chiave e un valore per il tag.

1. Scegli **Next (Successivo)**.

1. (Facoltativo) Aggiungere una o più destinazioni come illustrato di seguito:
   + Se il tipo di destinazione è **Istanze**, seleziona una o più istanze, inserisci una o più porte e in seguito scegli **Includi come in sospeso di seguito**.

     **Nota:** le istanze devono avere un IPv6 indirizzo principale assegnato per essere registrate presso un gruppo IPv6 target.
   + Se il tipo di destinazione è **Indirizzi IP**, procedere nel seguente modo:

     1. Seleziona un rete **VPC** dall'elenco oppure scegli **Altri indirizzi IP privati**.

     1. Inserisci manualmente l'indirizzo IP oppure trova l'indirizzo utilizzando i dettagli dell'istanza. È possibile inserire fino a cinque indirizzi IP alla volta.

     1. Inserire le porte per l'instradamento del traffico verso l'indirizzo IP specificato. 

     1. Seleziona **Includi come in sospeso di seguito**. 
   + Se il tipo di destinazione è una **Funzione Lambda**, specifica una singola funzione Lambda oppure salta questo passaggio e specificane uno in seguito.

1. Scegliere **Crea gruppo target**.

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

**Per creare un gruppo di destinazione**  
Utilizza il comando [create-target-group](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-target-group.html). L'esempio seguente crea un gruppo target con il protocollo HTTP, destinazioni registrate per indirizzo IP, un tag e impostazioni predefinite per il controllo dello stato.

```
aws elbv2 create-target-group \
    --name my-target-group \
    --protocol HTTP \
    --port 80 \
    --target-type ip \
    --vpc-id vpc-1234567890abcdef0 \
    --tags Key=department,Value=123
```

**Per registrare gli obiettivi**  
Utilizzate il comando [register-targets](https://docs.aws.amazon.com/cli/latest/reference/elbv2/register-targets.html) per registrare gli obiettivi con il gruppo target. Per alcuni esempi, consulta [Registrazione di destinazioni](target-group-register-targets.md#register-targets).

------
#### [ CloudFormation ]

**Per creare un gruppo di destinazione**  
Definite un tipo di risorsa. [AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html) L'esempio seguente crea un gruppo target con il protocollo HTTP, destinazioni registrate per indirizzo IP, un tag, impostazioni predefinite per il controllo dello stato e due destinazioni registrate.

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: HTTP
      Port: 80
      TargetType: ip
      VpcId: !Ref myVPC
      Tags: 
        - Key: 'department'
          Value: '123'
      Targets:
        - Id: 10.0.50.10
          Port: 80
        - Id: 10.0.50.20
          Port: 80
```

------

# Controlli di integrità per i gruppi target di Application Load Balancer
<a name="target-group-health-checks"></a>

L'Application Load Balancer invia periodicamente delle richieste alle destinazioni registrate per testare il loro stato. Questi test sono chiamati *controlli dello stato*.

Ogni nodo del sistema di bilanciamento del carico instrada le richieste solamente sui target integri all'interno delle zone di disponibilità abilitate per il sistema di bilanciamento del carico. Ogni nodo del sistema di bilanciamento del carico controlla lo stato dei target, utilizzando le impostazioni di controllo dello stato per i gruppi di target con i quali il target è registrato. Una volta che un target viene registrato, deve essere sottoposto a un controllo dello stato per essere considerato integro. Dopo il completamento di ciascun controllo dello stato, il nodo del sistema di bilanciamento del carico chiude la connessione definita per il controllo dello stato.

Se un gruppo di destinazione contiene solo destinazioni non integre registrate, il sistema di bilanciamento del carico instrada le richieste a tutte le destinazioni, a prescindere dal loro stato di integrità. Questo significa che tutte le destinazioni non superano i controlli dell'integrità allo stesso tempo in tutte le zone di disponibilità abilitate, nel sistema di bilanciamento del carico si verifica un fail open. L'effetto del fail-open è quello di consentire il traffico verso tutte le destinazioni in tutte le zone di disponibilità abilitate, a prescindere dal loro stato di integrità, sulla base dell'algoritmo del sistema di bilanciamento del carico.

I controlli sanitari non supportano WebSockets.

Per ulteriori informazioni, consulta [Integrità del gruppo di destinazione](load-balancer-target-groups.md#target-group-health).

Puoi utilizzare i log dei controlli di integrità per acquisire informazioni dettagliate sui controlli di integrità effettuati sugli obiettivi registrati per il tuo sistema di bilanciamento del carico e archiviarli come file di registro in Amazon S3. Puoi utilizzare questi log dei controlli sanitari per risolvere problemi con i tuoi obiettivi. Per ulteriori informazioni, consulta [Registri Health Check](load-balancer-health-check-logs.md).

**Topics**
+ [Impostazioni del controllo dello stato](#health-check-settings)
+ [Stato di integrità della destinazione](#target-health-states)
+ [Codici di motivo di controllo dello stato](#target-health-reason-codes)
+ [Controlla lo stato del bersaglio](check-target-health.md)
+ [Aggiornare le impostazioni del controllo dello stato](modify-health-check-settings.md)

## Impostazioni del controllo dello stato
<a name="health-check-settings"></a>

È possibile configurare controlli dell'integrità per le destinazioni all'interno di un gruppo di destinazioni come viene descritto nella tabella seguente. I nomi delle impostazioni utilizzati nella tabella sono i nomi usati nell'API. Il load balancer invia una richiesta di controllo dello stato di salute a ciascun target registrato ogni **HealthCheckIntervalSeconds**secondo, utilizzando la porta, il protocollo e il percorso di controllo dello stato specificati. Ogni richiesta di controllo dello stato è indipendente e il risultato dura per l'intero intervallo. Il tempo di risposta del target non influenza l'intervallo per la richiesta di controllo dello stato successiva. Se i controlli di integrità superano gli errori **UnhealthyThresholdCount**consecutivi, il load balancer mette fuori servizio l'obiettivo. Quando i controlli di integrità superano i successi **HealthyThresholdCount**consecutivi, il load balancer rimette in servizio l'obiettivo.

Tieni presente che quando annulli la registrazione di un obiettivo, questa diminuisce **HealthyHostCount**ma non aumenta. **UnhealthyHostCount**


| Impostazione | Description | 
| --- | --- | 
| **HealthCheckProtocol** |  Il protocollo utilizzato dal load balancer durante l'esecuzione dei controlli dello stato sui target. Per gli Application Load Balancer i protocolli possibili sono HTTP e HTTPS. L'impostazione predefinita è il protocollo HTTP. Questi protocolli utilizzano il metodo HTTP GET per inviare richieste di controllo dell'integrità.  | 
| **HealthCheckPort** |  La porta utilizzata dal load balancer durante l'esecuzione dei controlli dello stato sui target. L'impostazione predefinita è quella di utilizzare la porta sulla quale ciascun target riceve il traffico dal sistema di bilanciamento del carico.  | 
| **HealthCheckPath** |  La destinazione dei controlli dell'integrità sulle destinazioni. Se la versione del protocollo è HTTP/1.1 o HTTP/2, specificare un URI valido (/*path*?*query*). Il valore di default è /. Se la versione del protocollo è gRPC, specificare il percorso di un metodo personalizzato per il controllo dell'integrità con il formato `/package.service/method`. Il valore predefinito è `/AWS.ALB/healthcheck`.  | 
| **HealthCheckTimeoutSeconds** |  Il periodo di tempo, in secondi, durante il quale l'assenza di risposta da un target indica che un controllo dello stato non è riuscito. L'intervallo è compreso tra 2 e 120 secondi. L'impostazione predefinita è 5 secondi se il tipo di destinazione è `instance` oppure `ip` e 30 secondi se il tipo di destinazione è `lambda`.  | 
| **HealthCheckIntervalSeconds** |  Il periodo di tempo approssimativo, in secondi, tra i controlli dell'integrità di una singola destinazione. L'intervallo è compreso tra 5 e 300 secondi. L'impostazione predefinita è 30 secondi se il tipo di destinazione è `instance` oppure `ip` e 35 secondi se il tipo di destinazione è `lambda`.  | 
| **HealthyThresholdCount** |  Il numero di controlli dello stato andati a buon fine consecutivi necessari prima di considerare integro un target non integro. L'intervallo è compreso tra 2 e 10. Il predefinito è 5.  | 
| **UnhealthyThresholdCount** |  Numero di controlli dello stato consecutivi non andati a buon fine necessari prima di considerare un target non integro. L'intervallo è compreso tra 2 e 10. Il valore predefinito è 2.  | 
| **Matcher** |  I codici da utilizzare durante la verifica di una risposta con esito positivo ricevuta da una destinazione. Tali codici si chiamano **Codici di successo** nella console. Se la versione del protocollo è HTTP/1.1 o HTTP/2, i valori possibili sono compresi tra 200 e 499. Puoi specificare più valori (ad esempio "200,202") o un intervallo di valori (ad esempio "200-299"). Il valore predefinito è 200. Se la versione del protocollo è gRPC, i valori possibili sono compresi tra 0 e 99. Puoi specificare più valori (ad esempio "0,1") o un intervallo di valori (ad esempio "0-5"). Il valore predefinito è 12.  | 

## Stato di integrità della destinazione
<a name="target-health-states"></a>

Prima che il sistema di bilanciamento del carico invii una richiesta di controllo dello stato a un target, è necessario registrarlo con un gruppo target, specificare il gruppo target in una regola del listener e assicurarsi che la zona di disponibilità del target sia abilitata per il sistema di bilanciamento del carico. Prima che un target possa ricevere richieste dal sistema di bilanciamento del carico, deve superare i controlli dello stato iniziali. Una volta che il target ha superato i controlli dello stato iniziali, il suo stato è `Healthy`.

La tabella seguente descrive i valori possibili per lo stato di un target registrato.


| Valore | Description | 
| --- | --- | 
| `initial` |  È in corso il processo di registrazione del target o di esecuzione dei controlli dello stato iniziali del target da parte del sistema di bilanciamento del carico. Codici di motivo correlati: `Elb.RegistrationInProgress` \$1 `Elb.InitialHealthChecking`  | 
| `healthy` |  Il target è integro. Codici di motivo correlati: Nessuno  | 
| `unhealthy` |  Il target non ha risposto a un controllo di stato o il controllo dello stato non è andato a buon fine. Codici di motivo correlati: `Target.ResponseCodeMismatch` \$1 `Target.Timeout` \$1 `Target.FailedHealthChecks` \$1 `Elb.InternalError`  | 
| `unused` |  La destinazione non è registrata con un gruppo di destinazione, il gruppo di destinazione non è utilizzato in una regola del listener, la destinazione è in una zona di disponibilità non abilitata oppure è nello stato arrestato o terminato. Codici di motivo correlati: `Target.NotRegistered` \$1 `Target.NotInUse` \$1 `Target.InvalidState` \$1 `Target.IpUnusable`  | 
| `draining` |  Il target viene revocato e la connection draining è in corso. Codice di motivo correlato: `Target.DeregistrationInProgress`  | 
| `unavailable` |  I controlli dello stato sono disabilitati per il gruppo di destinazione. Codice di motivo correlato: `Target.HealthCheckDisabled`  | 

## Codici di motivo di controllo dello stato
<a name="target-health-reason-codes"></a>

Se lo stato di una destinazione è un valore diverso da `Healthy`, l'API restituisce un codice di motivo e una descrizione del problema e la console visualizza la stessa descrizione. I codici di motivo che iniziano con `Elb` vengono creati nella parte relativa al sistema di bilanciamento del carico e i codici di motivo che iniziano con `Target` vengono creati nella parte relativa ai target. Per ulteriori informazioni sulle possibili cause per cui un controllo dell'integrità non va a buon fine, consulta [Risoluzione dei problemi](load-balancer-troubleshooting.md#target-not-inservice).


| Codice di motivo | Description | 
| --- | --- | 
| `Elb.InitialHealthChecking` |  Controlli dello stato iniziali in corso  | 
| `Elb.InternalError` |  I controlli dello stato non andati a buon fine a causa di un errore interno  | 
| `Elb.RegistrationInProgress` |  La registrazione del target è in corso  | 
| `Target.DeregistrationInProgress` |  La revoca del target è in corso  | 
| `Target.FailedHealthChecks` |  Controlli dello stato non andati a buon fine  | 
| `Target.HealthCheckDisabled` |  I controlli dello stato sono disabilitati  | 
| `Target.InvalidState` |  La destinazione è in stato di arresto La destinazione è in stato terminato I target sono in stato di arresto o terminato Il target è in uno stato non valido  | 
| `Target.IpUnusable` |  L'indirizzo IP non può essere utilizzato come destinazione, poiché è in uso in un sistema di bilanciamento del carico.  | 
| `Target.NotInUse` |  Il gruppo target non è configurato per la ricezione del traffico dal sistema di bilanciamento del carico. Il target si trova in una zona di disponibilità che non è abilitata per il sistema di bilanciamento del carico  | 
| `Target.NotRegistered` |  Il target non è registrato nel gruppo target  | 
| `Target.ResponseCodeMismatch` |  I controlli dello stato non sono andati a buon fine con questi codici: [*codice*]  | 
| `Target.Timeout` |  Richiesta scaduta  | 

# Verifica lo stato dei tuoi obiettivi di Application Load Balancer
<a name="check-target-health"></a>

È possibile controllare lo stato dei target registrato con i gruppi target. Per informazioni sugli errori dei controlli di integrità, vedi [Risoluzione dei problemi: un obiettivo registrato non è in servizio](load-balancer-troubleshooting.md#target-not-inservice).

Puoi utilizzare i log dei controlli di integrità per acquisire informazioni dettagliate sui controlli di integrità effettuati sugli obiettivi registrati per il tuo sistema di bilanciamento del carico e archiviarli come file di registro in Amazon S3. Puoi utilizzare questi log dei controlli sanitari per risolvere problemi con i tuoi obiettivi. Per ulteriori informazioni, consulta [Registri Health Check](load-balancer-health-check-logs.md).

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

**Per verificare lo stato di salute dei tuoi bersagli**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per visualizzarne i dettagli.

1. La scheda **Dettagli** mostra il numero totale di bersagli, più il numero di bersagli per ogni stato di salute.

1. Nella scheda **Target**, la colonna **Stato** indica lo stato di ogni destinazione.

1. Se lo stato ha un valore diverso da `Healthy`, la colonna **Dettagli dello stato** contiene ulteriori informazioni.

**Per ricevere notifiche via e-mail su destinazioni non integre**  
Usa gli CloudWatch allarmi per attivare una funzione Lambda per inviare dettagli su obiettivi non sani. Per step-by-step istruzioni, consulta il seguente post sul blog: [Identificazione degli obiettivi non integri del sistema di bilanciamento del carico](https://aws.amazon.com/blogs/networking-and-content-delivery/identifying-unhealthy-targets-of-elastic-load-balancer/).

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

**Per verificare lo stato di salute dei tuoi obiettivi**  
Utilizza il comando [describe-target-health](https://docs.aws.amazon.com/cli/latest/reference/elbv2/describe-target-health.html). Questo esempio filtra l'output per includere solo gli obiettivi non integri. Per gli obiettivi non integri, l'output include un codice motivo.

```
aws elbv2 describe-target-health \
    --target-group-arn target-group-arn \
    --query "TargetHealthDescriptions[?TargetHealth.State!='healthy'].[Target.Id,TargetHealth.State,TargetHealth.Reason]" \
    --output table
```

Di seguito è riportato un output di esempio.

```
----------------------------------------------
|            DescribeTargetHealth            |
+--------------+---------+-------------------+
|  172.31.0.57 |  unused |  Target.NotInUse  |
|  172.31.0.50 |  unused |  Target.NotInUse  |
+--------------+---------+-------------------+
```

------

## Stati di destinazione e codici motivo
<a name="target-states-reason-codes"></a>

L'elenco seguente mostra i possibili codici motivo per ogni stato di destinazione.

**Lo stato di destinazione è healthy**  
Non viene fornito un codice motivo.

**Lo stato di destinazione è initial**  
+  `Elb.RegistrationInProgress`- La destinazione è in fase di registrazione presso il sistema di bilanciamento del carico.
+  `Elb.InitialHealthChecking`- Il load balancer sta ancora inviando all'obiettivo il numero minimo di controlli di integrità necessari per determinarne lo stato di salute.

**Lo stato di destinazione è unhealthy**  
+ `Target.ResponseCodeMismatch`- I controlli sanitari non hanno restituito il codice HTTP previsto.
+ `Target.Timeout`- Le richieste di controllo sanitario sono scadute.
+ `Target.FailedHealthChecks`- Il sistema di bilanciamento del carico ha ricevuto un errore durante lo stabilimento di una connessione alla destinazione o la risposta del target non era corretta.
+ `Elb.InternalError`- I controlli sanitari non sono riusciti a causa di un errore interno.

**Lo stato di destinazione è unused**  
+ `Target.NotRegistered`- L'obiettivo non è registrato presso il gruppo target.
+ `Target.NotInUse`- Il gruppo target non viene utilizzato da alcun sistema di bilanciamento del carico o il target si trova in una zona di disponibilità non abilitata per il relativo sistema di bilanciamento del carico.
+ `Target.InvalidState`- La destinazione è nello stato interrotto o terminato.
+ `Target.IpUnusable`- L'indirizzo IP di destinazione è riservato all'uso da parte di un sistema di bilanciamento del carico.

**Lo stato di destinazione è draining**  
+ `Target.DeregistrationInProgress`- L'obiettivo è in fase di cancellazione e il periodo di ritardo per l'annullamento non è scaduto.

**Lo stato di destinazione è unavailable**  
+ `Target.HealthCheckDisabled`- I controlli sanitari sono disattivati per il gruppo target.

# Aggiornare le impostazioni del controllo dello stato di un gruppo target di Application Load Balancer
<a name="modify-health-check-settings"></a>

Puoi aggiornare le impostazioni del controllo sanitario per il tuo gruppo target in qualsiasi momento. Per l'elenco delle impostazioni del controllo sanitario, vedere[Impostazioni del controllo dello stato](target-group-health-checks.md#health-check-settings).

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

**Per aggiornare le impostazioni del controllo sanitario**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per visualizzarne i dettagli.

1. Nella scheda **Controlli dello stato**, seleziona **Modifica**.

1. Nella pagina **Modifica le impostazioni del controllo sanitario**, modificare le impostazioni in base alle esigenze.

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

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

**Per aggiornare le impostazioni del controllo sanitario**  
Utilizza il comando [modify-target-group](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group.html). L'esempio seguente aggiorna le **HealthCheckTimeoutSeconds**impostazioni **HealthyThresholdCount**e.

```
aws elbv2 modify-target-group \
    --target-group-arn target-group-arn \
    --healthy-threshold-count 3 \
    --health-check-timeout-seconds 20
```

------
#### [ CloudFormation ]

**Per aggiornare le impostazioni del controllo sanitario**  
Aggiorna la [AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html)risorsa per includere le impostazioni aggiornate del controllo sanitario. L'esempio seguente aggiorna le **HealthCheckTimeoutSeconds**impostazioni **HealthyThresholdCount**and.

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: HTTP
      Port: 80
      TargetType: instance
      VpcId: !Ref myVPC
      HealthyThresholdCount: 3
      HealthCheckTimeoutSeconds: 20
```

------

# Modifica gli attributi del gruppo target per il tuo Application Load Balancer
<a name="edit-target-group-attributes"></a>

Dopo aver creato un gruppo target per l'Application Load Balancer, puoi modificarne gli attributi del gruppo target.

**Topics**
+ [Ritardo di annullamento della registrazione](#deregistration-delay)
+ [Algoritmo di instradamento](#modify-routing-algorithm)
+ [Modalità di avvio lento](#slow-start-mode)
+ [Impostazioni Health](#modify-target-group-health-settings)
+ [Bilanciamento del carico tra zone](#modify-cross-zone)
+ [Automatic Target Weights (ATW)](#automatic-target-weights)
+ [Sessioni permanenti](#sticky-sessions)

## Ritardo di annullamento della registrazione
<a name="deregistration-delay"></a>

Elastic Load Balancing smette di inviare le richieste alle destinazioni per le quali è in corso l'annullamento della registrazione. Per impostazione predefinita, Elastic Load Balancing attende 300 secondi prima di completare l'annullamento della registrazione, favorendo il completamento delle richieste in transito verso la destinazione. Per modificare il tempo di attesa di Elastic Load Balancing, aggiorna il valore di ritardo dell'annullamento della registrazione. 

Lo stato iniziale di un target di cui viene annullata la registrazione è `draining`. Allo scadere del tempo richiesto per l'annullamento della registrazione, tale processo viene completato e lo stato della destinazione diventa `unused`. Se fa parte di un gruppo con dimensionamento automatico, la destinazione può essere terminata e sostituita.

Se una destinazione la cui registrazione è in fase di annullamento non ha richieste in transito né connessioni attive, Elastic Load Balancing completa immediatamente il processo di annullamento senza attendere la scadenza del tempo previsto. Tuttavia, anche se l'annullamento della registrazione della destinazione è completato, lo stato della destinazione risulta `draining` fino allo scadere del timeout previsto per il completamento del processo. Dopo la scadenza del timeout, la destinazione passa allo stato `unused`.

Se una destinazione la cui registrazione è in fase di annullamento termina la connessione prima dello scadere del tempo previsto per il processo, il client riceve un errore di livello 500.

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

**Per aggiornare il valore del ritardo di annullamento della registrazione**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per aprire la relativa pagina dei dettagli.

1. Nella scheda **Attributi**, scegli **Modifica**.

1. **Nel riquadro di **gestione dell'annullamento della registrazione di Target**, inserisci un nuovo valore per Ritardo di annullamento della registrazione.**

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

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

**Per aggiornare il valore del ritardo di annullamento della registrazione**  
Utilizza il comando [modify-target-group-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html) con l’attributo `deregistration_delay.timeout_seconds`.

```
aws elbv2 modify-target-group-attributes \
    --target-group-arn target-group-arn \
    --attributes "Key=deregistration_delay.timeout_seconds,Value=60"
```

------
#### [ CloudFormation ]

**Per aggiornare il valore del ritardo di annullamento della registrazione**  
Aggiorna la [AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html)risorsa per includere l'attributo. `deregistration_delay.timeout_seconds`

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: HTTP
      Port: 80
      TargetType: ip
      VpcId: !Ref myVPC
      TargetGroupAttributes: 
        - Key: "deregistration_delay.timeout_seconds"
          Value: "60"
```

------

## Algoritmo di instradamento
<a name="modify-routing-algorithm"></a>

Un algoritmo di routing è un metodo utilizzato dal load balancer per determinare quali destinazioni riceveranno le richieste. L'algoritmo di routing **round robin** viene utilizzato di default per indirizzare le richieste a livello di gruppo target. In base alle esigenze dell'applicazione, sono disponibili anche **le richieste meno in sospeso** e gli algoritmi di routing **casuale ponderati**. Un gruppo target può avere solo un algoritmo di routing attivo alla volta, tuttavia l'algoritmo di routing può essere aggiornato ogni volta che è necessario.

Se abiliti le sessioni permanenti, l'algoritmo di routing selezionato viene utilizzato per la selezione iniziale del target. Le richieste future dello stesso client verranno inoltrate allo stesso target, ignorando l'algoritmo di routing selezionato. Se hai abilitato l'ottimizzatore del target, l'algoritmo di routing può essere solo round robin.

**Round robin**
+ L'algoritmo di routing round robin indirizza le richieste in modo uniforme tra gli obiettivi sani del gruppo target, in ordine sequenziale.
+ Questo algoritmo viene comunemente utilizzato quando le richieste ricevute hanno una complessità simile, le destinazioni registrate hanno capacità di elaborazione simili o se è necessario distribuire equamente le richieste tra le destinazioni. 

**Richieste meno rilevanti**
+ L'algoritmo di routing delle richieste con il minor numero di richieste in sospeso indirizza le richieste verso le destinazioni con il minor numero di richieste in corso.
+ Questo algoritmo viene comunemente utilizzato quando le richieste ricevute variano in complessità e le destinazioni registrate variano nella capacità di elaborazione.
+ Quando un sistema di bilanciamento del carico che supporta HTTP/2 utilizza obiettivi che supportano solo HTTP/1.1, converte la richiesta in più richieste HTTP/1.1. In questa configurazione, l'algoritmo di richieste meno in sospeso tratterà ogni richiesta HTTP/2 come richiesta multipla.
+ Durante l'utilizzo WebSockets, la destinazione viene selezionata utilizzando l'algoritmo delle richieste meno in sospeso. Dopo aver selezionato la destinazione, il load balancer crea una connessione alla destinazione e invia tutti i messaggi tramite questa connessione.
+ L'algoritmo di routing delle richieste meno in sospeso non può essere utilizzato con la modalità di avvio lento.

**Ponderato casualmente**
+ L'algoritmo di routing casuale ponderato indirizza le richieste in modo uniforme tra i target sani del gruppo target, in ordine casuale.
+ Questo algoritmo supporta la mitigazione delle anomalie Automatic Target Weights (ATW).
+ L'algoritmo di routing casuale ponderato non può essere utilizzato con la modalità di avvio lento.
+ L'algoritmo di routing casuale ponderato non può essere utilizzato con sessioni permanenti.

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

**Per aggiornare l'algoritmo di routing**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per aprire la relativa pagina dei dettagli.

1. Nella scheda **Attributi**, scegli **Modifica**.

1. **Nel riquadro di **configurazione del traffico**, per l'**algoritmo di bilanciamento del carico**, scegli **Round robin, Least** **Outstanding requests** o Weighted random.**

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

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

**Per aggiornare l'algoritmo di routing**  
Utilizza il comando [modify-target-group-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html) con l’attributo `load_balancing.algorithm.type`.

```
aws elbv2 modify-target-group-attributes \
    --target-group-arn target-group-arn \
    --attributes "Key=load_balancing.algorithm.type,Value=least_outstanding_requests"
```

------
#### [ CloudFormation ]

**Per aggiornare l'algoritmo di routing**  
Aggiorna la [AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html)risorsa per includere l'`load_balancing.algorithm.type`attributo.

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: HTTP
      Port: 80
      TargetType: ip
      VpcId: !Ref myVPC
      TargetGroupAttributes: 
        - Key: "load_balancing.algorithm.type"
          Value: "least_outstanding_requests"
```

------

## Modalità di avvio lento
<a name="slow-start-mode"></a>

Per impostazione predefinita, una destinazione inizia a ricevere la quantità completa di richieste non appena viene registrata con un gruppo di destinazioni e supera un controllo dello stato iniziale. Grazie alla modalità di avvio lento, le destinazioni hanno il tempo di prepararsi prima che il sistema di bilanciamento del carico invii loro una quantità completa di richieste.

Dopo aver abilitato l'avvio lento per un gruppo di destinazioni, le destinazioni entrano in modalità avvio lento quando vengono considerati integre dal gruppo di destinazioni. Una destinazione in modalità di avvio lento esce dalla modalità di avvio lento quando scade il periodo di durata dell'avvio lento configurato o se la destinazione diventa non integra. Il sistema di bilanciamento del carico aumenta in modo lineare il numero di richieste che è in grado di inviare a una destinazione nella modalità di avvio lento. Una volta che una destinazione integra è uscita dalla modalità di avvio lento, il sistema di bilanciamento del carico può inviarle una quantità completa di richieste.

**Considerazioni**
+ Quando abiliti la modalità di avvio lento per un gruppo di destinazioni, le destinazioni integre registrate con il gruppo non entrano in questa modalità.
+ Quando abiliti la modalità di avvio lento per un gruppo di destinazioni vuoto e quindi registri destinazioni con un'unica operazione, tali destinazioni non entrano in questa modalità. Le destinazioni appena registrate entrano nella modalità di avvio lento solo se è presente almeno una destinazione integra registrata che non si trova in questa modalità.
+ Se annulli la registrazione di una destinazione che si trova nella modalità di avvio lento, la destinazione esce da questa modalità. Se si registra di nuovo la stessa destinazione, essa entra in modalità di avvio lento quando viene considerata integra dal gruppo di destinazione.
+ Se una destinazione in modalità di avvio lento diventa non integra esce dalla modalità di avvio lento. Quando diventa integra, entra di nuovo in modalità di avvio lento.
+ Non è possibile abilitare la modalità di avvio lento quando si utilizzano le **richieste meno in sospeso** o gli algoritmi di routing **casuale ponderati**.

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

**Per aggiornare il valore della durata dell'avvio lento**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per aprire la relativa pagina dei dettagli.

1. Nella scheda **Attributi**, scegli **Modifica**.

1. Nel riquadro di **configurazione del traffico**, inserisci un nuovo valore per **Durata dell'avvio lento**. Per disabilitare la modalità di avvio lento, inserisci 0.

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

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

**Per aggiornare il valore della durata dell'avvio lento**  
Utilizza il comando [modify-target-group-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html) con l’attributo `slow_start.duration_seconds`.

```
aws elbv2 modify-target-group-attributes \
    --target-group-arn target-group-arn \
    --attributes "Key=slow_start.duration_seconds,Value=30"
```

------
#### [ CloudFormation ]

**Per aggiornare il valore della durata dell'avvio lento**  
Aggiorna la [AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html)risorsa per includere l'`slow_start.duration_seconds`attributo.

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: HTTP
      Port: 80
      TargetType: ip
      VpcId: !Ref myVPC
      TargetGroupAttributes: 
        - Key: "slow_start.duration_seconds"
          Value: "30"
```

------

## Impostazioni Health
<a name="modify-target-group-health-settings"></a>

Per impostazione predefinita, Application Load Balancer monitorano lo stato delle destinazioni e indirizzano le richieste verso destinazioni integre. Tuttavia, se il load balancer non ha un numero sufficiente di obiettivi integri, invia automaticamente il traffico a tutti i target registrati (fail open). È possibile modificare le impostazioni di integrità del gruppo target per definire le soglie per il failover DNS e il failover di routing. Per ulteriori informazioni, consulta [Integrità del gruppo di destinazione](load-balancer-target-groups.md#target-group-health).

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

**Per modificare le impostazioni di integrità del gruppo target**

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

1. Nel riquadro di navigazione, sotto **Bilanciamento del carico**, scegli **Gruppi di destinazioni**.

1. Scegli il nome del gruppo di destinazione per visualizzarne i dettagli.

1. Nella scheda **Attributi**, scegli **Modifica**.

1. Verifica se il bilanciamento del carico tra zone è attivato o disattivato. Aggiorna questa impostazione secondo necessità per garantire di disporre di sufficiente capacità per gestire il traffico aggiuntivo se una zona diventa non integra.

1. Espandi **Requisiti di integrità del gruppo di destinazioni**.

1. Per **Tipo di configurazione**, consigliamo di scegliere **Configurazione unificata**, che imposta la stessa soglia per entrambe le operazioni.

1. Per **Requisiti di stato di integrità**, procedi in uno dei seguenti modi:
   + Scegli **Numero minimo di destinazioni integre**, poi inserisci un numero da 1 al numero massimo di destinazioni del gruppo di destinazioni.
   + Scegli **Percentuale minima di destinazioni integre**, poi inserisci un numero da 1 a 100.

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

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

**Per modificare le impostazioni relative allo stato di salute del gruppo target**  
Utilizza il comando [modify-target-group-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html). L'esempio seguente illustra come impostare la soglia di integrità per entrambe le operazioni per gli stati di non integrità al 50%.

```
aws elbv2 modify-target-group-attributes \
    --target-group-arn target-group-arn \
    --attributes \
        "Key=target_group_health.dns_failover.minimum_healthy_targets.percentage,Value=50" \
        "Key=target_group_health.unhealthy_state_routing.minimum_healthy_targets.percentage,Value=50"
```

------
#### [ CloudFormation ]

**Per modificare le impostazioni relative allo stato di salute del gruppo target**  
Aggiorna la [AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html)risorsa. L'esempio seguente illustra come impostare la soglia di integrità per entrambe le operazioni per gli stati di non integrità al 50%.

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: HTTP
      Port: 80
      TargetType: ip
      VpcId: !Ref myVPC
      TargetGroupAttributes: 
        - Key: "target_group_health.dns_failover.minimum_healthy_targets.percentage"
          Value: "50"
        - Key: "target_group_health.unhealthy_state_routing.minimum_healthy_targets.percentage"
          Value: "50"
```

------

## Bilanciamento del carico tra zone
<a name="modify-cross-zone"></a>

I nodi del sistema di bilanciamento del carico distribuiscono le richieste dei client alle destinazioni registrate. Se il bilanciamento del carico tra zone è attivato, ogni nodo del sistema di bilanciamento del carico distribuisce il traffico tra le destinazioni registrate in tutte le zone di disponibilità registrate. Se il bilanciamento del carico tra zone è disattivato, ogni nodo del sistema di bilanciamento del carico distribuisce il traffico solo tra le destinazioni registrate nella propria zona di disponibilità. Questo potrebbe verificarsi se i domini con errori di zona vengono preferiti a quelli regionali, garantendo che una zona integra non venga influenzata da una zona non integra, oppure per ottenere miglioramenti di latenza generali.

Con gli Application Load Balancer, il bilanciamento del carico tra zone è sempre attivato a livello di sistema di bilanciamento del carico e non può essere disattivato. Per i gruppi di destinazioni, l'impostazione predefinita è l'utilizzo dell'impostazione del sistema di bilanciamento del carico, ma è possibile sovrascrivere tale impostazione disattivando esplicitamente il bilanciamento del carico tra zone a livello di gruppo di destinazioni.

**Considerazioni**
+ La persistenza della destinazione non è supportata quando il bilanciamento del carico tra zone è disattivato.
+ Le funzioni Lambda non sono supportate come destinazioni quando il bilanciamento del carico tra zone è disattivato.
+ Il tentativo di disattivazione del bilanciamento del carico tra zone tramite l'API `ModifyTargetGroupAttributes` restituisce un errore se una qualsiasi delle destinazioni ha il parametro `AvailabilityZone` impostato su `all`.
+ Durante la registrazione delle destinazioni, il parametro `AvailabilityZone` è obbligatorio. Valori specifici per le zone di disponibilità sono consentiti solo quando il bilanciamento del carico tra zone è disattivato. In caso contrario, il parametro viene ignorato e gestito come `all`.

**Best practice**
+ Pianificare una sufficiente capacità di destinazione in tutte le zone di disponibilità che si prevede di utilizzare, per gruppo di destinazioni. Se non è possibile pianificare una capacità sufficiente per tutte le zone di disponibilità partecipanti, consigliamo di mantenere attivo il bilanciamento del carico tra zone.
+ Quando si configura un Application Load Balancer con più gruppi di destinazioni, assicurarsi che tutti i gruppi di destinazioni partecipino nella stessa zona di disponibilità, all'interno della regione configurata. In questo modo si evita che la zona di disponibilità sia vuota quando il bilanciamento del carico tra zone è disattivato, il che provoca un errore 503 per tutte le richieste HTTP che entrano nella zona di disponibilità vuota.
+ Evitare di creare sottoreti vuote. Gli Application Load Balancer espongono gli indirizzi IP zonali tramite DNS per le sottoreti vuote, il che provoca errori 503 per le richieste HTTP.
+ In alcuni casi, un gruppo di destinazioni in cui il bilanciamento del carico è disattivato dispongono di capacità pianificata sufficiente per ogni zona di disponibilità, ma tutte le destinazioni in una zona di disponibilità diventano non integre. Quando è presente almeno un gruppo di destinazioni in cui tutte le destinazioni sono non integre, gli indirizzi IP del nodo del sistema di bilanciamento del carico vengono rimosse dal DNS. Una volta che il gruppo di destinazioni ha almeno una destinazione integra, gli indirizzi IP vengono ripristinate nel DNS.

### Disattivazione del bilanciamento del carico tra zone
<a name="cross_zone_console_disable"></a>

È possibile disattivare il bilanciamento del carico tra zone per i gruppi di destinazioni dell'Application Load Balancer in qualsiasi momento.

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

**Per disattivare il bilanciamento del carico tra zone**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per visualizzarne i dettagli.

1. Nella scheda **Attributi**, seleziona **Modifica**.

1. Nel riquadro di **configurazione della destinazione**, scegli **Disattiva** per il bilanciamento del carico **tra zone**.

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

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

**Per disattivare il bilanciamento del carico tra zone**  
Utilizzate il [modify-target-group-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html)comando e impostate l'`load_balancing.cross_zone.enabled`attributo su. `false`

```
aws elbv2 modify-target-group-attributes \
    --target-group-arn target-group-arn \
    --attributes "Key=load_balancing.cross_zone.enabled,Value=false"
```

------
#### [ CloudFormation ]

**Per disattivare il bilanciamento del carico tra zone**  
Aggiorna la [AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html)risorsa per includere l'`load_balancing.cross_zone.enabled`attributo.

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: HTTP
      Port: 80
      TargetType: ip
      VpcId: !Ref myVPC
      TargetGroupAttributes: 
        - Key: "load_balancing.cross_zone.enabled"
          Value: "false"
```

------

### Attivazione del bilanciamento del carico tra zone
<a name="cross_zone_console_enable"></a>

È possibile attivare il bilanciamento del carico tra zone per i gruppi di destinazioni dell'Application Load Balancer in qualsiasi momento. L'impostazione del bilanciamento del carico tra zone a livello di gruppo di destinazioni sovrascrive l'impostazione a livello di sistema di bilanciamento del carico.

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

**Per disattivare il bilanciamento del carico tra zone**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per visualizzarne i dettagli.

1. Nella scheda **Attributi**, seleziona **Modifica**.

1. Nel riquadro di **configurazione della destinazione**, scegli Attivato per **il bilanciamento del** carico **tra zone**.

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

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

**Per attivare il bilanciamento del carico tra zone**  
Utilizzate il [modify-target-group-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html)comando e impostate l'`load_balancing.cross_zone.enabled`attributo su. `true`

```
aws elbv2 modify-target-group-attributes \
    --target-group-arn target-group-arn \
    --attributes "Key=load_balancing.cross_zone.enabled,Value=true"
```

------
#### [ CloudFormation ]

**Per attivare il bilanciamento del carico tra zone**  
Aggiorna la [AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html)risorsa per includere l'`load_balancing.cross_zone.enabled`attributo.

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: HTTP
      Port: 80
      TargetType: ip
      VpcId: !Ref myVPC
      TargetGroupAttributes: 
        - Key: "load_balancing.cross_zone.enabled"
          Value: "true"
```

------

## Automatic Target Weights (ATW)
<a name="automatic-target-weights"></a>

Automatic Target Weights (ATW) monitora costantemente i target che eseguono le applicazioni, rilevando deviazioni significative delle prestazioni, note come anomalie. ATW offre la possibilità di regolare dinamicamente la quantità di traffico indirizzata verso gli obiettivi, attraverso il rilevamento delle anomalie dei dati in tempo reale.

Automatic Target Weights (ATW) esegue automaticamente il rilevamento delle anomalie su ogni Application Load Balancer del tuo account. Quando vengono identificati obiettivi anomali, ATW può tentare automaticamente di stabilizzarli riducendo la quantità di traffico che vengono instradati, operazione nota come mitigazione delle anomalie. ATW ottimizza continuamente la distribuzione del traffico per massimizzare le percentuali di successo per target e ridurre al minimo le percentuali di fallimento del gruppo target.

**Considerazioni:**
+ Il rilevamento delle anomalie attualmente monitora i codici di risposta HTTP 5xx provenienti dagli obiettivi e gli errori di connessione verso di essi. Il rilevamento delle anomalie è sempre attivo e non può essere disattivato.
+ ATW non è supportato quando si utilizza Lambda come destinazione.

**Contents**
+ [Rilevamento anomalie](#anomaly-detection)
+ [Attenuazione delle anomalie](#anomaly-mitigation)

### Rilevamento anomalie
<a name="anomaly-detection"></a>

Il rilevamento delle anomalie ATW monitora tutti gli obiettivi che mostrano una deviazione significativa nel comportamento rispetto agli altri bersagli del rispettivo gruppo target. Queste deviazioni, chiamate anomalie, vengono determinate confrontando la percentuale di errori di un obiettivo con la percentuale di errori di altri target del gruppo target. Questi errori possono essere sia errori di connessione che codici di errore HTTP. Gli obiettivi che riportano risultati significativamente più alti rispetto ai loro omologhi vengono quindi considerati anomali.

Il rilevamento delle anomalie richiede un minimo di tre obiettivi sani nel gruppo bersaglio. Quando un bersaglio è registrato in un gruppo target, deve superare i controlli di integrità prima di ricevere traffico. Dopo che il target inizia a ricevere traffico, ATW inizia a monitorarlo e pubblica continuamente il risultato dell'anomalia. Per gli obiettivi senza anomalie, il risultato dell'anomalia è. `normal` Per gli obiettivi con anomalie, il risultato dell'anomalia è. `anomalous`

Il rilevamento delle anomalie ATW funziona indipendentemente dai controlli sanitari del gruppo target. Un bersaglio può superare tutti i controlli sanitari del gruppo bersaglio, ma essere comunque contrassegnato come anomalo a causa di un elevato tasso di errore. Il fatto che i bersagli diventino anomali non influisce sullo stato dei controlli sanitari del gruppo bersaglio.

**Stato di rilevamento delle anomalie**

È possibile visualizzare lo stato attuale di rilevamento delle anomalie. Di seguito sono riportati i valori possibili:
+ `normal`— Non è stata rilevata alcuna anomalia.
+ `anomalous`— Sono state rilevate anomalie.

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

**Per visualizzare lo stato di rilevamento delle anomalie**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per visualizzarne i dettagli.

1. Scegliere la scheda **Destinazioni**.

1. All'interno della tabella **Obiettivi registrati**, la colonna dei **risultati del rilevamento delle anomalie** mostra lo stato di anomalia di ciascun obiettivo.

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

**Per visualizzare lo stato di rilevamento delle anomalie**  
Utilizza il comando [describe-target-health](https://docs.aws.amazon.com/cli/latest/reference/elbv2/describe-target-health.html). L'esempio seguente visualizza lo stato di ogni oggetto nel gruppo di destinazione specificato.

```
aws elbv2 describe-target-health \
    --target-group-arn target-group-arn \
    --include AnomalyDetection
```

------

### Attenuazione delle anomalie
<a name="anomaly-mitigation"></a>

La mitigazione delle anomalie ATW allontana automaticamente il traffico dagli obiettivi anomali, offrendo loro l'opportunità di riprendersi.

**Requisito**  
**La funzione di mitigazione delle anomalie di ATW è disponibile solo quando si utilizza l'algoritmo di routing casuale ponderato.**

**Durante la mitigazione:**
+ ATW regola periodicamente la quantità di traffico indirizzata verso obiettivi anomali. Attualmente, il periodo è ogni cinque secondi.
+ ATW riduce la quantità di traffico indirizzata verso obiettivi anomali alla quantità minima richiesta per eseguire la mitigazione delle anomalie.
+ Agli obiettivi che non vengono più rilevati come anomali verrà indirizzato gradualmente più traffico verso gli obiettivi, fino a raggiungere la parità con gli altri obiettivi normali del gruppo bersaglio.

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

**Per attivare la mitigazione delle anomalie**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per aprire la relativa pagina dei dettagli.

1. Nella scheda **Attributi**, scegli **Modifica**.

1. **Nel riquadro di **configurazione del traffico**, verifica che il valore selezionato per l'**algoritmo di bilanciamento del carico** sia Ponderato casualmente.**

   Quando l'algoritmo casuale ponderato è selezionato inizialmente, il rilevamento delle anomalie è attivo per impostazione predefinita.

1. In **Attenuazione delle anomalie, assicurati che sia selezionata l'opzione Attiva mitigazione** **delle anomalie**.

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

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

**Per attivare la mitigazione delle anomalie**  
Utilizza il comando [modify-target-group-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html) con l’attributo `load_balancing.algorithm.anomaly_mitigation`.

```
aws elbv2 
```

------

**Stato di mitigazione**

È possibile verificare se ATW sta eseguendo una mitigazione su un obiettivo. Di seguito sono riportati i valori possibili:
+ `yes`— La mitigazione è in corso.
+ `no`— La mitigazione non è in corso.

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

**Per visualizzare lo stato di mitigazione delle anomalie**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per visualizzarne i dettagli.

1. Scegliere la scheda **Destinazioni**.

1. Nella tabella **Obiettivi registrati**, è possibile visualizzare lo stato di mitigazione delle anomalie di ciascun obiettivo nella colonna **Mitigazione** in effetto.

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

**Per visualizzare lo stato di mitigazione delle anomalie**  
Utilizza il comando [describe-target-health](https://docs.aws.amazon.com/cli/latest/reference/elbv2/describe-target-health.html). L'esempio seguente visualizza lo stato di ogni oggetto nel gruppo di destinazione specificato.

```
aws elbv2 describe-target-health \
    --target-group-arn target-group-arn \
    --include AnomalyDetection
```

------

## Sessioni permanenti
<a name="sticky-sessions"></a>

Per impostazione predefinita, un Application Load Balancer instrada ogni richiesta in modo indipendente verso una destinazione registrata in base all'algoritmo di bilanciamento del carico scelto. Tuttavia, è possibile usare la funzionalità sessione permanente (nota anche come affinità di sessione), per consentire al sistema di bilanciamento del carico di associare una sessione utente a una destinazione specifica. Questo garantisce che durante la sessione tutte le richieste dell'utente vengano inviate alla stessa destinazione. Questa funzionalità è utile per i server che conservano le informazioni sullo stato per fornire un'esperienza continua ai client. Per usare le sessioni permanenti, i client devono supportare i cookie.

Gli Application Load Balancer supportano sia i cookie basati sulla durata che i cookie basati sull'applicazione. Le sessioni permanenti sono abilitate a livello di gruppo di destinazioni. È possibile utilizzare una combinazione di permanenza basata sulla durata, permanenza basata sull'applicazione e nessuna permanenza nei gruppi.

La chiave per la gestione delle sessioni permanenti consiste nel determinare per quanto tempo il sistema di bilanciamento del carico deve instradare costantemente la richiesta dell'utente verso la stessa destinazione. Se l'applicazione ha il proprio cookie di sessione, è possibile utilizzare la permanenza basata sull'applicazione e il cookie di sessione del sistema di bilanciamento del carico rispetta la durata specificata dal cookie di sessione dell'applicazione. Se l'applicazione non ha il proprio cookie di sessione, è possibile utilizzare la permanenza basata sulla durata per generare un cookie di sessione del sistema di bilanciamento del carico della durata specificata.

Il contenuto dei cookie generati dal sistema di bilanciamento del carico viene crittografato utilizzando una chiave di rotazione. Non è possibile decrittografare o modificare i cookie generati dal sistema di bilanciamento del carico. 

Per entrambi i tipi di permanenza, l'Application Load Balancer reimposta la scadenza dei cookie che genera dopo ogni richiesta. Se un cookie scade, la sessione non è più persistente e il client dovrebbe rimuovere il cookie dal rispettivo archivio.

**Requisiti**
+ Un HTTP/HTTPS sistema di bilanciamento del carico.
+ Almeno un'istanza integra in ciascuna zona di disponibilità.

**Considerazioni**
+ Le sessioni permanenti non sono supportate se il [bilanciamento del carico tra zone è disabilitato](#modify-cross-zone). I tentativi di abilitare sessioni permanenti mentre il bilanciamento del carico tra zone è disabilitato hanno esito negativo.
+ Per i cookie basati sulle applicazioni, i nomi dei cookie devono essere specificati individualmente per ogni gruppo di destinazioni. Al contrario, per i cookie basati sulla durata, `AWSALB` è l'unico nome utilizzato in tutti i gruppi di destinazioni.
+ Se si utilizzano più livelli per gli Application Load Balancer, è possibile abilitare le sessioni permanenti in tutti i livelli con i cookie basati sull'applicazione. Al contrario, con i cookie basati sulla durata, è possibile abilitare le sessioni permanenti solo in un livello, poiché `AWSALB` è l'unico nome disponibile.
+ Se l'Application Load Balancer riceve sia un `AWSALBCORS` cookie di permanenza che uno `AWSALB` basato sulla durata, il valore inserito avrà la precedenza. `AWSALBCORS`
+ La permanenza basata sull'applicazione non funziona con i gruppi di destinazioni ponderati.
+ Se si dispone di un'[operazione di inoltro](rule-action-types.md#forward-actions) con più gruppi di destinazioni e le sessioni permanenti sono abilitate per uno o più gruppi di destinazioni, è necessario abilitare la persistenza a livello di gruppo di destinazioni.
+ WebSocket le connessioni sono intrinsecamente persistenti. Se il client richiede un aggiornamento della connessione a WebSockets, la destinazione che restituisce un codice di stato HTTP 101 per accettare l'aggiornamento della connessione è la destinazione utilizzata nella WebSockets connessione. Una volta completato l' WebSockets aggiornamento, la persistenza basata sui cookie non viene utilizzata.
+ Gli Application Load Balancer utilizzano l'attributo `Expires` nell'intestazione del cookie invece dell'attributo `Max-Age`.
+ Gli Application Load Balancer non supportano i valori dei cookie codificati con URL.
+ Se l'Application Load Balancer riceve una nuova richiesta mentre la destinazione si sta esaurendo a causa dell'annullamento della registrazione, la richiesta viene indirizzata a una destinazione integra.
+ Le sessioni permanenti non sono supportate se l'ottimizzatore di destinazione è abilitato.

**Topics**
+ [Persistenza basata sulla durata](#duration-based-stickiness)
+ [Persistenza basata sull'applicazione](#application-based-stickiness)

### Persistenza basata sulla durata
<a name="duration-based-stickiness"></a>

La persistenza basata sulla durata instrada le richieste verso la stessa destinazione all'interno di un gruppo di destinazioni utilizzando un cookie generato dal sistema di bilanciamento del carico (`AWSALB`). Il cookie viene utilizzato per mappare la sessione verso la destinazione. Se l'applicazione non dispone del proprio cookie di sessione, è possibile specificare la durata della persistenza e gestire per quanto tempo il sistema di bilanciamento del carico dovrebbe instradare la richiesta dell'utente verso la stessa destinazione in modo sistematico. 

Quando un sistema di bilanciamento del carico riceve per la prima volta una richiesta da un client, la instrada verso una destinazione (sulla base dell'algoritmo scelto) e genera un cookie chiamato `AWSALB`. Codifica le informazioni sulla destinazione selezionata, crittografa il cookie e lo include nella risposta al cliente. Il cookie generato dal sistema di bilanciamento del carico ha una scadenza di 7 giorni non configurabile.

Nelle richieste successive, il client deve includere il cookie `AWSALB`. Quando il sistema di bilanciamento del carico riceve una richiesta da un client che contiene il cookie, rileva e instrada la richiesta verso la stessa destinazione. Se il cookie è presente ma non può essere decodificato, o se si riferisce a una destinazione che è stata cancellata o non è integra, il load balancer seleziona una nuova destinazione e aggiorna il cookie con le informazioni sulla nuova destinazione.

Per le richieste CORS (Cross-Origin Resource Sharing), alcuni browser richiedono l'attivazione della persistenza. `SameSite=None; Secure` Per supportare questi browser, il load balancer genera sempre un secondo cookie di adesività`AWSALBCORS`, che include le stesse informazioni del cookie di persistenza originale, oltre all'attributo. `SameSite` I client ricevono entrambi i cookie, incluse le richieste non CORS.

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

**Per abilitare la viscosità basata sulla durata**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per aprire la relativa pagina dei dettagli.

1. Nella scheda **Attributi**, scegli **Modifica**.

1. In **Configurazione della selezione della destinazione, procedi** come segue:

   1. Seleziona **Attiva la viscosità.**

   1. Per **Tipo di persistenza**, seleziona **Cookie generato dal sistema di bilanciamento del carico**.

   1. Per **Durata persistenza**, specificare un valore compreso tra 1 secondo e 7 giorni.

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

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

**Per abilitare la viscosità basata sulla durata**  
Utilizzate il [modify-target-group-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html)comando con gli attributi and. `stickiness.enabled` `stickiness.lb_cookie.duration_seconds`

```
aws elbv2 modify-target-group-attributes \
    --target-group-arn target-group-arn \
    --attributes \
        "Key=stickiness.enabled,Value=true" \
        "Key=stickiness.lb_cookie.duration_seconds,Value=300"
```

------
#### [ CloudFormation ]

**Per abilitare la viscosità basata sulla durata**  
Aggiorna la [AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html)risorsa per includere gli attributi and. `stickiness.enabled` `stickiness.lb_cookie.duration_seconds`

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: HTTP
      Port: 80
      TargetType: ip
      VpcId: !Ref myVPC
      TargetGroupAttributes: 
        - Key: "stickiness.enabled"
          Value: "true" 
        - Key: "stickiness.lb_cookie.duration_seconds"
          Value: "300"
```

------

### Persistenza basata sull'applicazione
<a name="application-based-stickiness"></a>

La persistenza basata sull'applicazione offre la flessibilità di impostare i propri criteri per la persistenza client-destinazione. Quando si abilita la persistenza basata sull'applicazione, il sistema di bilanciamento del carico instrada la prima richiesta verso una destinazione all'interno del gruppo di destinazioni sulla base dell'algoritmo scelto. La destinazione dovrebbe impostare un cookie dell'applicazione personalizzato che corrisponda al cookie configurato nel sistema di bilanciamento del carico per abilitare la persistenza. Questo cookie personalizzato può includere qualsiasi attributo di cookie richiesto dall'applicazione.

Quando l'Application Load Balancer riceve il cookie dell'applicazione personalizzato dalla destinazione, genera automaticamente un nuovo cookie dell'applicazione crittografato per acquisire informazioni sulla persistenza. Questo cookie dell'applicazione generato dal sistema di bilanciamento del carico acquisisce informazioni sulla persistenza per ogni gruppo di destinazioni che ha abilitato la persistenza basata sull'applicazione. 

Il cookie dell'applicazione generato dal sistema di bilanciamento del carico non copia gli attributi del cookie personalizzato impostato dalla destinazione. Ha una scadenza di 7 giorni non configurabile. Nella risposta al client, l'Application Load Balancer valida solamente il nome con cui il cookie personalizzato è stato configurato a livello di gruppo di destinazioni e non il suo valore o attributo di scadenza. Finché il nome corrisponde, il sistema di bilanciamento del carico invia entrambi i cookie, quello personalizzato impostato dalla destinazione e quello dell'applicazione generato dal sistema di bilanciamento del carico in risposta al client. 

Nelle richieste successive, i client devono restituire entrambi i cookie per mantenere la persistenza. Il sistema di bilanciamento del carico decritta il cookie dell'applicazione e verifica se la durata configurata della pertinenza è ancora valida. In seguito, utilizza le informazioni contenute nel cookie per inviare la richiesta alla stessa destinazione all'interno del gruppo di destinazioni per mantenere la pertinenza. Inoltre, il sistema di bilanciamento del carico delega il cookie dell'applicazione personalizzato alla destinazione senza ispezionarlo o modificarlo. Nelle risposte successive, la scadenza del cookie dell'applicazione generato dal sistema di bilanciamento del carico e la durata della persistenza configurata nel sistema di bilanciamento del carico vengono reimpostate. Per mantenere la persistenza tra client e target, la scadenza del cookie e la durata della persistenza non devono trascorrere.

Se una destinazione non va a buon fine o diventa non integra, il sistema di bilanciamento del carico interrompe l'instradamento delle richieste a quella destinazione e ne sceglie una nuova integra in base all'algoritmo di bilanciamento del carico esistente. Il sistema di bilanciamento del carico tratta la sessione come se fosse bloccata sulla nuova destinazione integra e continua a instradare le richieste verso la nuova destinazione integra, anche se quella non andata a buon fine ritorna.

Per abilitare la persistenza con le richieste cross-origin resource sharing (CORS), il sistema di bilanciamento del carico aggiunge gli attributi `SameSite=None; Secure` al cookie dell'applicazione generato dal sistema di bilanciamento del carico solo se la versione utente-agente è Chromium80 o superiore.

Poiché la maggior parte dei browser limita i cookie a una dimensione di 4K, il sistema di bilanciamento del carico suddivide i cookie delle applicazioni con dimensioni superiori a 4K in più cookie. Gli Application Load Balancer supportano cookie di dimensioni massime di 16 K, quindi possono creare fino a 4 partizioni che invia poi al client. Il nome del cookie dell'applicazione visualizzato dal client inizia con «AWSALBAPP-» e include un numero di frammento. Ad esempio, se la dimensione del cookie è 0-4K, il client vede -0. AWSALBAPP Se la dimensione del cookie è 4-8k, il client vede AWSALBAPP -0 e -1 e AWSALBAPP così via.

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

**Per abilitare la viscosità basata sull'applicazione**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per aprire la relativa pagina dei dettagli.

1. Nella scheda **Attributi**, scegli **Modifica**.

1. In **Configurazione di selezione della destinazione, procedi** come segue:

   1. Seleziona **Attiva la viscosità.**

   1. Per **Tipo di persistenza**, seleziona **Cookie basato sull'applicazione**.

   1. Per **Durata persistenza**, specificare un valore compreso tra 1 secondo e 7 giorni.

   1. Per **Nome del cookie dell'applicazione**, inserisci un nome per il cookie basato sull'applicazione.

      Non utilizzare `AWSALB`, `AWSALBAPP` o `AWSALBTG` come nome del cookie, poiché il loro uso è riservato per il sistema di bilanciamento del carico.

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

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

**Per abilitare la viscosità basata sull'applicazione**  
Utilizzate il [modify-target-group-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html)comando con i seguenti attributi:
+ `stickiness.enabled`
+ `stickiness.type`
+ `stickiness.app_cookie.cookie_name`
+ `stickiness.app_cookie.duration_seconds`

```
aws elbv2 modify-target-group-attributes \
    --target-group-arn target-group-arn \
    --attributes \
        "Key=stickiness.enabled,Value=true" \
        "Key=stickiness.type,Value=app_cookie" \
        "Key=stickiness.app_cookie.cookie_name,Value=my-cookie-name" \
        "Key=stickiness.app_cookie.duration_seconds,Value=300"
```

------
#### [ CloudFormation ]

**Per abilitare la viscosità basata sulle applicazioni**  
Aggiorna la [AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html)risorsa per includere i seguenti attributi:
+ `stickiness.enabled`
+ `stickiness.type`
+ `stickiness.app_cookie.cookie_name`
+ `stickiness.app_cookie.duration_seconds`

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: HTTP
      Port: 80
      TargetType: ip
      VpcId: !Ref myVPC
      TargetGroupAttributes: 
        - Key: "stickiness.enabled"
          Value: "true" 
        - Key: "stickiness.type"
          Value: "app_cookie" 
        - Key: "stickiness.app_cookie.cookie_name"
          Value: "my-cookie-name" 
        - Key: "stickiness.app_cookie.duration_seconds"
          Value: "300"
```

------

**Ribilanciamento manuale**

In caso di dimensionamento, se il numero di destinazioni aumenta considerevolmente, potrebbe potenzialmente verificarsi una distribuzione disomogenea del carico per via della persistenza. In questo scenario, è possibile ribilanciare il carico verso le destinazioni utilizzando le due opzioni seguenti:
+ Impostare una scadenza per il cookie generato dall'applicazione precedente alla data e ora attuali. Ciò impedisce ai client di inviare il cookie all'Application Load Balancer, che riavvierà il processo di determinazione della persistenza.
+ Imposta una breve durata per la configurazione di adesività basata sull'applicazione del load balancer, ad esempio 1 secondo. Ciò costringe l'Application Load Balancer a ristabilire la persistenza anche se il cookie impostato dal target non è scaduto.

# Registra gli obiettivi con il tuo gruppo target di Application Load Balancer
<a name="target-group-register-targets"></a>

Puoi registrare le destinazioni con un gruppo di destinazioni. Quando crei un gruppo di destinazioni, devi specificare il tipo di destinazione, che determina come vengono registrate le relative destinazioni. Ad esempio, puoi registrare istanze IDs, indirizzi IP o funzioni Lambda. Per ulteriori informazioni, consulta [Gruppi di destinazioni per gli Application Load Balancer](load-balancer-target-groups.md).

Se il carico di richieste per i target attualmente registrati aumenta, puoi registrare target aggiuntivi al fine di gestire le richieste. Quando il target è pronto per gestire le richieste, registralo con il gruppo target. Il sistema di bilanciamento del carico inizia a instradare le richieste al target non appena viene completato il processo di registrazione e il target supera i controlli dello stato iniziali.

Se il carico di richieste per i target registrati diminuisce o devi eseguire la manutenzione di un target, puoi annullarne registrazione dal gruppo target. Il sistema di bilanciamento del carico arresta l'instradamento delle richieste a un target non appena la sua registrazione viene annullata. Quando il target è pronto per ricevere le richieste, è possibile registrarlo di nuovo con il gruppo target.

Quando annulli la registrazione di una destinazione, il sistema di bilanciamento del carico attende il completamento delle richieste in transito. Questo comportamento è noto come *Connection Draining*. Lo stato di un target è `draining` durante la fase di Connection Draining.

Quando annulli la registrazione di una destinazione che è stata registrata in base all'indirizzo IP, devi attendere lo scadere della durata dell'annullamento della registrazione prima di poter registrare nuovamente lo stesso indirizzo IP.

Se stai eseguendo la registrazione dei target in base all'ID istanza, puoi utilizzare il sistema di bilanciamento del carico con un gruppo con dimensionamento automatico. Quando colleghi un gruppo di destinazioni a un gruppo con dimensionamento automatico e il gruppo si dimensiona orizzontalmente, le istanze avviate dal gruppo con dimensionamento automatico vengono registrate automaticamente nel gruppo di destinazioni. Se distacchi il gruppo di destinazioni dal gruppo con dimensionamento automatico, viene automaticamente annullata la registrazione delle istanze dal gruppo di destinazioni. Per maggiori informazioni, consulta [Attaching a load balancer to your Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/attach-load-balancer-asg.html) nella *Guida per l'utente di Dimensionamento automatico Amazon EC2*.

Quando si chiude un'applicazione su una destinazione, è necessario innanzitutto annullare la registrazione della destinazione dal relativo gruppo di destinazione e attendere che le connessioni esistenti si esauriscano. È possibile monitorare lo stato dell'annullamento della registrazione utilizzando il comando describe-target-health CLI o aggiornando la visualizzazione del gruppo di destinazione in. Console di gestione AWS Dopo aver confermato che la registrazione dell'obiettivo è stata annullata, è possibile procedere con l'arresto o la chiusura dell'applicazione. Questa sequenza impedisce agli utenti di riscontrare errori 5XX quando le applicazioni vengono terminate mentre è ancora in corso l'elaborazione del traffico.

## Gruppi di sicurezza target
<a name="target-security-groups"></a>

Quando registri le istanze EC2 come destinazioni, devi accertarti che i gruppi di sicurezza delle tue istanze consentano al sistema di bilanciamento del carico di comunicare con le istanze sulla porta del listener e sulla porta di controllo dello stato.


**Regole consigliate**  

| 
| 
| **Inbound** | 
| --- |
|  Source  |  Port Range  |  Comment  | 
| load balancer security group | instance listener | Consente il traffico dal load balancer sulla porta del listener dell'istanza | 
| load balancer security group | health check | Autorizza il traffico dal load balancer sulla porta di controllo dello stato | 

Ti consigliamo inoltre di consentire il traffico ICMP in entrata per supportare il rilevamento della MTU del percorso. Per ulteriori informazioni, consulta [Path MTU Discovery](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/network_mtu.html#path_mtu_discovery) nella *Amazon EC2* User Guide.

## Target Optimizer
<a name="register-targets-target-optimizer"></a>

Target Optimizer consente di applicare una rigorosa concorrenza sugli obiettivi di un gruppo target. Funziona con l'aiuto di un agente che puoi installare e configurare sulle destinazioni. L'agente funge da proxy in linea tra il sistema di bilanciamento del carico e l'applicazione. L'agente viene configurato per imporre un numero massimo di richieste simultanee che il sistema di bilanciamento del carico può inviare alla destinazione. L'agente tiene traccia del numero di richieste che la destinazione sta elaborando. Quando il numero scende al di sotto del valore massimo configurato, l'agente invia un segnale al sistema di bilanciamento del carico per informarlo che la destinazione è pronta per elaborare un'altra richiesta.

Per abilitare l'ottimizzatore della destinazione, si specifica una porta di controllo della destinazione durante la creazione del gruppo di destinazione. Il load balancer stabilisce canali di controllo con gli agenti su questa porta per la gestione del traffico. Questa porta è diversa dalla porta su cui il load balancer invia il traffico delle applicazioni. Le destinazioni registrate con il gruppo target devono avere l'agente in esecuzione su di esse. 

 **Nota: l'ottimizzatore di Target può essere abilitato solo durante la creazione del gruppo target. La porta di controllo di Target non può essere modificata dopo la creazione.** 

L'agente è disponibile come immagine Docker all'indirizzo:` public.ecr.aws/aws-elb/target-optimizer/target-control-agent:latest`. Si configurano le seguenti variabili di ambiente durante l'esecuzione del contenitore dell'agente:

`TARGET_CONTROL_DATA_ADDRESS`  
L'agente riceve il traffico delle applicazioni dal sistema di bilanciamento del carico su questo socket (IP:port). La porta in questo socket è la porta del traffico dell'applicazione configurata per il gruppo di destinazione. Per impostazione predefinita, l'agente può accettare sia connessioni in testo semplice che TLS.

`TARGET_CONTROL_CONTROL_ADDRESS`  
L'agente riceve il traffico di gestione dal sistema di bilanciamento del carico su questo socket (IP:port). La porta nel socket è la porta di controllo di destinazione configurata per il gruppo di destinazione. 

`TARGET_CONTROL_DESTINATION_ADDRESS`  
L'agente invia tramite proxy il traffico dell'applicazione a questo socket (IP:port). L'applicazione dovrebbe essere in ascolto su questo socket.

(Facoltativo) `TARGET_CONTROL_MAX_CONCURRENCY`  
Il numero massimo di richieste simultanee che la destinazione riceverà dal sistema di bilanciamento del carico. Può essere compreso tra 0 e 1000. Il valore di default è 1.

(Facoltativo) `TARGET_CONTROL_TLS_CERT_PATH`  
La posizione del certificato TLS che l'agente fornisce al sistema di bilanciamento del carico durante l'handshake TLS. Per impostazione predefinita, l'agente genera un certificato autofirmato in memoria.

(Facoltativo) `TARGET_CONTROL_TLS_KEY_PATH`  
La posizione della chiave privata corrispondente al certificato TLS che l'agente fornisce al sistema di bilanciamento del carico durante l'handshake TLS. Per impostazione predefinita, l'agente genera una chiave privata in memoria. 

(Facoltativo) `TARGET_CONTROL_TLS_SECURITY_POLICY`  
La politica di sicurezza ELB configurata per il gruppo target. Il valore predefinito è `ELBSecurityPolicy-2016-08`.

(Facoltativo) `TARGET_CONTROL_PROTOCOL_VERSION`  
Il protocollo attraverso il quale il load balancer comunica con l'agente. I valori possibili sono` HTTP1`,` HTTP2`. ` GRPC` Il valore predefinito è ` HTTP1`.

(Facoltativo) `RUST_LOG`  
Il livello di registro del processo dell'agente. Il software dell'agente è scritto in Rust. I valori possibili sono ` debug`` info`, e` error`. Il valore predefinito è ` info`. 

 Per modificare il valore di qualsiasi variabile di ambiente, è necessario riavviare l'agente con il nuovo valore. Puoi monitorare Target Optimizer con le seguenti metriche:`TargetControlRequestCount`,,`TargetControlRequestRejectCount`,,`TargetControlActiveChannelCount`, `TargetControlNewChannelCount``TargetControlChannelErrorCount`,` TargetControlWorkQueueLength`. `TargetControlProcessedBytes` [Per ulteriori informazioni, vedi [Metriche di Target Optimizer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html#target-optimizer-metric-table). Per informazioni sulla risoluzione dei problemi, consulta Risoluzione dei problemi di Target Optimizer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-troubleshooting.html#troubleshoot-target-optimizer) 

## Sottoreti condivise
<a name="register-targets-shared-subnets"></a>

I partecipanti possono creare un Application Load Balancer in un VPC condiviso. I partecipanti non possono registrare una destinazione eseguita in una sottorete non condivisa con loro.

## Registrazione di destinazioni
<a name="register-targets"></a>

Ogni gruppo target deve avere almeno un target registrato in ciascuna zona di disponibilità abilitata per il sistema di bilanciamento del carico.

Il tipo di destinazione del gruppo di destinazioni determina il modo in cui si registrano le destinazioni con quel gruppo di destinazioni. Per ulteriori informazioni, consulta [Target type (Tipo di destinazione)](load-balancer-target-groups.md#target-type).

**Requisiti e considerazioni**
+ Quando viene registrata, un'istanza deve essere nello stato `running`.
+ Un'istanza di destinazione deve trovarsi nel cloud privato virtuale (VPC) specificato per il gruppo di destinazione.
+ Quando si registrano le destinazioni in base all'ID dell'istanza per un gruppo IPv6 target, alle destinazioni deve essere assegnato un indirizzo principale IPv6 . Per ulteriori informazioni, [ IPv6 consulta gli indirizzi](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#ipv6-addressing) nella Guida per l'*utente di Amazon EC2*
+ Quando si registrano destinazioni in base all'indirizzo IP per un gruppo IPv4 target, gli indirizzi IP registrati devono provenire da uno dei seguenti blocchi CIDR:
  + Le sottoreti del VPC del gruppo target
  + 10.0.0.0/8 (RFC 1918)
  + 100.64.0.0/10 (RFC 6598)
  + 172.16.0.0/12 (RFC 1918)
  + 192.168.0.0/16 (RFC 1918)
+ Quando si registrano destinazioni in base all'indirizzo IP per un gruppo di IPv6 destinazione, gli indirizzi IP registrati devono trovarsi all'interno del blocco IPv6 VPC CIDR o all'interno IPv6 del blocco CIDR di un VPC peer.
+ Non è possibile registrare gli indirizzi IP di un altro Application Load Balancer nello stesso VPC. Se l'altro Application Load Balancer si trova in un VPC in peering al VPC del sistema di bilanciamento del carico, è possibile registrarne gli indirizzi IP.

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

**Per registrare gli obiettivi**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per visualizzarne i dettagli.

1. Scegliere la scheda **Destinazioni**.

1. Scegliere **Register Targets (Registra destinazioni)**.

1. Se il tipo di destinazione del gruppo di destinazione è`instance`, seleziona le istanze disponibili, sostituisci la porta predefinita se necessario, quindi scegli **Includi come in sospeso** di seguito.

1. Se il tipo di destinazione del gruppo di destinazione è`ip`, per ogni indirizzo IP, seleziona la rete, inserisci gli indirizzi IP e le porte e scegli **Includi come** in sospeso di seguito.

1. Se il tipo di destinazione del gruppo target è`lambda`, seleziona la funzione Lambda o inserisci il relativo ARN. Per ulteriori informazioni, consulta [Usa le funzioni Lambda come obiettivi](lambda-functions.md).

1. Scegli **Registra obiettivi in sospeso**.

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

**Per registrare gli obiettivi**  
Usa il comando [register-targets](https://docs.aws.amazon.com/cli/latest/reference/elbv2/register-targets.html). L'esempio seguente registra le destinazioni in base all'ID dell'istanza. Poiché la porta non è specificata, il load balancer utilizza la porta del gruppo di destinazione.

```
aws elbv2 register-targets \
    --target-group-arn target-group-arn \
    --targets Id=i-1234567890abcdef0 Id=i-0abcdef1234567890
```

L'esempio seguente registra le destinazioni in base all'indirizzo IP. Poiché la porta non è specificata, il load balancer utilizza la porta del gruppo di destinazione.

```
aws elbv2 register-targets \
    --target-group-arn target-group-arn \
    --targets Id=10.0.50.10 Id=10.0.50.20
```

L'esempio seguente registra una funzione Lambda come destinazione.

```
aws elbv2 register-targets \
    --target-group-arn target-group-arn \
    --targets Id=lambda-function-arn
```

------
#### [ CloudFormation ]

**Per registrare obiettivi**  
Aggiorna la [AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html)risorsa per includere i nuovi obiettivi. L'esempio seguente registra due destinazioni per ID di istanza.

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: HTTP
      Port: 80
      TargetType: instance
      VpcId: !Ref myVPC
      Targets:
        - Id: !GetAtt Instance1.InstanceId
          Port: 80
        - Id: !GetAtt Instance2.InstanceId
          Port: 80
```

------

## Annulla la registrazione degli obiettivi
<a name="deregister-targets"></a>

Se il carico di richieste per l'applicazione diminuisce o devi eseguire la manutenzione delle destinazioni, puoi annullare la loro registrazione dai gruppi di destinazione. L'annullamento della registrazione di un target rimuove il target dal gruppo target, ma non influisce in altro modo sul target stesso.

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

**Annullare la registrazione degli obiettivi**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per visualizzarne i dettagli.

1. Nella scheda **Obiettivi**, seleziona gli obiettivi da rimuovere.

1. Scegli **Annulla registrazione**.

1. Quando viene richiesta la conferma, seleziona **Annulla registrazione**.

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

**Per annullare la registrazione degli obiettivi**  
Utilizza il comando [deregister-targets](https://docs.aws.amazon.com/cli/latest/reference/elbv2/deregister-targets.html). L'esempio seguente annulla la registrazione di due destinazioni registrate in base all'ID dell'istanza.

```
aws elbv2 deregister-targets \
    --target-group-arn target-group-arn \
    --targets Id=i-1234567890abcdef0 Id=i-0abcdef1234567890
```

------

# Usa le funzioni Lambda come obiettivi di un Application Load Balancer
<a name="lambda-functions"></a>

Puoi registrare le tue funzioni Lambda come destinazioni e configurare una regola del listener per inoltrare le richieste al gruppo di destinazioni della funzione Lambda. Quando inoltra la richiesta a un gruppo di destinazioni con una funzione Lambda come destinazione, il sistema di bilanciamento del carico richiama la funzione Lambda e trasferisce i contenuti della richiesta alla funzione Lambda, nel formato JSON.

Il load balancer richiama direttamente la funzione Lambda invece di utilizzare una connessione di rete. Pertanto, non esistono requisiti per le regole in uscita dei gruppi di sicurezza Application Load Balancer.

**Limits**
+ La funzione Lambda e il gruppo di destinazioni devono trovarsi nello stesso account e nella stessa regione.
+ Le dimensioni massime del corpo della richiesta che puoi inviare a una funzione Lambda sono di 1 MB. Per i limiti correlati delle dimensioni, consulta [HTTP header limits](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html#http-header-limits).
+ Le dimensioni massime dell'oggetto JSON di risposta che può inviare la funzione Lambda sono di 1 MB.
+ WebSockets non sono supportati. Le richieste di aggiornamento vengono rifiutate con un codice HTTP 400.
+ Le zone locali non sono supportate.
+ Automatic Target Weights (ATW) non è supportato.

**Topics**
+ [Preparazione della funzione Lambda](#prepare-lambda-function)
+ [Creazione di un gruppo di destinazioni per la funzione Lambda](#create-lambda-target-group)
+ [Ricezione di eventi dal sistema di bilanciamento del carico](#receive-event-from-load-balancer)
+ [Risposta al sistema di bilanciamento del carico](#respond-to-load-balancer)
+ [Intestazioni con più valori](#multi-value-headers)
+ [Abilitazione dei controlli dell'integrità](#enable-health-checks-lambda)
+ [Registra la funzione Lambda](#register-lambda-function)
+ [Annullamento della registrazione della funzione Lambda](#deregister-lambda-function)

Per una demo, consulta [Lambda target on Application Load Balancer](https://exampleloadbalancer.com/lambda_demo.html).

## Preparazione della funzione Lambda
<a name="prepare-lambda-function"></a>

Le seguenti raccomandazioni si applicano se utilizzi la funzione Lambda con un Application Load Balancer.

**Autorizzazioni a richiamare la funzione Lambda**  
Se crei il gruppo di destinazioni e registri la funzione Lambda tramite la Console di gestione AWS, questa aggiunge automaticamente le autorizzazioni richieste alla tua policy delle funzioni Lambda. Altrimenti, dopo aver creato il gruppo target e registrato la funzione utilizzando AWS CLI, è necessario utilizzare il comando [add-permission](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html) per concedere a Elastic Load Balancing l'autorizzazione a richiamare la funzione Lambda. Consigliamo di includere le chiavi di condizione `aws:SourceAccount` e `aws:SourceArn` per limitare l'invocazione della funzione al gruppo di destinazioni specificato. Per ulteriori informazioni, consulta [Problema del "confused deputy"](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) nella *Guida per l'utente IAM*.

```
aws lambda add-permission \
    --function-name lambda-function-arn-with-alias-name \ 
    --statement-id elb1 \
    --principal elasticloadbalancing.amazonaws.com \
    --action lambda:InvokeFunction \
    --source-arn target-group-arn \
    --source-account target-group-account-id
```

**Controllo delle versioni della funzione Lambda**  
Puoi registrare una funzione Lambda per gruppo di destinazioni. Per accertarti di poter cambiare la funzione Lambda e che il sistema di bilanciamento del carico richiami sempre la versione corrente della funzione Lambda, crea un alias della funzione e includilo nell'ARN della funzione al momento della registrazione della funzione con il sistema di bilanciamento del carico. *Per ulteriori informazioni, consulta gli [alias delle AWS Lambda funzioni](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) nella Guida per gli sviluppatori.AWS Lambda *

**Timeout della funzione.**  
Il sistema di bilanciamento del carico attende finché la funzione Lambda non risponde o scade. Ti consigliamo di configurare il timeout della funzione Lambda in base al runtime previsto. Per informazioni sul valore di timeout predefinito e su come modificarlo, consulta [Configurare il timeout della funzione Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-timeout.html). [Per informazioni sul valore di timeout massimo che puoi configurare, vedi quote.AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)

## Creazione di un gruppo di destinazioni per la funzione Lambda
<a name="create-lambda-target-group"></a>

Creare un gruppo target, che viene utilizzato nell'instradamento delle richieste. Se il contenuto della richiesta corrisponde a una regola del listener con un'operazione per l'inoltro al gruppo di destinazioni, il sistema di bilanciamento del carico richiama la funzione Lambda registrata.

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

**Per creare un gruppo di destinazioni e registrare la funzione Lambda**

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

1. Nel pannello di navigazione, in **Load balancing** (Bilanciamento del carico) scegli **Target Groups** (Gruppi di destinazione).

1. Scegliere **Crea gruppo target**.

1. Per **Seleziona destinazione**, scegli **Funzione Lambda**.

1. In **Nome gruppo di destinazione**, immetti un nome per il gruppo di destinazione.

1. (Facoltativo) Per abilitare i controlli dell'integrità, scegli **Controllo dell'integrità**, **Abilita**.

1. **(Facoltativo) Espandi i tag.** Per ogni tag, scegli **Aggiungi nuovo tag** e inserisci una chiave per il tag e un valore per il tag.

1. Scegli **Next (Successivo)**.

1. Se sei pronto per registrare la funzione Lambda, scegli **Seleziona una funzione Lambda e scegli la funzione Lambda** dall'elenco, oppure scegli Inserisci una funzione **Lambda ARN e inserisci l'ARN della funzione Lambda**,

   Se non sei pronto per registrare la funzione Lambda, scegli Registra la funzione **Lambda più tardi e registra la destinazione** in un secondo momento. Per ulteriori informazioni, consulta [Registrazione di destinazioni](target-group-register-targets.md#register-targets).

1. Scegliere **Crea gruppo target**.

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

**Per creare un gruppo target di tipo lambda**  
Utilizza il comando [create-target-group](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-target-group.html).

```
aws elbv2 create-target-group \
    --name my-target-group \
    --target-type lambda
```

**Per registrare la funzione Lambda**  
Utilizzate il comando [register-targets](https://docs.aws.amazon.com/cli/latest/reference/elbv2/register-targets.html).

```
aws elbv2 register-targets \
    --target-group-arn target-group-arn \
    --targets Id=lambda-function-arn
```

------
#### [ CloudFormation ]

**Per creare un gruppo di destinazioni e registrare la funzione Lambda**  
Definire un tipo di risorsa. [AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html) Se non sei pronto per registrare la funzione Lambda ora, puoi omettere la `Targets` proprietà e aggiungerla in un secondo momento.

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      TargetType: lambda
      Tags: 
        - Key: 'department'
          Value: '123'
      Targets:
        - Id: !Ref myLambdaFunction
```

------

## Ricezione di eventi dal sistema di bilanciamento del carico
<a name="receive-event-from-load-balancer"></a>

Il sistema di bilanciamento del carico supporta l'invocazione Lambda per le richieste sia da HTTP che HTTPS. Il sistema di bilanciamento del carico invia un evento in formato JSON. Il sistema di bilanciamento del carico aggiunge le seguenti intestazioni a ogni richiesta: `X-Amzn-Trace-Id`, `X-Forwarded-For`, `X-Forwarded-Port` e `X-Forwarded-Proto`.

Se è presente l'intestazione `content-encoding`, il sistema di bilanciamento del carico Base64 codifica il corpo e imposta `isBase64Encoded` su `true`.

Se l'intestazione `content-encoding` non è presente, la codifica Base64 dipende dal tipo di contenuto. Per i seguenti tipi, il load balancer invia il corpo così com'è e lo imposta su`false`: `isBase64Encoded` text/\$1,. application/json, application/javascript, and application/xml In caso contrario, il sistema di bilanciamento del carico Base64 codifica il corpo e imposta `isBase64Encoded` su `true`.

Di seguito è riportato un esempio di evento.

```
{
    "requestContext": {
        "elb": {
            "targetGroupArn": "arn:aws:elasticloadbalancing:region:123456789012:targetgroup/my-target-group/6d0ecf831eec9f09"
        }
    },
    "httpMethod": "GET",
    "path": "/",
    "queryStringParameters": {parameters},
    "headers": {
        "accept": "text/html,application/xhtml+xml",
        "accept-language": "en-US,en;q=0.8",
        "content-type": "text/plain",
        "cookie": "cookies",
        "host": "lambda-846800462-us-east-2.elb.amazonaws.com",
        "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6)",
        "x-amzn-trace-id": "Root=1-5bdb40ca-556d8b0c50dc66f0511bf520",
        "x-forwarded-for": "72.21.198.66",
        "x-forwarded-port": "443",
        "x-forwarded-proto": "https"
    },
    "isBase64Encoded": false,
    "body": "request_body"
}
```

## Risposta al sistema di bilanciamento del carico
<a name="respond-to-load-balancer"></a>

La risposta dalla funzione Lambda deve includere lo stato della codifica Base64, il codice di stato e le intestazioni. Puoi omettere il corpo della risposta.

Per includere un contenuto binario nel corpo della risposta, devi sottoporre a codifica Base64 il contenuto e impostare `isBase64Encoded` su `true`. Il sistema di bilanciamento del carico decodifica il contenuto per recuperare la parte binaria e inviarla al client nel corpo della risposta HTTP.

Il sistema di bilanciamento del carico non rispetta le hop-by-hop intestazioni, come o. `Connection` `Transfer-Encoding` Puoi omettere l'intestazione `Content-Length` in quanto il sistema di bilanciamento del carico la calcola prima di inviare le risposte ai client.

Di seguito è riportata una risposta di esempio da una funzione Lambda basata su **nodejs**.

```
{
    "isBase64Encoded": false,
    "statusCode": 200,
    "statusDescription": "200 OK",
    "headers": {
        "Set-cookie": "cookies",
        "Content-Type": "application/json"
    },
    "body": "Hello from Lambda (optional)"
}
```

[Per i modelli di funzioni Lambda che funzionano con Application Load Balancer, vedi application-load-balancer-serverless -app su github.](https://github.com/aws/elastic-load-balancing-tools/tree/master/application-load-balancer-serverless-app) In alternativa, aprire la [console Lambda](https://console.aws.amazon.com/lambda), scegli **Applicazioni**, **Crea applicazione** e seleziona una delle seguenti opzioni da AWS Serverless Application Repository:
+ Obiettivo Lambda ALB - S3 UploadFileto
+ Obiettivo ALB-Lambda- BinaryResponse
+ ALB-Lambda-Target IP WhatisMy

## Intestazioni con più valori
<a name="multi-value-headers"></a>

Se le richieste provenienti da un client o le risposte da una funzione Lambda contengono intestazioni con più valori o la stessa intestazione più volte oppure parametri di query con più valori per la stessa chiave, puoi abilitare il supporto della sintassi delle intestazioni con più valori. Dopo aver abilitato le intestazioni con più valori, le intestazioni e i parametri di query scambiati tra il sistema di bilanciamento del carico e la funzione Lambda utilizzano array anziché stringhe. Se non abiliti la sintassi delle intestazioni con più valori e un intestazione o un parametro di query dispongono di più valori, il sistema di bilanciamento del carico utilizza l'ultimo valore ricevuto.

**Topics**
+ [Richieste con intestazioni con più valori](#multi-value-headers-request)
+ [Risposte con intestazioni con più valori](#multi-value-headers-response)
+ [Abilitazione delle intestazioni con più valori](#enable-multi-value-headers)

### Richieste con intestazioni con più valori
<a name="multi-value-headers-request"></a>

I nomi dei campi utilizzati per le intestazioni e i parametri delle stringhe di query sono diversi a seconda se sono abilitate le intestazioni multivalore per il gruppo target.

La seguente richiesta di esempio ha due parametri di query con la stessa chiave:

```
http://www.example.com?&myKey=val1&myKey=val2
```

Con il formato predefinito, il sistema di bilanciamento del carico utilizza l'ultimo valore inviato dal client e invia un evento che include parametri di stringhe di query tramite `queryStringParameters`. Esempio:

```
"queryStringParameters": { "myKey": "val2"},
```

Con le intestazioni con più valori, il sistema di bilanciamento del carico utilizza entrambi i valori della chiave inviati dal client e invia un evento che include parametri di stringhe di query tramite `multiValueQueryStringParameters`. Esempio:

```
"multiValueQueryStringParameters": { "myKey": ["val1", "val2"] },
```

Analogamente, supponiamo che il client invii una richiesta con due cookie nell'intestazione:

```
"cookie": "name1=value1",
"cookie": "name2=value2",
```

Con il formato predefinito, il sistema di bilanciamento del carico utilizza l'ultimo cookie inviato dal client e invia un evento che include intestazioni tramite `headers`. Esempio:

```
"headers": {
    "cookie": "name2=value2",
    ...
},
```

Con le intestazioni con più valori, il sistema di bilanciamento del carico utilizza entrambi i cookie inviati dal client e invia un evento che include le intestazioni tramite `multiValueHeaders`. Esempio:

```
"multiValueHeaders": {
    "cookie": ["name1=value1", "name2=value2"],
    ...
},
```

Se i parametri di query sono codificati in formato URL, il sistema di bilanciamento del carico non li decodifica. Devi decodificarli nella funzione Lambda.

### Risposte con intestazioni con più valori
<a name="multi-value-headers-response"></a>

I nomi dei campi utilizzati per le intestazioni sono diversi a seconda se sono abilitate le intestazioni multivalore per il gruppo target. Devi utilizzare `multiValueHeaders` se hai abilitato le intestazioni multivalore e `headers` in caso contrario.

Con il formato predefinito, puoi specificare un singolo cookie:

```
{
  "headers": {
      "Set-cookie": "cookie-name=cookie-value;Domain=myweb.com;Secure;HttpOnly",
      "Content-Type": "application/json"
  },
}
```

Con le intestazioni con più valori, è necessario specificare più cookie come segue:

```
{
  "multiValueHeaders": {
      "Set-cookie": ["cookie-name=cookie-value;Domain=myweb.com;Secure;HttpOnly","cookie-name=cookie-value;Expires=May 8, 2019"],
      "Content-Type": ["application/json"]
  },
}
```

Il sistema di bilanciamento del carico potrebbe inviare le intestazioni al client in un ordine diverso rispetto a quello specificato nel payload della risposta di Lambda. Pertanto, non fare affidamento sul fatto che le intestazioni verranno restituite in un ordine specifico.

### Abilitazione delle intestazioni con più valori
<a name="enable-multi-value-headers"></a>

Puoi abilitare o disabilitare le intestazioni con più valori per un gruppo di destinazioni con tipo `lambda`.

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

**Per abilitare le intestazioni multivalore**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per aprire la relativa pagina dei dettagli.

1. Nella scheda **Attributi**, scegli **Modifica**.

1. Abilita le intestazioni **multivalore**.

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

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

**Per abilitare le intestazioni multivalore**  
Utilizza il comando [modify-target-group-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html) con l’attributo `lambda.multi_value_headers.enabled`.

```
aws elbv2 modify-target-group-attributes \
    --target-group-arn target-group-arn \
    --attributes "Key=lambda.multi_value_headers.enabled,Value=true"
```

------
#### [ CloudFormation ]

**Per abilitare le intestazioni multivalore**  
Aggiorna la [AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html)risorsa per includere l'`lambda.multi_value_headers.enabled`attributo.

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      TargetType: lambda
      Tags: 
        - Key: 'department'
          Value: '123'
      Targets:
        - Id: !Ref myLambdaFunction
      TargetGroupAttributes:
        - Key: "lambda.multi_value_headers.enabled"
          Value: "true"
```

------

## Abilitazione dei controlli dell'integrità
<a name="enable-health-checks-lambda"></a>

Per impostazione predefinita, i controlli dello stato sono disabilitati per i gruppi di destinazioni di tipo `lambda`. È possibile abilitare i controlli dell'integrità per implementare il failover DNS con Amazon Route 53. La funzione Lambda è in grado di verificare l'integrità di un servizio downstream prima di rispondere alla richiesta di controllo dello stato. Se la risposta dalla funzione Lambda indica un errore del controllo dell'integrità, l'errore viene trasmesso a Route 53. Puoi configurare Route 53 affinché esegua il failover sullo stack di un'applicazione di backup.

Ti verrà addebitato il costo per i controlli dello stato, allo stesso modo che per qualsiasi invocazione della funzione Lambda.

Di seguito è riportato il formato dell'evento di controllo dello stato inviato alla funzione Lambda. Per controllare se un evento è un evento di controllo dello stato, controlla il valore del campo utente-agente. L'agente utente per i controlli dello stato è `ELB-HealthChecker/2.0`.

```
{
    "requestContext": {
        "elb": {
            "targetGroupArn": "arn:aws:elasticloadbalancing:region:123456789012:targetgroup/my-target-group/6d0ecf831eec9f09"
        }
    },
    "httpMethod": "GET",  
    "path": "/",  
    "queryStringParameters": {},  
    "headers": {
        "user-agent": "ELB-HealthChecker/2.0"
    },  
    "body": "",  
    "isBase64Encoded": false
}
```

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

**Per abilitare i controlli sanitari per un gruppo lambda target**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per visualizzarne i dettagli.

1. Nella scheda **Controlli dello stato**, seleziona **Modifica**.

1. In **Controlli dell'integrità**, scegli **Abilita**.

1. (Facoltativo) Aggiorna le impostazioni del controllo sanitario secondo necessità.

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

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

**Per abilitare i controlli sanitari per un gruppo lambda target**  
Utilizza il comando [modify-target-group](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group.html).

```
aws elbv2 modify-target-group \
    --target-group-arn target-group-arn \
    --health-check-enabled
```

------
#### [ CloudFormation ]

**Per abilitare i controlli sanitari per un gruppo lambda target**  
Aggiorna la [AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html)risorsa.

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      TargetType: lambda
      HealthCheckEnabled: true
      Tags: 
        - Key: 'department'
          Value: '123'
      Targets:
        - Id: !Ref myLambdaFunction
```

------

## Registra la funzione Lambda
<a name="register-lambda-function"></a>

È possibile registrare una singola funzione Lambda in ogni gruppo di destinazioni. Per sostituire una funzione Lambda, ti consigliamo di creare un nuovo gruppo target, registrare la nuova funzione con il nuovo gruppo target e aggiornare le regole del listener per utilizzare il nuovo gruppo target.

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

**Per registrare una funzione di Lambda**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per visualizzarne i dettagli.

1. Nella scheda **Target**, se non è registrata alcuna funzione Lambda, scegli **Registra** destinazione.

1. Seleziona la funzione Lambda o inserisci il relativo ARN.

1. Scegli **Registrati**.

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

**Per registrare una funzione di Lambda**  
Utilizzate il comando [register-targets](https://docs.aws.amazon.com/cli/latest/reference/elbv2/register-targets.html).

```
aws elbv2 register-targets \
    --target-group-arn target-group-arn \
    --targets Id=lambda-function-arn
```

------
#### [ CloudFormation ]

**Per registrare una funzione di Lambda**  
Aggiorna la risorsa. [AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html)

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      TargetType: lambda
      Tags: 
        - Key: 'department'
          Value: '123'
      Targets:
        - Id: !Ref myLambdaFunction
```

------

## Annullamento della registrazione della funzione Lambda
<a name="deregister-lambda-function"></a>

Se non hai più bisogno di inviare traffico alla funzione Lambda, puoi annullare la relativa registrazione. Dopo avere annullato la registrazione di una funzione Lambda, le richieste in transito hanno esito negativo con 5XX errori HTTP.

Per sostituire una funzione Lambda, ti consigliamo di creare un nuovo gruppo target, registrare la nuova funzione con il nuovo gruppo target e aggiornare le regole del listener per utilizzare il nuovo gruppo target.

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

**Per annullare la registrazione di una funzione Lambda**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per visualizzarne i dettagli.

1. **Nella scheda **Target**, seleziona la destinazione e scegli Annulla registrazione.**

1. Quando viene richiesta la conferma, seleziona **Annulla registrazione**.

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

**Per annullare la registrazione di una funzione Lambda**  
Utilizza il comando [deregister-targets](https://docs.aws.amazon.com/cli/latest/reference/elbv2/deregister-targets.html).

```
aws elbv2 deregister-targets \
    --target-group-arn target-group-arn \
    --targets Id=lambda-function-arn
```

------

# Tag per il gruppo target di Application Load Balancer
<a name="target-group-tags"></a>

I tag ti aiutano a classificare i gruppi target in modi diversi, ad esempio in base a scopo, proprietario o ambiente.

È possibile aggiungere più tag a ciascun gruppo target. Le chiavi dei tag devono essere univoche per ogni gruppo target. Se aggiungi un tag con una chiave già associata al gruppo target, il valore del tag viene aggiornato.

Quando un tag non serve più, è possibile rimuoverlo.

**Restrizioni**
+ Numero massimo di tag per risorsa: 50
+ Lunghezza massima della chiave: 127 caratteri Unicode
+ Lunghezza massima del valore: 255 caratteri Unicode
+ Per le chiavi e i valori dei tag viene fatta la distinzione tra maiuscole e minuscole. I caratteri consentiti sono lettere, spazi e numeri rappresentabili in formato UTF-8, più i caratteri speciali \$1 - = . \$1 : / @. Non utilizzare spazi iniziali o finali.
+ Non utilizzate il `aws:` prefisso nei nomi o nei valori dei tag perché è riservato all' AWS uso. Non è possibile modificare né eliminare i nomi o i valori di tag con tale prefisso. I tag con questo prefisso non vengono conteggiati per il limite del numero di tag per risorsa. 

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

**Per gestire i tag per un gruppo target**

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

1. Nel pannello di navigazione, in **Bilanciamento del carico** scegli **Gruppi di destinazione**.

1. Scegli il nome del gruppo di destinazione per visualizzarne i dettagli.

1. Nella scheda **Tag**, scegli **Aggiungi/modifica tag** ed eseguire una o più delle operazioni seguenti:

   1. Per aggiornare un tag, inserisci nuovi valori per **Chiave** e **Valore**.

   1. Per aggiungere un tag, scegli **Aggiungi tag** e inserire valori per **Chiave** e **Valore**.

   1. Per eliminare un tag, scegli **Rimuovi** accanto al tag.

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

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

**Come aggiungere tag**  
Utilizzate il comando [add-tags](https://docs.aws.amazon.com/cli/latest/reference/elbv2/add-tags.html). L'esempio seguente aggiunge due tag.

```
aws elbv2 add-tags \
    --resource-arns target-group-arn \
    --tags "Key=project,Value=lima" "Key=department,Value=digital-media"
```

**Per rimuovere i tag**  
Usa il comando [remove-tags](https://docs.aws.amazon.com/cli/latest/reference/elbv2/remove-tags.html). L'esempio seguente rimuove i tag con le chiavi specificate.

```
aws elbv2 remove-tags \
    --resource-arns target-group-arn \
    --tag-keys project department
```

------
#### [ CloudFormation ]

**Come aggiungere tag**  
Aggiornate la [AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html)risorsa per includere la `Tags` proprietà.

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: HTTP
      Port: 80
      TargetType: ip
      VpcId: !Ref myVPC
      Tags: 
        - Key: 'project'
          Value: 'lima'
        - Key: 'department'
          Value: 'digital-media'
```

------

# Eliminare un gruppo target di Application Load Balancer
<a name="delete-target-group"></a>

È possibile eliminare un gruppo di destinazioni se non ci sono operazioni di inoltro di alcuna regola dell'ascoltatore che vi fanno riferimento. L'eliminazione di un gruppo target non influisce sui target registrati con il gruppo target. Se non hai più bisogno di un'istanza EC2 registrata, puoi arrestarla o terminarla.

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

**Come eliminare un gruppo di destinazione**

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

1. Nel riquadro di navigazione, sotto **Bilanciamento del carico**, scegli **Gruppi di destinazioni**.

1. Selezionare il gruppo target e scegliere **Operazioni**, **Elimina**.

1. Scegli **Elimina**.

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

**Come eliminare un gruppo di destinazione**  
Utilizza il comando [delete-target-group](https://docs.aws.amazon.com/cli/latest/reference/elbv2/delete-target-group.html).

```
aws elbv2 delete-target-group \
    --target-group-arn target-group-arn
```

------