

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

# In che modo Amazon ECS colloca le attività sulle istanze dei container
<a name="task-placement"></a>

È possibile utilizzare il posizionamento delle attività per configurare Amazon ECS in modo da collocare le tue attività su istanze di container che soddisfano determinati criteri, ad esempio una zona di disponibilità o un tipo di istanza.

Di seguito sono riportati i componenti per il posizionamento delle attività:
+ Strategia di posizionamento delle attività: l'algoritmo per selezionare istanze di container per il posizionamento delle attività o attività per il termine. Ad esempio, Amazon ECS è in grado di selezionare istanze di container a caso oppure in modo tale che i processi vengano distribuiti in modo uniforme all'interno di un gruppo di istanze.
+ Gruppo di attività: un gruppo di attività correlate, ad esempio attività di database.
+ Vincolo di posizionamento delle attività: si tratta di regole che devono essere soddisfatte per inserire un'attività su un'istanza di container. Se il vincolo non viene soddisfatto, l'attività non viene inserita e rimane nello stato `PENDING`. Ad esempio, è possibile utilizzare un vincolo per posizionare attività solo su un particolare tipo di istanza. 

Amazon ECS dispone di algoritmi differenti per le diverse opzioni di capacità. 

## Istanze gestite da Amazon ECS
<a name="managed-instances-launch-type"></a>

Per le attività eseguite su Istanze gestite da Amazon, Amazon ECS deve determinare dove posizionare l'attività e, quando si riduce verticalmente il numero di attività, quali attività terminare. Amazon ECS effettua questa determinazione in base ai requisiti dell'istanza specificati nel modello di avvio del provider di capacità, ai requisiti specificati nella definizione dell'attività come CPU e memoria e ai vincoli di posizionamento delle attività.

**Nota**  
Le istanze gestite da Amazon ECS non supportano strategie di posizionamento delle attività. Amazon ECS farà del suo meglio per distribuire le attività tra zone di disponibilità accessibili.

Quando Amazon ECS posiziona i processi, utilizza la seguente procedura per selezionare le istanze di container:

1. Identificazione delle istanze di container che soddisfano i requisiti di memoria, CPU, GPU e porta nella definizione di attività.

1. Identificazione delle istanze di container che soddisfano i vincoli di posizionamento delle attività.

1. Identificazione delle istanze di container che soddisfano i requisiti di istanza specificati nel modello di lancio del provider di capacità.

1. Selezione delle istanze di container per il posizionamento delle attività.

## EC2
<a name="ec2-launch-type"></a>

Per attività che utilizzano il tipo di lancio EC2, Amazon ECS deve determinare dove posizionare il processo in base ai requisiti specificati nella definizione di attività, ad esempio relativamente a memoria e CPU. Analogamente, quando riduci orizzontalmente il conteggio di processi, Amazon ECS deve determinare quali processi terminare. Puoi applicare vincoli e strategie di posizionamento dei processi per personalizzare il modo in cui Amazon ECS posizione e termina i processi. 

Le strategie di posizionamento dei processi di default dipendono dal fatto che i processi vengano eseguiti manualmente (attività indipendenti) o all'interno di un servizio. Per le attività eseguite come parte di un servizio Amazon ECS, la strategia di posizionamento delle attività è `spread` e utilizza `attribute:ecs.availability-zone`. Non è presente un vincolo predefinito per il posizionamento delle attività non nei servizi. Per ulteriori informazioni, consultare [Pianificare i container su Amazon ECS](scheduling_tasks.md).

**Nota**  
Le strategie di posizionamento dei processi si basano sul miglior tentativo. Amazon ECS prova a posizionare i processi anche quando l'opzione di posizionamento ottimale non è disponibile. Tuttavia, i vincoli di posizionamento delle attività sono vincolanti, per cui potrebbero impedire il posizionamento delle attività. 

Puoi utilizzare strategie e vincoli di posizionamento delle attività contemporaneamente. Ad esempio, puoi utilizzare una strategia di posizionamento e un vincolo di posizionamento delle attività per distribuire le attività all'interno di zone di disponibilità e raggrupparle in bin packing in base alla memoria all'interno di ciascuna zona di disponibilità, ma solo per quanto riguarda le istanze G2.

Quando Amazon ECS posiziona i processi, utilizza la seguente procedura per selezionare le istanze di container:

1. Identificazione delle istanze di container che soddisfano i requisiti di memoria, CPU, GPU e porta nella definizione di attività.

1. Identificazione delle istanze di container che soddisfano i vincoli di posizionamento delle attività.

1. Identificazione delle istanze di container che soddisfano le strategie di posizionamento delle attività.

1. Selezione delle istanze di container per il posizionamento delle attività.

## Fargate
<a name="fargate-launch-type"></a>

Per attività con Fargate, le strategie e i vincoli di posizionamento dei processi non sono supportati. Fargate farà del suo meglio per distribuire le attività tra zone di disponibilità accessibili. Se il provider di capacità include sia Fargate che Fargate Spot, il comportamento di distribuzione sarà indipendente per ogni provider. 

