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éfinitions de tâches de démon
Une définition de tâche de démon est le modèle de votre démon. Les démons gérés Amazon ECS utilisent une ressource de définition de tâche dédiée, distincte des définitions de tâches Amazon ECS standard. Vous enregistrez une définition de tâche de démon pour spécifier l'image du conteneur, les besoins en ressources et la configuration de votre démon.
Création d'une définition de tâche daemon
Vous pouvez créer une définition de tâche daemon en utilisant le AWS Management Console ou le AWS CLI.
Utilisation de AWS Management Console
-
Ouvrez la console Amazon ECS. Dans le menu de navigation de gauche, choisissez Définitions de tâches Daemon.
-
Choisissez Créer une nouvelle définition de tâche daemon.
-
Pour la famille de définitions de tâches Daemon, entrez un nom unique. Le nom peut contenir jusqu'à 255 caractères alphanumériques, traits d'union et traits de soulignement.
-
(Facultatif) Pour Rôle de tâche, choisissez un rôle IAM qui accorde des autorisations aux applications exécutées dans vos conteneurs. Laissez ce champ vide si vos conteneurs n'appellent pas d' AWS API.
-
(Facultatif) Pour le rôle d'exécution des tâches, sélectionnez
ecsTaskExecutionRole. Amazon ECS a besoin de ce rôle pour extraire des images de conteneurs et publier des journaux. -
(Facultatif) Dans Taille de la tâche, spécifiez le processeur et la mémoire à réserver pour votre démon. Par exemple,
0.25 vCPUet512 MBla mémoire. -
Configurez les détails de votre conteneur :
-
Nom du conteneur - Entrez le nom de votre conteneur. Le nom peut contenir jusqu'à 255 caractères alphanumériques, traits d'union et traits de soulignement.
-
Contenant essentiel - Sélectionnez Oui. Chaque définition de tâche daemon nécessite au moins un conteneur essentiel. En cas de défaillance d'un conteneur essentiel, Amazon ECS arrête l'ensemble de la tâche.
-
URI de l'image - Entrez l'URI de l'image Docker. Vous pouvez parcourir les images Amazon ECR ou utiliser des images publiques provenant de Docker Hub ou d'autres registres.
-
-
(Facultatif) Configurez l'allocation des ressources, le bilan de santé, les variables d'environnement, la collecte de journaux et les balises selon les besoins.
-
Vérifiez votre configuration et choisissez Create.
Utilisation de AWS CLI
Enregistrez une définition de tâche daemon en créant un fichier JSON et en utilisant la register-daemon-task-definition commande.
Voici un exemple de fichier JSON :
{ "family": "my-daemon-task", "containerDefinitions": [ { "name": "daemon-container", "image": "public.ecr.aws/docker/library/busybox:latest", "essential": true, "command": ["sh", "-c", "while true; do echo 'Daemon running'; sleep 30; done"], "memoryReservation": 512 } ] }
Exécutez la commande suivante pour enregistrer la définition de la tâche du démon :
aws ecs register-daemon-task-definition --cli-input-json file://daemon-taskdef.json
Paramètres de définition des tâches du démon
Vous pouvez utiliser les paramètres suivants lorsque vous enregistrez une définition de tâche daemon.
Paramètres requis
-
family- Le nom de famille de définition de la tâche. Cela regroupe plusieurs révisions de la même définition de tâche de démon. -
containerDefinitions- Un tableau d'DaemonContainerDefinitionobjets décrivant les conteneurs de votre tâche daemon.
Paramètres facultatifs
-
cpu- Unités Task-level du processeur sous forme de chaîne (par exemple,"256"). -
memory- Task-level mémoire en MiB sous forme de chaîne (par exemple,"512"). -
taskRoleArn- L'ARN du rôle IAM qui accorde des autorisations aux conteneurs de votre tâche daemon. -
executionRoleArn- L'ARN du rôle IAM que l'agent de conteneur Amazon ECS utilise pour effectuer des appels d' AWS API en votre nom (par exemple, extraire des images depuis Amazon ECR). -
volumes- Un ensemble d'DaemonVolumeobjets. Les volumes Daemon ne prennent en charge que les montages par liaison avechostet.sourcePathLes définitions de tâches Daemon ne prennent pas en charge Amazon EBS, Amazon EFS, FSx for Windows File Server, les volumes Docker ou le stockage éphémère. -
tags- Un tableau de paires clé-valeur pour étiqueter la définition de votre tâche daemon. -
pidMode- Contrôle le mode d'espace de noms PID pour le démon. -
ipcMode- Contrôle le mode d'espace de noms IPC pour le démon.
Mode réseau
Les démons utilisent un mode daemon_bridge réseau spécial qu'Amazon ECS définit automatiquement. Vous ne pouvez pas spécifier de mode réseau dans la définition de votre tâche de démon. Tous les démons d'une instance partagent un même espace de noms réseau et sont accessibles localement via une adresse IP statique de pont de démons (169.254.172.2pour IPv4 ou pour IPv6). fd00:ec2::172:2 Les tâches d'application (autres que les démons) peuvent communiquer avec les démons à cette adresse sans configuration réseau supplémentaire.
Comme les démons s'exécutent dans un espace de noms réseau distinct de celui des tâches d'application, les tâches autres que les démons n'ont pas à se soucier des conflits de port avec les démons. Cependant, étant donné que toutes les tâches de démon partagent le même espace de noms, les démons d'une même instance ne peuvent pas se lier au même port. Lorsque vous déployez plusieurs daemons, assurez-vous que chaque daemon utilise un port unique.
Capacités privilégiées
Sur les instances gérées Amazon ECS, les démons prennent en charge les fonctionnalités Linux privilégiées pour les opérations au niveau du système. Les agents de sécurité, les outils de surveillance du réseau et les agents d'observabilité ont souvent besoin d'un accès au niveau du noyau pour fonctionner correctement.
Vous pouvez octroyer des capacités de deux manières :
Le mode privilégié complet accorde toutes les fonctionnalités Linux au conteneur. Utilisez-le lorsque votre agent a besoin d'un accès étendu au système :
{ "containerDefinitions": [{ "name": "security-daemon", "image": "my-security-agent:latest", "privileged": true }] }
Les fonctionnalités individuelles n'accordent que les autorisations dont votre démon a besoin, conformément au principe du moindre privilège. Utilisez le linuxParameters.capabilities champ pour ajouter des fonctionnalités individuelles telles que SYS_ADMINNET_ADMIN,SYS_PTRACE,BPF, et PERFMON :
{ "containerDefinitions": [{ "name": "monitoring-daemon", "image": "my-monitoring-agent:latest", "linuxParameters": { "capabilities": { "add": ["NET_ADMIN", "SYS_PTRACE"] } } }] }
Partage d'espaces de noms PID et IPC
Sur les instances gérées Amazon ECS, les démons prennent en charge le partage des espaces de noms PID et IPC pour permettre des cas d'utilisation tels que les agents de sécurité, les outils de surveillance et les démons d'observabilité qui nécessitent une visibilité sur les processus des tâches d'application ou les ressources IPC.
pidMode-
Type : chaîne
Obligatoire : non
Valeurs valides :
none|sharedPar défaut:
noneLe mode d'espace de noms PID pour le démon. Si cette valeur
noneest spécifiée ou si aucune valeur n'est fournie, le démon s'exécute avec son propre espace de noms PID, isolé des autres tâches. S'ilsharedest spécifié, le démon rejoint l'espace de noms PID de l'hôte, le rendant ainsi accessible aux tâches autres que les démons qui l'utilisentpidMode: "host"ou aux autres démons qui l'utilisent.pidMode: "shared" ipcMode-
Type : chaîne
Obligatoire : non
Valeurs valides :
none|sharedPar défaut:
noneMode d'espace de noms IPC pour le démon. Si cette valeur
noneest spécifiée ou si aucune valeur n'est fournie, le démon s'exécute avec son propre espace de noms IPC, isolé des autres tâches. S'ilsharedest spécifié, le démon rejoint l'espace de noms IPC de l'hôte, le rendant ainsi accessible aux tâches autres que les démons qui l'utilisentipcMode: "host"ou aux autres démons qui l'utilisent.ipcMode: "shared"
L'exemple suivant montre une définition de tâche daemon avec le partage d'espaces de noms PID et IPC activé :
{ "family": "my-monitoring-daemon", "pidMode": "shared", "ipcMode": "shared", "containerDefinitions": [ { "name": "monitoring-agent", "image": "public.ecr.aws/my-company/monitoring-agent:latest", "essential": true } ] }
Pour partager l'espace de noms PID avec un démon pidMode défini surshared, une tâche autre qu'un démon doit le spécifier pidMode: "host" dans sa définition de tâche. Cela permet aux conteneurs de la tâche de voir les processus du démon et permet des cas d'utilisation tels que la surveillance des processus et la livraison de signaux.
Pour partager l'espace de noms IPC avec un démon ipcMode défini surshared, une tâche autre qu'un démon doit le spécifier ipcMode: "host" dans sa définition de tâche. Cela permet aux conteneurs de la tâche d'accéder aux ressources IPC du démon, telles que les segments de mémoire partagée et les files d'attente de messages.
Volumes
Les démons gérés prennent en charge les montages par liaison à l'aide de volumes hôtes dotés d'une spécification. sourcePath Cela permet aux conteneurs daemon de monter des répertoires hôtes pour accéder aux journaux, aux métriques et aux informations système sur l'instance Amazon EC2 sous-jacente. Les agents de collecte de journaux, les exportateurs de métriques et les scanners de sécurité l'utilisent généralement pour gagner en visibilité sur les données au niveau de l'hôte.
La définition des tâches du démon prend en charge les spécifications du volume hôte avecsourcePath. Les volumes Daemon persistent pendant tout le cycle de vie de l'instance de conteneur sous-jacente.
Note
Les volumes Amazon EBS, les volumes Amazon EFS, les volumes FSx for Windows File Server, les volumes Docker et le stockage éphémère ne sont pas pris en charge dans les définitions de tâches des démons.
Note
Les démons ne prennent pas en charge le partage de volume entre eux. Chaque daemon fonctionne avec sa propre configuration de volume indépendante.
L'exemple suivant montre un démon Log Collector doté d'un montage bind :
{ "containerDefinitions": [{ "name": "log-collector", "image": "fluent/fluentd:latest", "mountPoints": [{ "sourceVolume": "var-log", "containerPath": "/var/log" }] }], "volumes": [{ "name": "var-log", "host": { "sourcePath": "/var/log" } }] }
Paramètres de conteneur pris en charge
Les définitions de conteneurs Daemon prennent en charge les paramètres suivants :
-
image(obligatoire) - URI de l'image du conteneur -
name(obligatoire) - Nom du conteneur -
cpu- Unités CPU réservées au conteneur -
memory/memoryReservation- Limites de mémoire matérielles et logicielles -
essential- Si le conteneur est essentiel (valeur par défaut : true) -
command/entryPoint- Remplacer la commande ou le point d'entrée du conteneur -
environment/environmentFiles/secrets- Configuration de l'environnement -
privileged- Exécuter le conteneur en mode privilégié -
user- Utilisateur sous lequel exécuter le conteneur -
workingDirectory- Répertoire de travail à l'intérieur du conteneur -
readonlyRootFilesystem- Monter le système de fichiers racine en lecture seule -
mountPoints- Points de montage des volumes (reliez les montages avec host et SourcePath uniquement) -
logConfiguration- Configuration de journalisation (supporte awslogs, splunk, awsfirelens) -
healthCheck- Configuration du contrôle de santé du conteneur -
dependsOn- Dépendances de démarrage du conteneur -
ulimits- Limites de ressources -
systemControls- Paramètres du noyau -
linuxParameters.capabilities- Fonctionnalités Linux à ajouter ou à supprimer -
linuxParameters.initProcessEnabled- Exécute un processus d'initialisation dans le conteneur -
repositoryCredentials- Informations d'identification pour les registres privés -
restartPolicy- Politique de redémarrage des conteneurs