Définissez les instances de conteneur qu'Amazon ECS utilise pour les tâches - Amazon Elastic Container Service

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éfinissez les instances de conteneur qu'Amazon ECS utilise pour les tâches

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 les contraintes de placement des tâches dans la définition du service, la définition de la tâche ou la tâche à l'aide du placementConstraint paramètre.

"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
distinctInstance

Placez chaque tâche active sur une instance de conteneur différente.

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 estSTOPPED, (mais pas le dernier statut), une nouvelle tâche entrante peut être placée sur la même instance malgré la contrainte de distinctInstance placement. Par conséquent, vous pouvez voir deux tâches dont le dernier statut est RUNNING sur la même instance.

Important

Nous recommandons aux clients qui recherchent une isolation solide 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, le processeur 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.

memberOf

Place les tâches sur des instances de conteneur qui correspondent à une expression.

Lorsque vous utilisez le type de memberOf contrainte, 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 entre dans le expression paramètre deplacementConstraint.

Attributs de l'instance de conteneur Amazon ECS

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.

Attributs intégrés

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 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 EC2 instance 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 Windows optimisées pour Amazon ECS.

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.

Attributs facultatifs

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 Augmenter les interfaces réseau des instances de conteneur Linux Amazon ECS.

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.

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 le type de lancement externe.

Attributs personnalisés

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.