# Dimensionamento automatico di Istanze gestite da Amazon ECS e posizionamento delle attività
<a name="managed-instance-auto-scaling"></a>

Le istanze gestite da Amazon ECS utilizzano algoritmi intelligenti per scalare automaticamente la capacità del cluster e posizionare le attività in modo efficiente nell'infrastruttura. Capire come funzionano questi algoritmi aiuta a ottimizzare le configurazioni dei servizi e a risolvere i problemi di posizionamento.

## Algoritmo di posizionamento delle attività
<a name="managed-instance-task-placement-algorithm"></a>

Le istanze gestite da Amazon ECS utilizzano un sofisticato algoritmo di posizionamento che bilancia disponibilità, utilizzo delle risorse e requisiti di rete durante la pianificazione delle attività.

### Diffusione della zona di disponibilità
<a name="managed-instance-az-spread-behavior"></a>

Per impostazione predefinita, le istanze gestite da Amazon ECS danno priorità alla disponibilità distribuendo le attività su più zone di disponibilità:
+ Per i servizi con più attività, le istanze gestite da Amazon ECS garantiscono la distribuzione su almeno 3 istanze in diverse zone di disponibilità, quando possibile.
+ Questo comportamento fornisce tolleranza ai guasti, ma può comportare un minore utilizzo delle risorse per istanza
+ La diffusione della zona di disponibilità ha la precedenza sull'ottimizzazione del bin packing

### Comportamento di bin packing
<a name="managed-instance-bin-packing"></a>

Sebbene le istanze gestite da Amazon ECS siano in grado di eseguire il bin packing per massimizzare l'utilizzo delle risorse, questo comportamento è influenzato dalla configurazione di rete:
+ Per eseguire il bin packing, configurare il servizio in modo che utilizzi una singola sottorete
+ Le configurazioni a più sottoreti danno priorità alla distribuzione delle zone di disponibilità rispetto alla densità delle risorse
+ Il bin packing è più probabile durante l'avvio iniziale del servizio che durante gli eventi di dimensionamento

### Considerazioni sulla densità dell'ENI
<a name="managed-instance-eni-density"></a>

Per i servizi che utilizzano la modalità di rete `awsvpc`, le istanze gestite da Amazon ECS considerano la densità dell'interfaccia di rete elastica (ENI) quando prendono decisioni di posizionamento:
+ Ogni attività in modalità `awsvpc` richiede un ENI dedicato
+ I tipi di istanza hanno limiti ENI diversi che influiscono sulla densità delle attività
+ Le istanze gestite da Amazon ECS tengono conto della disponibilità ENI durante la selezione delle istanze di destinazione

**Nota**  
Vengono continuamente apportati miglioramenti ai calcoli della densità ENI per ottimizzare le decisioni di posizionamento.

## Logica decisionale del provider di capacità
<a name="managed-instance-capacity-provider-decisions"></a>

I provider di capacità delle istanze gestite da Amazon ECS prendono decisioni di scalabilità e posizionamento in base a diversi fattori:

Requisiti per le risorse  
Requisiti di CPU, memoria e rete per le attività in sospeso

Disponibilità delle istanze  
Capacità e utilizzo attuali tra le istanze esistenti

Vincoli di rete  
Configurazione della sottorete e disponibilità ENI

Distribuzione delle zone di disponibilità  
Mantenimento della tolleranza ai guasti in più zone di disponibilità

## Opzioni di configurazione
<a name="managed-instance-configuration-options"></a>

### Strategia di selezione delle sottoreti
<a name="managed-instance-subnet-strategy"></a>

La configurazione della sottorete influisce in modo significativo sul comportamento di posizionamento delle attività:

Più sottoreti (impostazione predefinita)  
Assegna la priorità alla distribuzione della zona di disponibilità per un'elevata disponibilità  
Può comportare un minore utilizzo di risorse per istanza  
Consigliato per carichi di lavoro di produzione che richiedono tolleranza ai guasti

Sottorete singola  
Consente il bin packing per un maggiore utilizzo delle risorse  
Riduce la tolleranza ai guasti concentrando le attività in un'unica zona di disponibilità  
Adatto a carichi di lavoro di sviluppo o ottimizzati in termini di costi

### Considerazioni sulla modalità di rete
<a name="managed-instance-network-mode-considerations"></a>

La modalità di rete selezionata influisce sulle decisioni di posizionamento:
+ Modalità `awsvpc`: ogni attività richiede un ENI dedicato, limitando la densità delle attività per istanza
+ Modalità `host`: le attività utilizzano direttamente la rete dell'host, con il posizionamento basato principalmente sulla disponibilità delle risorse

### Considerazioni sull'architettura della CPU
<a name="managed-instance-cpu-architecture-considerations"></a>

Quanto `cpuArchitecture` specificato nella definizione dell'attività viene utilizzato per collocare le attività su un'architettura specifica. Se non specifichi un`cpuArchitecture`, Amazon ECS proverà a collocare le attività su qualsiasi architettura CPU disponibile in base alla configurazione del provider di capacità. È possibile specificare `X86_64` o `ARM64`.

