0Pricing
AWS Solutions Architect · Leçon

Clusters ECS, définitions de tâches et services

Définissez des définitions de tâches ECS avec des images de conteneurs et des limites de ressources, enregistrez-les dans un cluster, puis créez un service pour maintenir le nombre souhaité.

Clusters ECS, définitions de tâches et services est une leçon AWS Solutions Architect gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AWS Solutions Architect, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AWS Solutions Architect comprend 4 leçons au total.

Pourquoi utiliser des conteneurs sur AWS ?

Les conteneurs regroupent une application et toutes ses dépendances dans une unité portable et isolée, qui s’exécute de manière cohérente dans différents environnements. ECS (Elastic Container Service) est le service d’orchestration de conteneurs entièrement géré d’AWS ; il exécute des conteneurs Docker sans que vous ayez à gérer un plan de contrôle. ECS s’intègre étroitement aux services AWS (IAM, ALB, CloudWatch et Secrets Manager) et constitue la méthode recommandée pour exécuter des conteneurs sur AWS sans la complexité de Kubernetes.

Clusters ECS : l’unité de regroupement

Un cluster ECS est un regroupement logique de ressources de calcul dans lequel vos conteneurs s’exécutent. Un cluster peut contenir des instances EC2 (type de lancement EC2), de la capacité FARGATE (type de lancement FARGATE), ou les deux. Vous pouvez exécuter plusieurs services et tâches autonomes dans un même cluster. Les clusters sont régionaux, mais s’étendent sur plusieurs zones de disponibilité. Une pratique courante consiste à utiliser un cluster par environnement (développement, préproduction et production), avec plusieurs services dans chaque cluster pour différents microservices.

aws ecs create-cluster \
  --cluster-name 'MyAppCluster' \
  --capacity-providers FARGATE FARGATE_SPOT \
  --default-capacity-provider-strategy \
    capacityProvider=FARGATE,weight=1,base=1

Définitions de tâches : le modèle

Une définition de tâche est le modèle utilisé pour exécuter des conteneurs dans ECS, comparable à un fichier Docker Compose. Elle spécifie les images de conteneurs (URI ECR ou Docker Hub), les allocations de CPU et de mémoire, les mappages de ports, les variables d’environnement, la configuration de journalisation, les volumes et le rôle de tâche IAM. Une définition de tâche est versionnée : chaque révision est immuable. Vous pouvez définir plusieurs conteneurs par tâche pour appliquer des architectures side-car (application principale, agent d’envoi des journaux et agent de surveillance).

{
  'family': 'myapp-task',
  'networkMode': 'awsvpc',
  'requiresCompatibilities': ['FARGATE'],
  'cpu': '512',
  'memory': '1024',
  'executionRoleArn': 'arn:aws:iam::123456789012:role/ecsTaskExecutionRole',
  'taskRoleArn': 'arn:aws:iam::123456789012:role/myAppTaskRole',
  'containerDefinitions': [{
    'name': 'myapp',
    'image': '123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp:latest',
    'portMappings': [{'containerPort': 8080}]
  }]
}

Rôle de tâche et rôle d’exécution

Les tâches ECS utilisent deux rôles IAM distincts, avec des fonctions différentes. Le rôle d’exécution de tâche est utilisé par l’agent ECS pour extraire les images de conteneurs depuis ECR, envoyer les journaux à CloudWatch et récupérer les secrets depuis Secrets Manager ou Parameter Store au démarrage de la tâche. Le rôle de tâche est utilisé par le code de l’application exécuté dans le conteneur pour appeler les services AWS (S3, DynamoDB et SQS). Attribuez toujours à chaque rôle séparément les autorisations minimales nécessaires ; n’accordez jamais au rôle d’exécution des autorisations dont l’application n’a pas besoin.

Services ECS pour les charges de travail de longue durée

