

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Définition des instances de conteneur utilisées par Amazon ECS pour les tâches
<a name="task-placement-constraints"></a>

Une contrainte de placement de tâche est une règle concernant une instance de conteneur qu’Amazon ECS utilise pour déterminer si la tâche est autorisée à s’exécuter sur l’instance. Au moins une instance de conteneur doit correspondre à la contrainte. Si aucune instance ne correspond à la contrainte, la tâche reste à l'état `PENDING`. Lorsque vous créez un nouveau service ou que vous mettez à jour un service existant, vous pouvez définir des contraintes de placement des tâches pour les tâches du service. 

Vous pouvez spécifier des contraintes de placement des tâches dans la définition du service, dans la définition de la tâche ou dans la tâche à l’aide du paramètre `placementConstraint`.

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

Le tableau suivant décrit comment utiliser les paramètres.


| Constraint type (Type de contrainte) | Peut être spécifié quand | 
| --- | --- | 
| distinctInstancePlace chaque tâche sur une instance de conteneur différente.<br />Amazon ECS examine le statut souhaité des tâches pour le placement des tâches. Par exemple, si le statut souhaité de la tâche existante est `STOPPED` (mais que le dernier statut ne l’est pas), une nouvelle tâche entrante peut être placée sur la même instance malgré la contrainte de placement `distinctInstance`. En conséquence, vous pouvez voir deux tâches dont le dernier statut est `RUNNING` sur la même instance. Nous recommandons aux clients qui recherchent une isolation forte pour leurs tâches d’utiliser Fargate. Fargate exécute chaque tâche dans un environnement de virtualisation matérielle. Cela garantit que ces charges de travail conteneurisées ne partagent pas les interfaces réseau, le stockage éphémère Fargate, l’UC ou la mémoire avec d’autres tâches. Pour plus d'informations, consultez [la section Présentation de la sécurité de 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/fr_fr/AmazonECS/latest/developerguide/task-placement-constraints.html)  | 
| memberOfPlace les tâches sur des instances de conteneur qui correspondent à une expression.  | [See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/task-placement-constraints.html) | 

Lorsque vous utilisez le type de contrainte `memberOf`, vous pouvez créer une expression à l’aide du langage de requête de cluster qui définit les instances de conteneur dans lesquelles Amazon ECS peut placer des tâches. L’expression vous permet de regrouper vos instances de conteneur par attributs. L’expression va dans le paramètre `expression ` de `placementConstraint`.

## Attributs d’instance de conteneur Amazon ECS
<a name="attributes"></a>

Vous pouvez ajouter à vos instances de conteneur des métadonnées personnalisées connues sous le nom d'*attributs*. Chaque attribut a un nom et une valeur de chaîne facultative. Vous pouvez utiliser les attributs intégrés fournis par Amazon ECS ou définir des attributs personnalisés.

Les sections suivantes contiennent des exemples d'attributs intégrés, facultatifs et personnalisés.

### Built-in attributs
<a name="ecs-automatic-attributes"></a>

Amazon ECS applique automatiquement les attributs suivants à vos instances de conteneur.

`ecs.ami-id`  
ID de l’AMI utilisée pour lancer l’instance. Cet attribut peut par exemple avoir la valeur `ami-1234abcd`.

`ecs.availability-zone`  
Zone de disponibilité de l'instance. Cet attribut peut par exemple avoir la valeur `us-east-1a`.

`ecs.instance-type`  
Type de l'instance. Cet attribut peut par exemple avoir la valeur `g2.2xlarge`.

`ecs.os-type`  
Système d'exploitation de l'instance. Les valeurs possibles pour cet attribut sont `linux` et `windows`.

`ecs.os-family`  
Version du système d'exploitation de l'instance.  
Pour les instances Linux, la valeur valide est `LINUX`. Pour les instances Windows, ECS définit la valeur au format `WINDOWS_SERVER_<{{OS_Release}}>_<{{FULL or CORE}}>`. Les valeurs valides sont `WINDOWS_SERVER_2022_FULL`, `WINDOWS_SERVER_2022_CORE`, `WINDOWS_SERVER_20H2_CORE`, `WINDOWS_SERVER_2019_FULL`, `WINDOWS_SERVER_2019_CORE` et `WINDOWS_SERVER_2016_FULL`.  
Cela est important pour les conteneurs Windows et Windows containers on AWS Fargate parce que la version du système d'exploitation de chaque conteneur Windows doit correspondre à celle de l'hôte. Si la version Windows de l'image du conteneur est différente de celle de l'hôte, le conteneur ne démarre pas. Pour plus d'informations, consultez [Compatibilité avec la version du conteneur Windows](https://learn.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-2022%2Cwindows-11) sur le site web de documentation Microsoft.  
Si votre cluster exécute plusieurs versions de Windows, vous pouvez vous assurer qu'une tâche est placée sur une instance EC2 exécutée sur la même version en utilisant la contrainte de placement : `memberOf(attribute:ecs.os-family == WINDOWS_SERVER_<OS_Release>_<FULL or CORE>)`. Pour de plus amples informations, veuillez consulter [Récupération des métadonnées de l'AMI Amazon ECS-optimized Windows](retrieve-ecs-optimized_windows_AMI.md).

`ecs.cpu-architecture`  
Architecture du processeur de l'instance. Cet attribut peut par exemple avoir la valeur `x86_64` ou `arm64`.

`ecs.vpc-id`  
VPC dans lequel l'instance a été lancée. Cet attribut peut par exemple avoir la valeur `vpc-1234abcd`.

`ecs.subnet-id`  
Sous-réseau utilisé par l'instance. Cet attribut peut par exemple avoir la valeur `subnet-1234abcd`.

**Note**  
Les instances gérées Amazon ECS prennent en charge le sous-ensemble d’attributs suivant :  
`ecs.subnet-id`
`ecs.availability-zone`
`ecs.instance-type`
`ecs.cpu-architecture`

### Attributs facultatifs
<a name="ecs-optional-attributes"></a>

Amazon ECS peut ajouter les attributs suivants à vos instances de conteneur.

`ecs.awsvpc-trunk-id`  
Si cet attribut existe, l'instance dispose d'une interface réseau de jonction. Pour de plus amples informations, veuillez consulter [Augmentation des interfaces réseau d’une instance de conteneur Amazon ECS Linux](container-instance-eni.md).

`ecs.outpost-arn`  
Si cet attribut existe, il contient l'Amazon Resource Name (ARN) de l'Outpost. Pour de plus amples informations, veuillez consulter [Amazon Elastic Container Service sur AWS Outposts](using-outposts.md).

`ecs.capability.external`  
Si cet attribut existe, l'instance est identifiée en tant qu'instance externe. Pour de plus amples informations, veuillez consulter [Clusters Amazon ECS pour instances externes](ecs-anywhere.md).

### Attributs personnalisés
<a name="ecs-custom-attributes"></a>

Vous pouvez appliquer des attributs personnalisés à vos instances de conteneur. Par exemple, vous pouvez définir un attribut avec le nom « stack » et la valeur « prod ».

Lorsque vous spécifiez des attributs personnalisés, vous devez prendre en compte les éléments suivants.
+ Le `name` doit comprendre entre 1 et 128 caractères et peut contenir des lettres (majuscules et minuscules), des chiffres, des tirets, des traits de soulignement, des barres obliques et des points.
+ Le `value` doit comprendre entre 1 et 128 caractères et peut contenir des lettres (majuscules et minuscules), des chiffres, des tirets, des traits de soulignement, des points, des arrobases, des barres obliques, des deux-points et des espaces. La valeur ne peut pas contenir d'espaces de début ou de fin.