## Risoluzione dei problemi di posizionamento delle attività
<a name="managed-instance-troubleshooting-placement"></a>

### Schemi comuni di posizionamento
<a name="managed-instance-common-placement-patterns"></a>

La comprensione degli schemi di posizionamento previsti aiuta a distinguere il comportamento normale dai potenziali problemi:

Distribuzione sparsa  
Attività distribuite su più istanze con utilizzo parziale  
Comportamento normale quando si utilizzano più sottoreti  
Indica la priorità della disponibilità rispetto all'efficienza delle risorse

Posizionamento concentrato  
Attività multiple assegnate a un minor numero di istanze con un utilizzo più elevato  
Previsto quando si utilizza la configurazione a sottorete singola  
Può verificarsi durante l'avvio iniziale del servizio

Distribuzione irregolare  
Alcune istanze sono molto utilizzate mentre altre rimangono sottoutilizzate  
Può indicare limiti ENI o vincoli di risorse  
Valutare la possibilità di rivedere i tipi di istanza e la configurazione

### Ottimizzazione del comportamento di posizionamento
<a name="managed-instance-placement-optimization"></a>

Per ottimizzare il posizionamento delle attività in base a esigenze specifiche:

1. Valutare i requisiti di disponibilità rispetto alle esigenze di ottimizzazione dei costi

1. Scegliere la configurazione di sottorete appropriata in base alle priorità

1. Selezionare i tipi di istanza con una capacità ENI adeguata per la modalità di rete

1. Monitorare i modelli di posizionamento e regolare la configurazione secondo necessità

## Best practice
<a name="managed-instance-best-practices"></a>
+ **Per carichi di lavoro di produzione**: utilizzare più sottoreti in diverse zone di disponibilità per garantire un'elevata disponibilità, accettando il compromesso in termini di utilizzo delle risorse
+ **Per lo sviluppo o il test**: prendere in considerazione la configurazione di una singola sottorete per massimizzare l'utilizzo delle risorse e ridurre i costi
+ **Per la modalità `awsvpc`**: scegliere i tipi di istanza con una capacità ENI sufficiente per evitare vincoli di posizionamento
+ **Per l'ottimizzazione dei costi**: monitorare i modelli di utilizzo e regolare la configurazione del servizio per bilanciare disponibilità ed efficienza
+ **Per la risoluzione dei problemi**: esaminare la configurazione della sottorete e la modalità di rete quando si esaminano schemi di posizionamento imprevisti

# Usare le strategie per definire il posizionamento delle attività su Amazon ECS
<a name="task-placement-strategies"></a>

Per attività che utilizzano il tipo di lancio EC2, Amazon ECS deve determinare dove posizionare il processo in base ai requisiti specificati nella definizione di attività, ad esempio relativamente a memoria e CPU. Analogamente, quando riduci orizzontalmente il conteggio di processi, Amazon ECS deve determinare quali processi terminare. Puoi applicare vincoli e strategie di posizionamento dei processi per personalizzare il modo in cui Amazon ECS posizione e termina i processi. 

Le strategie di posizionamento dei processi di default dipendono dal fatto che i processi vengano eseguiti manualmente (attività indipendenti) o all'interno di un servizio. Per le attività eseguite come parte di un servizio Amazon ECS, la strategia di posizionamento delle attività è `spread` e utilizza `attribute:ecs.availability-zone`. Non è presente un vincolo predefinito per il posizionamento delle attività non nei servizi. Per ulteriori informazioni, consultare [Pianificare i container su Amazon ECS](scheduling_tasks.md).

**Nota**  
Le strategie di posizionamento dei processi si basano sul miglior tentativo. Amazon ECS prova a posizionare i processi anche quando l'opzione di posizionamento ottimale non è disponibile. Tuttavia, i vincoli di posizionamento delle attività sono vincolanti, per cui potrebbero impedire il posizionamento delle attività. 

Puoi utilizzare strategie e vincoli di posizionamento delle attività contemporaneamente. Ad esempio, puoi utilizzare una strategia di posizionamento e un vincolo di posizionamento delle attività per distribuire le attività all'interno di zone di disponibilità e raggrupparle in bin packing in base alla memoria all'interno di ciascuna zona di disponibilità, ma solo per quanto riguarda le istanze G2.

Quando Amazon ECS posiziona i processi, utilizza la seguente procedura per selezionare le istanze di container:

1. Identificazione delle istanze di container che soddisfano i requisiti di memoria, CPU, GPU e porta nella definizione di attività.

1. Identificazione delle istanze di container che soddisfano i vincoli di posizionamento delle attività.

1. Identificazione delle istanze di container che soddisfano le strategie di posizionamento delle attività.

1. Selezione delle istanze di container per il posizionamento delle attività.

È possibile specificare le strategie di posizionamento delle attività nella definizione del servizio o la definizione delle attività utilizzando il parametro `placementStrategy`.

```
"placementStrategy": [
    {
        "field": "The field to apply the placement strategy against",
        "type": "The placement strategy to use"
    }
]
```

Puoi specificare le strategie quando esegui un'attività ([RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html)), crei un nuovo servizio ([CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html)) o aggiorni un servizio esistente ([UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)).

