

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

# Connetti i servizi Amazon ECS a un gateway
<a name="gateway-connect-service"></a>

Puoi connettere un servizio Amazon ECS a un gateway configurando un connettore gateway quando crei o aggiorni il servizio. Un connettore gateway identifica la porta container denominata che riceve il traffico. È inoltre possibile configurare i controlli di integrità e specificare i tipi di accesso al gateway che il servizio può utilizzare.

Amazon ECS connette il servizio ai gateway compatibili associati al suo cluster. Per ogni connessione, Amazon ECS crea un gateway route e fornisce un nome host HTTPS univoco.

## Prerequisiti
<a name="gateway-connect-prerequisites"></a>

Prima di aggiungere un connettore gateway a un servizio, assicurati di avere quanto segue:
+ Un gateway è associato al cluster ECS del servizio e l'associazione è ATTIVA. Se non è associato alcun gateway, Amazon ECS rifiuta la richiesta, quindi puoi scoprirlo immediatamente invece di aspettare che un servizio venga distribuito senza un URL.
+ Il tuo servizio ha una definizione di attività che utilizza `awsvpc` modalità di rete e definisce una porta denominata sul contenitore che dovrebbe ricevere traffico. Per ulteriori informazioni, vedere [Opzioni di rete per attività di Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/networking-networkmode.html).
+ Almeno un gateway sul cluster è compatibile con il tuo servizio. Un gateway è compatibile quando si trova nello stesso VPC delle sottoreti del servizio, corrisponde al filtro del tipo di accesso e copre tutte le zone di disponibilità in cui viene eseguito il servizio.

## Connetti un servizio a un gateway
<a name="gateway-connect-add-connector"></a>

Aggiungi un connettore gateway al servizio e imposta `portName` alla porta del container nella definizione dell'attività che dovrebbe ricevere traffico.

**Per connettere un servizio a un gateway**

```
aws ecs update-service \
    --cluster my-cluster \
    --service my-service \
    --gateway-connectors '[{"portName": "web"}]'
```

Durante la distribuzione, Amazon ECS seleziona i gateway compatibili, effettua il provisioning o riutilizza l'infrastruttura di ingresso richiesta, crea il certificato, il nome host, le regole del listener e i gruppi target e crea un gateway route per ogni connessione. Ogni route ha il proprio nome host HTTPS. Se più di un gateway è compatibile, il servizio si connette a tutti. Un servizio dispone al massimo di un connettore gateway.

## Personalizzare un connettore gateway
<a name="gateway-configure-connectors"></a>

Il `portName` è obbligatorio. Si riferisce a una porta denominata nella definizione dell'attività. Amazon ECS utilizza il numero, il protocollo e la versione del protocollo di quella porta per configurare il gruppo target. Se il nome non corrisponde a una porta nella definizione dell'attività utilizzata dal servizio, la richiesta ha esito negativo. Le impostazioni di controllo dello stato e un filtro del tipo di accesso sono opzionali.

### Filtro del tipo di accesso
<a name="gateway-connector-access-type-filter"></a>

Il `filters.accessTypes` restringe i gateway a cui si connette il servizio. Impostalo su `PUBLIC`, `PRIVATE`, o entrambi, e omettilo per accettarli entrambi. A `PUBLIC` il gateway è raggiungibile da Internet. UN `PRIVATE` il gateway è raggiungibile solo da una rete in grado di raggiungere il suo load balancer interno, quindi non arriva una richiesta da Internet. Il filtro controlla solo la selezione del gateway. Non configura le regole del traffico o le regole di sicurezza.

**Per connettersi solo a gateway privati**

```
aws ecs update-service \
    --cluster my-cluster \
    --service my-service \
    --gateway-connectors '[{
        "portName": "web",
        "filters": { "accessTypes": ["PRIVATE"] }
    }]'
```

Il restringimento del filtro ha effetto sull'avvio della distribuzione. Il servizio interrompe le connessioni ai gateway che non corrispondono più e i relativi URL smettono di funzionare.

**Importante**  
Un servizio che non dovrebbe mai essere raggiungibile da Internet deve filtrare su `PRIVATE`. Senza il filtro, l'associazione di un gateway connesso a Internet al cluster espone successivamente il servizio alla successiva distribuzione.

### Controlli dell’integrità
<a name="gateway-connector-health-checks"></a>