Un service ECS maintient un nombre défini d’instances de tâches exécutées simultanément (le nombre souhaité). Si une tâche échoue ou s’arrête, le planificateur du service en lance automatiquement une nouvelle. Les services s’intègrent également à Elastic Load Balancing pour distribuer le trafic et prennent en charge les déploiements progressifs ainsi que les déploiements bleu-vert. Utilisez un service pour tout processus de longue durée (serveur web, serveur d’API ou processus d’arrière-plan). Pour les tâches ponctuelles, exécutez plutôt une tâche autonome.

aws ecs create-service \
  --cluster 'MyAppCluster' \
  --service-name 'MyAppService' \
  --task-definition 'myapp-task:5' \
  --desired-count 3 \
  --launch-type FARGATE \
  --network-configuration '{
    "awsvpcConfiguration": {
      "subnets": ["subnet-aaa111", "subnet-bbb222"],
      "securityGroups": ["sg-xyz"],
      "assignPublicIp": "DISABLED"
    }
  }'

Modes réseau : awsvpc et bridge

Le mode réseau awsvpc attribue à chaque tâche ECS sa propre interface réseau élastique (ENI) et sa propre adresse IP privée dans votre VPC, comme pour une instance EC2. Cela permet un contrôle précis des groupes de sécurité pour chaque tâche et est obligatoire pour les tâches FARGATE. Le mode réseau bridge utilise le réseau virtuel intégré de Docker sur l’hôte, avec un mappage de ports de l’hôte vers le conteneur ; il partage l’ENI de l’instance EC2 hôte. Pour l’examen SAA-C03, FARGATE utilise toujours awsvpc ; le type de lancement EC2 peut utiliser l’un ou l’autre mode.

Associer un répartiteur de charge à un service ECS

Enregistrez votre service ECS auprès d’un groupe cible ALB afin de distribuer le trafic entre les instances de tâches. Lorsqu’une nouvelle tâche démarre, ECS l’enregistre automatiquement auprès du groupe cible ; lorsqu’elle s’arrête, ECS l’en retire. Configurez une période de grâce pour la vérification de l’état (par exemple, 60 à 120 secondes) afin de laisser aux conteneurs le temps de démarrer avant l’exécution des vérifications. Sans période de grâce, l’ALB peut considérer comme défaillant un conteneur dont le démarrage est lent avant qu’il ne soit prêt, ce qui provoque des boucles de remplacement.

aws ecs create-service \
  --cluster 'MyAppCluster' \
  --service-name 'MyAppService' \
  --load-balancers \
    'targetGroupArn=arn:aws:elasticloadbalancing:...,containerName=myapp,containerPort=8080' \
  --health-check-grace-period-seconds 120 \
  --task-definition 'myapp-task:5' \
  --desired-count 3

Déploiement progressif ou déploiement bleu-vert

Les services ECS prennent en charge deux stratégies de déploiement : la mise à jour progressive remplace graduellement les anciennes tâches par de nouvelles, avec une configuration via minimumHealthyPercent (seuil minimal) et maximumPercent (plafond). Une configuration 100/200 signifie que les anciennes tâches continuent de fonctionner pendant le lancement des nouvelles (100 % de tâches saines requis, jusqu’à 200 % de capacité). Le déploiement bleu-vert (via AWS CodeDeploy) crée un nouvel ensemble de tâches à côté de l’ancien, transfère progressivement le trafic à l’aide du routage pondéré de l’ALB, puis arrête les anciennes tâches après validation. Le déploiement bleu-vert permet une restauration sans interruption de service.

Journalisation CloudWatch depuis ECS

Configurez le pilote de journaux awslogs dans votre définition de tâche afin d’envoyer directement la sortie standard et la sortie d’erreur du conteneur vers CloudWatch Logs. Indiquez un groupe de journaux, une région et un préfixe de flux. Le rôle d’exécution de la tâche nécessite les autorisations logs:CreateLogStream et logs:PutLogEvents. Pour centraliser l’agrégation des journaux de plusieurs services, envisagez d’utiliser FireLens (un conteneur side-car avec Fluent Bit ou Fluentd) afin de les acheminer vers S3, OpenSearch ou des systèmes de journalisation tiers.