Nella tabella seguente vengono descritti i tipi e i campi disponibili.


| tipo | Valori di campo validi | 
| --- | --- | 
| binpack Le attività vengono posizionate sulle istanze di container in modo da lasciare la quantità minima di CPU o memoria inutilizzata. Questa strategia riduce al minimo il numero di istanze di container in uso. Quando viene utilizzata questa strategia e viene intrapresa un'operazione di riduzione orizzontale, Amazon ECS termina i processi. Esegui questa operazione in base alla quantità di risorse lasciate sull'istanza di container dopo che il processo è stato terminato. L'istanza di container con il maggior numero di risorse disponibili rimanenti dopo la fine del processo avrà il processo terminato. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/task-placement-strategies.html)  | 
| random Le attività vengono posizionate in modo casuale. | Non utilizzato | 
| spreadLe attività vengono posizionate in modo uniforme in base al valore specificato. Le attività di servizio vengono distribuite in base alle attività di tale servizio. Attività standalone sono distribuite sulle attività dallo stesso gruppo di attività. Per ulteriori informazioni sui gruppi di processi, consulta [Attività Amazon ECS relative al gruppo](task-groups.md). Quando la strategia `spread` viene utilizzata e viene intrapresa un'operazione di riduzione orizzontale, Amazon ECS seleziona i processi da terminare che mantengono un equilibrio in tutte le zone di disponibilità. All'interno di una zona di disponibilità, i processi vengono selezionati in modo casuale. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/task-placement-strategies.html)  | 

Le strategie di posizionamento delle attività possono essere aggiornate anche per i servizi esistenti. Per ulteriori informazioni, consultare [In che modo Amazon ECS colloca le attività sulle istanze dei container](task-placement.md).

Puoi creare una strategia di posizionamento delle attività che utilizzi più strategie tramite la creazione di una serie di strategie nell'ordine in cui desideri che vengano eseguite. Ad esempio, se desideri distribuire le attività tra le zone di disponibilità e raggrupparle in bin packing in base alla memoria all'interno di ciascuna zona di disponibilità, specifica la strategia della zona di disponibilità seguita dalla strategia della memoria. Per le strategie di esempio, consulta [Strategie di collocazione di esempio delle attività di Amazon ECS](strategy-examples.md).

# Strategie di collocazione di esempio delle attività di Amazon ECS
<a name="strategy-examples"></a>