Amazon ECS configura i controlli di integrità sul gruppo target che crea per ogni route del gateway e inoltra il traffico solo alle destinazioni che lo superano. Per impostazione predefinita, un gateway invia una richiesta HTTP a `/` sulla porta che `portName` nomina, ogni 30 secondi, e prevede un `200` risposta entro 5 secondi. Un servizio che risponde `200` al `/` non necessita di alcuna configurazione di controllo dello stato di salute.

Imposta un percorso diverso se `/` è lento o funziona davvero, ad esempio interrogare un database o eseguire il rendering di una pagina intera. Un controllo dello stato si ripete ogni 30 secondi per ciascun target e una risposta lenta può superare il timeout del controllo dello stato e contrassegnare un target integro come non integro. Un endpoint leggero come `/health` evita entrambi.

**Per impostare un percorso di controllo dello stato**

```
aws ecs update-service \
    --cluster my-cluster \
    --service my-service \
    --gateway-connectors '[{
        "portName": "web",
        "healthCheck": { "healthCheckPath": "/health" }
    }]'
```

Per informazioni sui controlli di ciascuna impostazione, consulta [Controlli dello stato dei gruppi target di Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html) nel *Guida per l'utente di Application Load Balancers*.

**Importante**  
Una modifica dello stato di salute sostituisce il gruppo target, quindi non è possibile effettuarne una su un servizio che utilizza `ROLLING` strategia di distribuzione. La richiesta ha esito negativo con errore `Target group properties cannot be changed with ROLLING deployment strategy`. Usa un `BLUE_GREEN` o `CANARY` strategia di distribuzione sul servizio o imposta la configurazione del controllo dello stato quando si connette per la prima volta il servizio.

## In che modo Amazon ECS seleziona i gateway compatibili
<a name="gateway-select-compatible"></a>

Durante l'implementazione di un servizio, Amazon ECS valuta i gateway associati al cluster del servizio, fino a 5 per cluster, e restringe i candidati. Ignora i gateway che non corrispondono alla distribuzione anziché fallire.

Amazon ECS corrisponde su tre dimensioni:


| Dimensione | In che modo Amazon ECS determina l'idoneità | 
| --- | --- | 
| Tipo di accesso | Il gateway corrisponde a quello del connettore del gateway filters.accessTypes. Se si omette il filtro, entrambi PUBLIC e PRIVATE i gateway sono idonei. | 
| VPC | Il gateway si trova nello stesso VPC delle sottoreti del servizio. Un gateway in un altro VPC non è idoneo. | 
| Zona di disponibilità | Il gateway deve avere sottoreti configurate in ogni zona di disponibilità utilizzata dalle sottoreti configurate del servizio. Un gateway che si sovrappone solo ad alcune delle zone di disponibilità non è idoneo. | 

Amazon ECS collega il servizio a tutti i gateway idonei. Un gateway incompatibile non fallisce di per sé nella distribuzione, se un altro gateway associato è idoneo. Se non rimane alcun gateway idoneo, la richiesta ha esito negativo perché il servizio non è in grado di stabilire una connessione al gateway.

La copertura della zona di disponibilità deve essere completa, non parziale. Un gateway raggiunge solo le zone di disponibilità in cui sono presenti sottoreti. Un'attività avviata in una zona di disponibilità non coperta dal gateway non viene mai sottoposta ai controlli di integrità e Amazon ECS la sostituisce. La copertura completa delle zone di disponibilità garantisce che le attività avviate in una qualsiasi delle zone di disponibilità configurate del servizio possano essere registrate presso obiettivi integri all'interno del gateway connesso.

Ad esempio, considera due gateway, Gateway 1 (GW1) e Gateway 2 (GW2) e un servizio (S1) nello stesso VPC:


| Risorsa | Zone di disponibilità configurate | Idoneo all'assistenza | 
| --- | --- | --- | 
| GW1 | us-west-2a, us-west-2b, us-west-2c | Sì. Copre entrambe le zone di disponibilità del servizio. | 
| GW2 | us-west-2a, us-west-2b | No. Non copre us-west-2c. | 
| S1 | us-west-2b, us-west-2c |  | 

Supponendo che anche il filtro del tipo di accesso corrisponda, Amazon ECS connette il servizio solo al Gateway 1. Gateway 1 copre entrambi `us-west-2b` e `us-west-2c`, mentre Gateway 2 non copre `us-west-2c`. La connessione del servizio a Gateway 2 può causare l'avvio di attività in `us-west-2c` non superare i controlli di integrità del sistema di bilanciamento del carico ed essere sostituito.

