

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

# 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"
    }
]
```