È possibile specificare le strategie di posizionamento delle attività con le seguenti azioni: [CreateService[UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html), e [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html).

**Topics**
+ [

## Distribuire le attività in modo uniforme all'interno delle zone di disponibilità
](#even-az)
+ [

## Distribuire le attività in modo uniforme su tutte le istanze
](#even-instance)
+ [

## Raggruppare le attività in bin packing in base alla memoria
](#binpack)
+ [

## Posizionare le attività casualmente
](#random)
+ [

## Distribuire le attività in modo uniforme all'interno delle zone di disponibilità e distribuire le attività all'interno delle istanze in ciascuna zona di disponibilità
](#az-instance)
+ [

## Distribuire le attività in modo uniforme all'interno delle zone di disponibilità e raggruppare le attività in bin packing in base alla memoria all'interno di ciascuna zona di disponibilità
](#az-memory)
+ [

## Distribuire le attività in modo uniforme tra le istanze e raggruppare le attività in bin packing in base alla memoria
](#instance-memory)

## Distribuire le attività in modo uniforme all'interno delle zone di disponibilità
<a name="even-az"></a>

La strategia seguente distribuisce le attività in modo uniforme all'interno delle zone di disponibilità.

```
"placementStrategy": [
    {
        "field": "attribute:ecs.availability-zone",
        "type": "spread"
    }
]
```

## Distribuire le attività in modo uniforme su tutte le istanze
<a name="even-instance"></a>

La strategia seguente distribuisce le attività in modo uniforme all'interno di tutte le istanze.

```
"placementStrategy": [
    {
        "field": "instanceId",
        "type": "spread"
    }
]
```

## Raggruppare le attività in bin packing in base alla memoria
<a name="binpack"></a>

La strategia seguente raggruppa le attività in bin packing in base alla memoria.

```
"placementStrategy": [
    {
        "field": "memory",
        "type": "binpack"
    }
]
```

## Posizionare le attività casualmente
<a name="random"></a>

La strategia seguente posiziona le attività in modo casuale.

```
"placementStrategy": [
    {
        "type": "random"
    }
]
```

## Distribuire le attività in modo uniforme all'interno delle zone di disponibilità e distribuire le attività all'interno delle istanze in ciascuna zona di disponibilità
<a name="az-instance"></a>

La strategia seguente distribuisce le attività in modo uniforme all'interno delle zone di disponibilità, quindi distribuisce le attività all'interno delle istanze in ciascuna zona di disponibilità.

```
"placementStrategy": [
    {
        "field": "attribute:ecs.availability-zone",
        "type": "spread"
    },
    {
        "field": "instanceId",
        "type": "spread"
    }
]
```

## Distribuire le attività in modo uniforme all'interno delle zone di disponibilità e raggruppare le attività in bin packing in base alla memoria all'interno di ciascuna zona di disponibilità
<a name="az-memory"></a>

La strategia seguente distribuisce le attività in modo uniforme all'interno delle zone di disponibilità, quindi raggruppa le attività in bin packing in base alla memoria all'interno di ciascuna zona di disponibilità.

```
"placementStrategy": [
    {
        "field": "attribute:ecs.availability-zone",
        "type": "spread"
    },
    {
        "field": "memory",
        "type": "binpack"
    }
]
```

## Distribuire le attività in modo uniforme tra le istanze e raggruppare le attività in bin packing in base alla memoria
<a name="instance-memory"></a>

La seguente strategia distribuisce le attività in modo uniforme tra le istanze, quindi raggruppa le attività in bin packing in base alla memoria all'interno di ciascuna istanza. 

```
"placementStrategy": [
    {
        "field": "instanceId",
        "type": "spread"
    },
    {
        "field": "memory",
        "type": "binpack"
    }
]
```

# Attività Amazon ECS relative al gruppo
<a name="task-groups"></a>

È possibile identificare una serie di attività correlate e inserirle in un gruppo di attività. Tutti i processi con lo stesso nome del gruppo di processi sono considerati come un set quando si utilizza la strategia di posizionamento dei processi `spread`. Ad esempio, supponiamo che stia eseguendo diverse applicazioni in un unico cluster, come database e server Web. Per assicurarti che i database siano bilanciati all'interno delle zone di disponibilità, aggiungili a un gruppo di processi denominato `databases`, quindi utilizza la strategia di posizionamento dei processi `spread`. Per ulteriori informazioni, consultare [Usare le strategie per definire il posizionamento delle attività su Amazon ECS](task-placement-strategies.md).

I gruppi di processi possono essere utilizzati anche come vincolo di posizionamento dei processi. Quando specifichi un gruppo di attività nel vincolo `memberOf`, le attività vengono inviate solo alle istanze di container presenti nel gruppo di attività specificato. Per vedere un esempio, consulta [Vincoli di posizionamento di esempio delle attività di Amazon ECS](constraint-examples.md).

Di default, i processi autonomi utilizzano il nome della famiglia della definizione di attività (ad esempio, `family:my-task-definition`) come nome del gruppo di processi se non è specificato un nome di gruppo di processi personalizzato. I processi avviati come parte di un servizio utilizzano il nome del servizio come nome del gruppo di processi e non possono essere modificati.

Si applicano i seguenti requisiti per il gruppo di attività.
+ Il nome di un gruppo di processi deve essere al massimo di 255 caratteri.
+ Ciascuna attività può trovarsi in un solo gruppo.
+ Dopo l'avvio di un processo, non è possibile modificarne il gruppo di attività.

# Definisci quali istanze di container utilizza Amazon ECS per le attività
<a name="task-placement-constraints"></a>

Un vincolo di posizionamento delle attività è una regola relativa a un'istanza di container che Amazon ECS utilizza per determinare se l'attività può essere eseguita sull'istanza. Almeno un'istanza di container deve corrispondere al vincolo. Se non sono presenti istanze corrispondenti al vincolo, l'attività rimane in uno stato `PENDING`. Quando crei un nuovo servizio o ne aggiorni uno esistente, puoi specificare i vincoli di posizionamento delle attività per le attività del servizio. 

È possibile specificare i vincoli di posizionamento delle attività nella definizione del servizio, nella definizione delle attività o nelle attività utilizzando il parametro `placementConstraint`.

```
"placementConstraints": [
    {
        "expression": "The expression that defines the task placement constraints",
        "type": "The placement constraint type to use"
    }
]
```

Nella tabella seguente viene descritta la modalità di utilizzo di questi parametri.


| Tipo di vincolo | Può essere specificato quando | 
| --- | --- | 
| distinctInstancePosizionamento di ciascuna attività attiva in una istanza di container differente.Amazon ECS esamina lo stato desiderato delle attività per il posizionamento delle stesse. Ad esempio, se lo stato desiderato dell'attività esistente è `STOPPED`, (ma l'ultimo stato non lo è), una nuova attività in arrivo può essere posizionata nella stessa istanza nonostante il vincolo di posizionamento `distinctInstance`. Pertanto, è possibile che vengano visualizzate 2 attività con l'ultimo stato di `RUNNING` nella stessa istanza. Consigliamo ai clienti che cercano un forte isolamento per le proprie attività di utilizzare Fargate. Fargate esegue ogni attività in un ambiente di virtualizzazione hardware. Ciò garantisce che tali carichi di lavoro containerizzati non condividono le interfacce di rete, lo spazio di archiviazione temporaneo, la CPU o la memoria di Fargate con altre attività. Per ulteriori informazioni, vedere [Panoramica sulla sicurezza di AWS Fargate](https://d1.awsstatic.com/whitepapers/AWS_Fargate_Security_Overview_Whitepaper.pdf). |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/task-placement-constraints.html)  | 
| memberOfPosizionamento delle attività in istanze di container che soddisfano un'espressione.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/task-placement-constraints.html) | 

Quando si utilizza il tipo di vincolo `memberOf`, è possibile creare un'espressione utilizzando il linguaggio di interrogazione del cluster che definisce le istanze di container in cui Amazon ECS può posizionare le attività. L'espressione è un modo per raggruppare le istanze di container in base agli attributi. L'espressione rientra nel parametro `expression ` di `placementConstraint`.

## Attributi delle istanze di container di Amazon ECS
<a name="attributes"></a>

Puoi aggiungere metadati personalizzati alle istanze di container, note come *attributi*. Ogni attributo ha un nome e un valore di stringa facoltativo. Puoi utilizzare gli attributi integrati offerti da Amazon ECS oppure definire attributi personalizzati.

Le sezioni seguenti contengono attributi incorporati, facoltativi e personalizzati di esempio.

### Attributi integrati
<a name="ecs-automatic-attributes"></a>

Amazon ECS applica automaticamente i seguenti attributi alle istanze di container.

`ecs.ami-id`  
L'ID dell'AMI utilizzato per avviare l'istanza. Un valore di esempio per questo attributo è `ami-1234abcd`.

`ecs.availability-zone`  
La zona di disponibilità dell'istanza. Un valore di esempio per questo attributo è `us-east-1a`.

`ecs.instance-type`  
Il tipo di istanza dell'istanza. Un valore di esempio per questo attributo è `g2.2xlarge`.

`ecs.os-type`  
Il sistema operativo dell'istanza. I valori possibili per questo attributo sono `linux` e `windows`.

`ecs.os-family`  
La versione del sistema operativo dell'istanza.  
Per le istanze Linux, il valore valido è `LINUX`. Per le istanze Windows, ECS imposta il valore nel formato `WINDOWS_SERVER_<OS_Release>_<FULL or CORE>`. I valori validi sono `WINDOWS_SERVER_2022_FULL`, `WINDOWS_SERVER_2022_CORE`, `WINDOWS_SERVER_20H2_CORE`, `WINDOWS_SERVER_2019_FULL`, `WINDOWS_SERVER_2019_CORE` e `WINDOWS_SERVER_2016_FULL`.  
Questo è importante per i contenitori Windows e Windows containers on AWS Fargate perché la versione del sistema operativo di ogni contenitore Windows deve corrispondere a quella dell'host. Se la versione Windows dell'immagine del container è diversa da quella dell'host, il container non si avvia. Per ulteriori informazioni, consultare [Compatibilità delle versioni dei container Windows](https://learn.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-2022%2Cwindows-11) sul sito Web della documentazione Microsoft.  
Se il cluster esegue più versioni di Windows, puoi assicurarti che un'attività venga posizionata su un'istanza EC2 in esecuzione sulla stessa versione utilizzando il vincolo di posizionamento: `memberOf(attribute:ecs.os-family == WINDOWS_SERVER_<OS_Release>_<FULL or CORE>)`. Per ulteriori informazioni, consultare [Recupero dei metadati dell'AMI Windows ottimizzata per Amazon ECS](retrieve-ecs-optimized_windows_AMI.md).

`ecs.cpu-architecture`  
Architettura della CPU per l'istanza. I valori di esempio per questo attributo sono `x86_64` e `arm64`.

`ecs.vpc-id`  
VPC in cui è stata avviata l'istanza. Un valore di esempio per questo attributo è `vpc-1234abcd`.

`ecs.subnet-id`  
La sottorete utilizzata dall'istanza. Un valore di esempio per questo attributo è `subnet-1234abcd`.

**Nota**  
Le istanze gestite da Amazon ECS supportano il seguente sottoinsieme di attributi:  
`ecs.subnet-id`
`ecs.availability-zone`
`ecs.instance-type`
`ecs.cpu-architecture`

### Attributi facoltativi
<a name="ecs-optional-attributes"></a>

Amazon ECS può aggiungere i seguenti attributi alle istanze di container.

`ecs.awsvpc-trunk-id`  
Se questo attributo esiste, l'istanza dispone di un'interfaccia di rete trunk. Per ulteriori informazioni, consultare [Aumento delle interfacce di rete delle istanze di container Linux di Amazon ECS](container-instance-eni.md).

`ecs.outpost-arn`  
Se questo attributo esiste, contiene l'Amazon Resource Name (ARN) dell'Outpost. Per ulteriori informazioni, consultare [Amazon Elastic Container Service su AWS Outposts](using-outposts.md).

`ecs.capability.external`  
Se questo attributo esiste, l'istanza viene identificata come un'istanza esterna. Per ulteriori informazioni, consultare [Cluster Amazon ECS per istanze esterne](ecs-anywhere.md).

### Attributi personalizzati
<a name="ecs-custom-attributes"></a>

È possibile applicare attributi personalizzati alle istanze di container. Ad esempio, è possibile definire un attributo con il nome "stack" e un valore di "prod".

Quando si specificano attributi personalizzati, è necessario considerare quanto segue.
+ Il `name` può contenere un massimo di 128 caratteri e può contenere lettere (maiuscole e minuscole), numeri, trattini, caratteri di sottolineatura, barre, barre inverse o punti.
+ Il `value` può contenere un massimo di 128 caratteri e può contenere lettere (maiuscole e minuscole), numeri, trattini, caratteri di sottolineatura, punti, chiocciola (@), barre, barre inverse, due punti o spazi. Il valore non può contenere spazi iniziali o finali.

# Creare espressioni per definire istanze di container per le attività di Amazon ECS
<a name="cluster-query-language"></a>

Le query di cluster sono espressioni che consentono di raggruppare gli oggetti. Ad esempio, puoi raggruppare le istanze di container per attributi, ad esempio la zona di disponibilità, il tipo di istanza o metadati personalizzati. Per ulteriori informazioni, consultare [Attributi delle istanze di container di Amazon ECS](task-placement-constraints.md#attributes).

Dopo aver definito un gruppo di istanze di container, potrai personalizzare Amazon ECS per posizionare i processi su istanze di container basate sul gruppo. Per ulteriori informazioni, consultare [Esecuzione di un'applicazione come attività Amazon ECS](standalone-task-create.md) e [Creazione di un'implementazione di aggiornamenti continui di Amazon ECS](create-service-console-v2.md). Puoi inoltre applicare un filtro di gruppo per elencare le istanze di container.

## Sintassi delle espressioni
<a name="expression-syntax"></a>

Le espressioni presentano la sintassi seguente:

```
subject operator [argument]
```

**Subject**  
L'attributo o il campo da valutare.

`agentConnected`  
Seleziona le istanze di container in base allo stato di connessione dell'agente del container di Amazon ECS. È possibile usare questo filtro per cercare le istanze con agenti di container che sono disconnessi.  
Operatori validi: equals (==), not\$1equals (\$1=), in, not\$1in (\$1in), matches (=\$1), not\$1matches (\$1\$1)

`agentVersion`  
Seleziona le istanze di container in base alla versione dell'agente del container di Amazon ECS. È possibile usare questo filtro per trovare le istanze che eseguono le versioni obsolete dell'agente del container Amazon ECS.  
Operatori validi: equals (==), not\$1equals (\$1=), greater\$1than (>), greater\$1than\$1equal (>=), less\$1than (<), less\$1than\$1equal (<=)

`attribute:attribute-name`  
Seleziona le istanze di container per attributo. Per ulteriori informazioni, consultare [Attributi delle istanze di container di Amazon ECS](task-placement-constraints.md#attributes).

`ec2InstanceId`  
Seleziona le istanze di container in base al loro ID istanza di Amazon EC2.  
Operatori validi: equals (==), not\$1equals (\$1=), in, not\$1in (\$1in), matches (=\$1), not\$1matches (\$1\$1)

`registeredAt`  
Seleziona le istanze di container in base alla loro data di registrazione dell'istanza di container. È possibile usare questo filtro per individuare le istanze appena registrate o le istanze molto vecchie.  
Operatori validi: equals (==), not\$1equals (\$1=), greater\$1than (>), greater\$1than\$1equal (>=), less\$1than (<), less\$1than\$1equal (<=)  
Formati di data validi: 2018-06-18T22:28:28\$100:00, 2018-06-18T22:28:28Z, 2018-06-18T22:28:28, 2018-06-18

`runningTasksCount`  
Seleziona le istanze di container in base al numero di attività in esecuzione. È possibile usare questo filtro per trovare le istanze che sono vuote o quasi vuote (poche attività in esecuzione su di esse).  
Operatori validi: equals (==), not\$1equals (\$1=), greater\$1than (>), greater\$1than\$1equal (>=), less\$1than (<), less\$1than\$1equal (<=)

`task:group`  
Seleziona le istanze di container per gruppo di attività. Per ulteriori informazioni, consultare [Attività Amazon ECS relative al gruppo](task-groups.md).

**Operatore**  
L'operatore di confronto. Sono supportati i seguenti operatori.


|  Operatore  |  Description  | 
| --- | --- | 
|  ==, equals  |  Uguaglianza stringhe  | 
|  \$1=, not\$1equals  |  Disuguaglianza stringhe  | 
|  >, greater\$1than  |  Maggiore di  | 
|  >=, greater\$1than\$1equal  |  Maggiore di o uguale a  | 
|  <, less\$1than  |  Minore di  | 
|  <=, less\$1than\$1equal  |  Minore di o uguale a  | 
|  exists  |  Il soggetto esiste  | 
|  \$1exists, not\$1exists  |  Il soggetto non esiste  | 
|  in  |  Il valore è nell'elenco di argomenti  | 
|  \$1in, not\$1in  |  Il valore non è nell'elenco di argomenti  | 
|  =\$1, matches  |  Corrispondenza modelli  | 
|  \$1\$1, not\$1matches  |  Mancata corrispondenza modelli  | 

**Nota**  
Una singola espressione non può contenere parentesi. Tuttavia, le parentesi possono essere utilizzate per specificare la precedenza in espressioni composte.

**Argomento**  
Per molti operatori, l'argomento è un valore letterale.

Gli operatori `in` e `not_in` prevedono come argomento un elenco di argomenti. È necessario specificare un elenco di argomenti nel modo seguente:

```
[argument1, argument2, ..., argumentN]
```

Gli operatori matches e not\$1matches prevedono un argomento conforme alla sintassi di espressione regolare di Java. Per ulteriori informazioni, consultare [java.util.regex.Pattern](http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html).

**Espressioni composte**

Puoi combinare espressioni tramite gli operatori booleani seguenti:
+ &&, e
+ \$1\$1, oppure
+ \$1, not

Puoi specificare la precedenza utilizzando le parentesi:

```
(expression1 or expression2) and expression3
```

## Espressioni di esempio
<a name="expression-examples"></a>

Vengono riportate di seguito espressioni di esempio.

**Esempio: uguaglianza stringhe**  
L'espressione seguente seleziona le istanze con il tipo di istanza specificato.

```
attribute:ecs.instance-type == t2.small
```

**Esempio: elenco di argomenti**  
L'espressione seguente seleziona le istanze nelle zone di disponibilità us-east-1a o us-east-1b.

```
attribute:ecs.availability-zone in [us-east-1a, us-east-1b]
```

**Esempio: espressione composta**  
L'espressione composta seguente seleziona le istanze G2 che non si trovano nella zona di disponibilità us-east-1d.

```
attribute:ecs.instance-type =~ g2.* and attribute:ecs.availability-zone != us-east-1d
```

**Esempio: affinità di attività**  
L'espressione seguente seleziona le istanze che non ospitano le attività nel gruppo `service:production`.

```
task:group == service:production
```

**Esempio:non affinità di attività**  
L'espressione seguente seleziona le istanze che non ospitano i processi nel gruppo di database.

```
not(task:group == database)
```

**Esempio: conteggio dell'attività in esecuzione**  
L'espressione seguente seleziona le istanze sulle quali è in esecuzione solo un'attività.

```
runningTasksCount == 1
```

**Esempio: Versione dell'agente del container di Amazon ECS**  
L'espressione seguente seleziona le istanze che eseguono una versione dell' agente del container inferiore a 1.14.5.

```
agentVersion < 1.14.5
```

**Esempio: tempo di registrazione dell'istanza**  
L'espressione seguente seleziona le istanze che sono state registrate prima del 13 febbraio 2018.

```
registeredAt < 2018-02-13
```

**Esempio: ID dell'istanza Amazon EC2**  
L'espressione seguente seleziona le istanze con la seguente istanza Amazon EC2. IDs

```
ec2InstanceId in ['i-abcd1234', 'i-wxyx7890']
```

# Vincoli di posizionamento di esempio delle attività di Amazon ECS
<a name="constraint-examples"></a>

Di seguito sono elencati esempi di vincoli del posizionamento delle attività.

In questo esempio viene utilizzata la restrizione `memberOf` per posizionare attività sulle istanze t2. Può essere specificata con le seguenti azioni: [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html), [UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html), [RegisterTaskDefinition](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RegisterTaskDefinition.html)e. [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html)

```
"placementConstraints": [
    {
        "expression": "attribute:ecs.instance-type =~ t2.*",
        "type": "memberOf"
    }
]
```

L'esempio utilizza il vincolo `memberOf` per posizionare le attività di replica su istanze con attività nel gruppo di attività `daemon-service` del servizio daemon, rispettando tutte le strategie di posizionamento eventualmente specificate. Questo vincolo garantisce che le attività del servizio daemon vengano posizionate sull'istanza EC2 prima delle attività di replica del servizio.

Sostituisci `daemon-service` con il nome del servizio daemon.

```
"placementConstraints": [
    {
        "expression": "task:group == service:daemon-service",
        "type": "memberOf"
    }
]
```

Nell'esempio è utilizzato il vincolo `memberOf` per posizionare i processi su istanze con altri processi nel gruppo di processi `databases`, rispettando tutte le strategie di posizionamento dei processi che sono eventualmente specificate. Per ulteriori informazioni sui gruppi di processi, consulta [Attività Amazon ECS relative al gruppo](task-groups.md). Può essere specificato con le seguenti azioni: [CreateService[UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html), [RegisterTaskDefinition](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RegisterTaskDefinition.html), e [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html).

```
"placementConstraints": [
    {
        "expression": "task:group == databases",
        "type": "memberOf"
    }
]
```

La restrizione `distinctInstance` posiziona ciascuna attività nel gruppo su un'istanza diversa. Può essere specificato con le seguenti azioni: [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html), [UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html), e [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html)

Amazon ECS esamina lo stato desiderato delle attività per il posizionamento delle stesse. Ad esempio, se lo stato desiderato dell'attività esistente è `STOPPED`, (ma l'ultimo stato non lo è), una nuova attività in arrivo può essere posizionata nella stessa istanza nonostante il vincolo di posizionamento `distinctInstance`. Pertanto, è possibile che vengano visualizzate 2 attività con l'ultimo stato di `RUNNING` nella stessa istanza.

```
"placementConstraints": [
    {
        "type": "distinctInstance"
    }
]
```