**Importante**  
Un connettore gateway non seleziona un singolo gateway per nome o ARN. Il servizio si connette a tutti i gateway del cluster che superano i tre controlli. La configurazione più sicura è rappresentata da un gateway che si estende su più zone di disponibilità rispetto alle esigenze del servizio. Per connettere un servizio a un particolare gateway, configuralo in modo che copra tutte le zone di disponibilità in cui vengono eseguite le attività del servizio. Coordina le modifiche alle associazioni dei cluster con il team della piattaforma, poiché possono influire su più servizi.

## Comprendi l'implementazione dei servizi
<a name="gateway-service-deployment"></a>

La creazione o l'aggiornamento di un servizio con un connettore gateway avvia una distribuzione. Amazon ECS crea il percorso del gateway e le relative risorse specifiche del servizio durante tale distribuzione. La prima connessione a un gateway può richiedere più tempo, perché Amazon ECS potrebbe dover creare un Application Load Balancer condiviso prima di poter creare le risorse del servizio. I servizi successivi riutilizzano il load balancer, il relativo listener e il relativo gruppo di sicurezza.

Quando si aggiorna un connettore gateway o si distribuisce il servizio dopo la modifica di un'associazione di cluster, Amazon ECS rivaluta quali gateway sono idonei. L'implementazione stabilisce i percorsi verso i nuovi gateway idonei e rimuove le connessioni che non corrispondono più.

### In che modo il traffico di test raggiunge una nuova revisione
<a name="gateway-test-traffic-new-revision"></a>

Durante un'implementazione progressiva, le richieste con l'intestazione e il valore del traffico di test del gateway raggiungono la nuova revisione del servizio mentre tutto il resto continua a raggiungere quella corrente. Il team della piattaforma imposta quell'intestazione sul gateway, non sul tuo servizio, in modo che tutti i servizi dietro il gateway utilizzino la stessa. Chiedi loro di cosa si tratta.