'logConfiguration': {
    'logDriver': 'awslogs',
    'options': {
        'awslogs-group': '/ecs/myapp',
        'awslogs-region': 'us-east-1',
        'awslogs-stream-prefix': 'myapp'
    }
}

Découverte de services ECS avec Cloud Map

Lorsque des microservices exécutés dans ECS doivent communiquer entre eux, les adresses IP codées en dur ne conviennent pas, car les tâches sont éphémères et obtiennent de nouvelles adresses IP à chaque lancement. Utilisez AWS Cloud Map (découverte de services ECS) pour enregistrer l’adresse IP et le port de chaque tâche dans un espace de noms DNS. Les autres services résolvent myservice.namespace.local vers les adresses IP actuelles des tâches saines. ECS enregistre automatiquement les nouvelles tâches et retire celles qui ont échoué, ce qui permet de conserver des enregistrements DNS exacts sans gestion manuelle.

Secrets dans les définitions de tâches ECS

Ne codez jamais les identifiants directement dans les définitions de tâches. Faites plutôt référence aux secrets de Secrets Manager ou de Parameter Store dans votre définition de tâche ; ECS les injecte comme variables d’environnement au démarrage de la tâche. Le rôle d’exécution de la tâche doit disposer des autorisations nécessaires pour récupérer les secrets. Pour Secrets Manager, utilisez secretsmanager:GetSecretValue ; pour Parameter Store, utilisez ssm:GetParameters. Les secrets sont récupérés une seule fois au démarrage du conteneur ; la rotation des secrets nécessite de remplacer la tâche pour que les nouvelles valeurs soient prises en compte.

'secrets': [
    {
        'name': 'DB_PASSWORD',
        'valueFrom': 'arn:aws:secretsmanager:us-east-1:123456789012:secret:myapp/db-password-AbCdEf'
    },
    {
        'name': 'API_KEY',
        'valueFrom': 'arn:aws:ssm:us-east-1:123456789012:parameter/myapp/api-key'
    }
]

Vérification rapide

Testez votre compréhension des concepts AWS Solutions Architect (SAA-C03) présentés dans cette leçon.

Récapitulatif de la leçon

Dans cette leçon, vous avez appris que les clusters ECS regroupent les ressources de calcul où s’exécutent les tâches ; que les définitions de tâches définissent les images de conteneurs, le CPU et la mémoire, les rôles et la journalisation sous forme de modèles versionnés ; et que les services ECS maintiennent le nombre souhaité de tâches, s’intègrent à ALB pour distribuer le trafic et prennent en charge les déploiements progressifs ou bleu-vert. Nous allons maintenant comparer le type de lancement EC2 au type de lancement FARGATE sans serveur.

Questions Fréquemment Posées

La leçon « Clusters ECS, définitions de tâches et services » est-elle gratuite ?

Oui — le texte complet de « Clusters ECS, définitions de tâches et services » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AWS Solutions Architect, passe à CoddyKit PRO. Le cours AWS Solutions Architect comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Clusters ECS, définitions de tâches et services » ?

Définissez des définitions de tâches ECS avec des images de conteneurs et des limites de ressources, enregistrez-les dans un cluster, puis créez un service pour maintenir le nombre souhaité. Tu pratiques AWS Solutions Architect avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer AWS Solutions Architect ?

Aucune expérience préalable n'est requise. AWS Solutions Architect sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Clusters ECS, définitions de tâches et services » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon AWS Solutions Architect ?

Oui. Chaque leçon AWS Solutions Architect inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Clusters ECS, définitions de tâches et services
  2. Type de lancement EC2 ou Fargate
  3. ECR : stockage et récupération d’images de conteneurs
  4. Mise à l’échelle automatique et équilibrage de charge des services ECS
← Retour à AWS Solutions Architect