Una modifica all'intestazione viene applicata al servizio solo alla distribuzione successiva, quindi il servizio può ancora corrispondere a un'intestazione precedente. Per ulteriori informazioni, consulta [Configura le regole del traffico di prova](gateway-managing.md#gateway-test-traffic-rules).

## Verifica la connessione e trova l'URL del servizio
<a name="gateway-find-service-url"></a>

Ogni gateway idoneo produce una connessione separata e il proprio nome host HTTPS. Queste connessioni appartengono a una revisione del servizio, quindi una chiamata restituisce tutte le connessioni della revisione denominata, insieme all'URL, al tipo di accesso e allo stato di ciascuna connessione. Durante una distribuzione, esiste più di una revisione e ognuna ha le proprie connessioni.

Si ottiene un ARN di revisione dalla distribuzione del servizio. `describe-service-deployments` restituisce l'ARN della revisione a cui si sta spostando una distribuzione, in `targetServiceRevision.arn`. Per ulteriori informazioni, vedere [Visualizzazione dei dettagli della revisione del servizio Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/view-service-revision.html).

**Per verificare una connessione e ottenere l'URL del servizio**

```
aws ecs describe-service-revisions \
    --service-revision-arns arn:aws:ecs:us-west-2:123456789012:service-revision/my-cluster/my-service/1234567890123456789 \
    --query 'serviceRevisions[0].ecsManagedResources.gatewayConnections'
```

Ogni connessione comporta `serviceUrl`, il nome host HTTPS a cui inviare il traffico, insieme `accessType`, che indica fino a che punto arriva quel nome host, e `status`. Un nome host assume la forma `https://<unique-id>.ecs.<region>.on.aws`. Il dominio varia in base AWS partizione. L'identificatore del nome host è casuale. Non è derivato dal nome del servizio, quindi un servizio eliminato e ricreato con lo stesso nome ottiene un URL diverso.

Leggi `status` su ogni connessione e attendi che venga segnalata una connessione `ACTIVE` prima di indirizzare il traffico del cliente al relativo URL. `status` resoconti `CREATE_IN_PROGRESS` mentre Amazon ECS dispone e `ACTIVE` una volta che la connessione è pronta, esegui nuovamente il comando fino a quando non verranno segnalate le connessioni che desideri `ACTIVE`. Un servizio connesso a due gateway ha due connessioni da verificare. Una connessione che riporta `CREATE_FAILED` significa che il provisioning è fallito anziché che è ancora in esecuzione e attendere più a lungo non lo cambierà. Per ulteriori informazioni, consulta [L'hostname del servizio non risponde](gateway-troubleshooting.md#gateway-ts-url-no-response).

Le impostazioni del gateway vengono visualizzate in `DescribeServiceRevisions`, perché i connettori cambiano tra le distribuzioni e una revisione registra ciò che è stato configurato al momento della distribuzione. Per lo stato del percorso, l'ispezione delle risorse e l'itinerario che attraversa ogni risorsa sul suo percorso, consulta [Monitora i percorsi dei gateway](gateway-monitoring.md#gateway-inspect-routes).

## Eseguire la migrazione di un servizio
<a name="gateway-update-migrate-service"></a>

**Per migrare un servizio che dispone già di un proprio sistema di bilanciamento del carico,** aggiungete un connettore gateway. Amazon ECS esegue il provisioning di una route gateway e di un nuovo nome host e non rimuove né modifica la configurazione del load balancer esistente. Entrambi i percorsi di ingresso gestiscono il traffico contemporaneamente, quindi puoi convalidare l'URL del gateway prima di rimuovere il tuo load balancer in un aggiornamento successivo.

**Per spostare un servizio da un gateway all'altro,** coordinati con il team della tua piattaforma. Poiché il connettore non specifica un ARN del gateway, la migrazione viene controllata tramite associazioni di cluster e filtri dei tipi di accesso. Questo è anche il motivo per cui un'impostazione fissa su un gateway, come lo schema, le sottoreti, la porta del listener o il protocollo, non può essere modificata sul posto e creare un gateway sostitutivo e spostarvi i servizi è l'unico modo per ottenere un valore diverso.

1. Crea e associa il gateway di destinazione. Verifica che il tipo di accesso e il VPC corrispondano al servizio e che le relative sottoreti coprano tutte le zone di disponibilità in cui vengono eseguite le attività del servizio. Un gateway che ne copre solo alcune non è idoneo e il servizio non si connetterà ad esso.

1. Ridistribuisci il servizio in modo che si connetta al gateway di destinazione. Se il gateway originale rimane idoneo, entrambi i percorsi possono coesistere durante la transizione.

1. Conferma che la connessione del servizio al gateway di destinazione sia riportata `ACTIVE`, quindi aggiorna i client che indirizzano il vecchio nome host.

1. Chiedi al team della piattaforma di dissociare il vecchio gateway quando non è più necessario. Ridistribuisci i servizi interessati per rimuovere i vecchi percorsi.

**Importante**  
La dissociazione di un gateway influisce su tutti i servizi che utilizzano tale associazione di cluster. Pianifica la modifica con altri team applicativi. Il vecchio nome host generato smette di funzionare dopo la rimozione del percorso del gateway.

## Disconnetti un servizio dai gateway
<a name="gateway-disconnect-service"></a>

**Per disconnettere un servizio da tutti i gateway**

```
aws ecs update-service \
    --cluster my-cluster \
    --service my-service \
    --gateway-connectors '[]'
```

Per mantenere solo determinati tipi di accesso al gateway, aggiorna `filters.accessTypes` invece. Durante la distribuzione successiva, Amazon ECS rimuove i percorsi per i gateway che non corrispondono più. Non è possibile utilizzare un filtro del tipo di accesso per rimuovere un gateway specifico mantenendo un altro gateway idoneo dello stesso tipo di accesso.

Quando un servizio si disconnette, Amazon ECS rimuove i percorsi di gateway e le risorse di ingresso specifiche del servizio. Il gateway e le relative associazioni di cluster rimangono disponibili per altri servizi. L'eliminazione di un servizio Amazon ECS connesso rimuove anche le relative connessioni al gateway. Se non rimane alcun servizio su un sistema di bilanciamento del carico gestito, Amazon ECS rimuove tale servizio. Un'associazione di cluster rimane nel `DISASSOCIATING` stato fino alla rimozione di tutte le route del gateway su quel cluster, quindi Amazon ECS rimuove l'associazione. Per ulteriori informazioni, consulta [Dissociare un gateway da un cluster](gateway-managing.md#gateway-disassociate-cluster).

La disconnessione ha effetto sulla distribuzione avviata, quindi il servizio continua a servire il traffico attraverso il gateway fino al termine della distribuzione.

**Importante**  
La rimozione del connettore gateway rende il servizio inaccessibile tramite i relativi nomi host del gateway dopo la rimozione delle route corrispondenti. Assicurati che il servizio abbia un altro percorso di ingresso se deve rimanere accessibile.