Amazon Elastic Container Service (ECS) vous permet d'exécuter et de gérer aisément des applications compatibles avec Docker sur un cluster d'instances Amazon EC2. Les applications regroupées sous forme de conteneurs en local sont déployées et exécutées de la même façon que des conteneurs gérés par Amazon ECS. Avec Amazon ECS, plus besoin d'installer, d'exploiter et de mettre à l'échelle une infrastructure de gestion pour vos clusters en interne. Vous pouvez simplement planifier des applications compatibles avec Docker sur votre cluster EC2 selon vos besoins en termes de ressources et de disponibilité. Amazon ECS vous permet de passer d'un seul et unique conteneur à des milliers, répartis sur des centaines d'instances, sans que cela complexifie le mode d'exécution de votre application. Vous pouvez lancer l'exécution d'applications, de lots de tâches ou de microservices, etc. Amazon ECS vous permet d'oublier la complexité de l'infrastructure pour vous concentrer sur la conception, le développement et l'exécution de vos applications conteneurisées.

Avec Amazon ECS, vous disposez d'une visibilité complète sur votre cluster et en conservez l'entière maîtrise, de la création à l'arrêt des conteneurs Docker, en passant par la consultation d'informations détaillées sur l'état du cluster. Vous pouvez intégrer et utiliser votre propre programmeur de conteneurs ou connecter Elastic Container Service à votre processus actuel de livraison de logiciels (par ex., systèmes d'intégration continue et de livraison).

Amazon Elastic Container Service

Mise en route

Profitez pendant 12 mois du niveau d'utilisation gratuit d'AWS. Vous bénéficierez également du niveau de base d'AWS Support qui inclut un service client disponible 24h/24, 7j/7 et 365 jours par an, l'accès à des forums d'assistance et bien d'autres avantages.

AmazonEC2ContainerService_ProductDetail

Amazon Elastic Container Service prend en charge Docker. Vous pouvez donc exécuter et gérer des conteneurs Docker sur un cluster d'instances Amazon EC2. Dans tout cluster géré par Amazon ECS, chaque instance EC2 exécute un démon Docker. Ainsi, toutes les applications regroupées dans un conteneur en local peuvent être déployées et exécutées sur Amazon ECS sans avoir à modifier la configuration.

Si vous possédez votre propre infrastructure de gestion de conteneurs, vous devez généralement installer, exécuter et mettre à l'échelle votre propre logiciel de gestion de clusters, des systèmes de gestion des configurations ainsi que des solutions de surveillance. Or, il est difficile d'architecturer et de gérer la disponibilité et l'évolutivité de tels systèmes. Amazon Elastic Container Service permet d'oublier la complexité liée à la gestion des conteneurs. En effet, avec Amazon ECS, il vous suffit de lancer un cluster d'instances Container, puis de spécifier les tâches à y exécuter. Amazon ECS s'occupe ensuite de toute la gestion du cluster.

Amazon Elastic Container Service vous permet de définir les tâches à exécuter via un modèle JSON déclaratif nommé « Task Definition ». Pour chaque définition de tâches, vous pouvez indiquer un ou plusieurs conteneurs nécessaires à l'exécution de la tâche, y compris l'image et le référentiel Docker, ainsi que les besoins en termes de mémoire et de CPU, les volumes de données partagés et les liens existants entre les différents conteneurs. Vous pouvez lancer autant de tâches que vous le souhaitez à partir d'un seul fichier de définition de tâches que vous enregistrez auprès du service. De plus, les fichiers de définition de tâches vous permettent de gérer les versions de votre spécification d'application.

Amazon Elastic Container Service inclut des programmeurs qui placent vos conteneurs sur vos différents clusters en fonction des ressources requises (par ex., CPU ou RAM) et des exigences en termes de disponibilité. A l'aide des programmeurs fournis, vous pouvez planifier des applications et des services de longue durée, ainsi que des lots de tâches. Les API Amazon ECS fournissent, en outre, des informations complètes sur l'état de vos clusters. Vous pouvez, ainsi, coder vos propres programmeurs ou intégrer vos programmeurs tiers actuels (par ex., Marathon). Amazon ECS est un système à accès concurrentiel optimiste en mode partagé, qui transmet l'état complet du cluster à tous les programmeurs. Vous pouvez développer vos propres planificateurs ou intégrer des planificateurs tiers à l'aide des API Amazon ECS ou de Blox, une collection de projets open source pour la gestion et l'orchestration des conteneurs. Pour en savoir plus, reportez-vous à la page GitHub de Blox.

Récupération automatique des conteneurs
Le planificateur Amazon ECS lance automatiquement la récupération de tout conteneur défectueux afin que vous disposiez, en permanence, du nombre de conteneurs requis pour votre application.

Déploiement des conteneurs
Amazon ECS vous permet de mettre facilement à jour vos conteneurs. Il vous suffit d'importer une nouvelle version du fichier de définition des tâches de votre application et le programmeur Amazon ECS lance automatiquement de nouveaux conteneurs utilisant l'image mise à jour, tandis que les anciens conteneurs sont arrêtés. Amazon ECS enregistrera automatiquement les nouveaux conteneurs et annulera l'enregistrement des anciens auprès du programme ELB associé.

Amazon Elastic Container Service met à votre disposition un ensemble d'API simples facilitant son intégration ou son extension. Les API vous permettent de créer et de supprimer des clusters, d'enregistrer des tâches et d'annuler leur enregistrement, de lancer et d'arrêter des conteneurs Docker, mais aussi de consulter des informations détaillées sur l'état de votre cluster et de ses instances. Vous pouvez également utiliser AWS CloudFormation pour mettre en service des clusters Amazon ECS, enregistrer des définitions de tâches et planifier des conteneurs.

Amazon Elastic Container Service prend en charge la mise en réseau Docker et intègre Amazon VPC pour assurer l'isolation des conteneurs. Cela vous donne le contrôle sur la façon dont les conteneurs se connectent aux autres services et au trafic externe. Avec Amazon ECS, vous pouvez choisir entre quatre modes de mise en réseau pour vos conteneurs s'appliquant à quatre différents cas d'utilisation :
 
  • Mise en réseau de tâches/awsvpc : ce mode attribue chaque tâche ECS en cours d'exécution à une interface de mise en réseau Elastic dédiée, ce qui donne aux conteneurs des fonctionnalités de mise en réseau complètes dans un VPC, à l'instar des instances EC2.
  • Pont : ce mode crée un pont Linux qui relie tous les conteneurs s'exécutant sur l'hôte dans un réseau virtuel local, accessible via la connexion réseau par défaut de l'hôte.
  • Hôte : ce mode ajoute des conteneurs directement à la pile réseau de l'hôte, exposant les conteneurs sur le réseau de l'hôte sans isolation.
  • Aucun : ce mode désactive la mise en réseau externe pour les conteneurs.

Amazon Elastic Container Service intègre Elastic Load Balancing (ELB) afin que vous puissiez répartir le trafic sur vos différents conteneurs. Vous précisez le fichier de définition des tâches et le programme ELB à utiliser, et le planificateur Amazon ECS ajoute ou retire automatiquement des conteneurs dans le programme ELB. Vous pouvez spécifier un port dynamique dans la définition des tâches. Ainsi, votre conteneur dispose d'un port encore inexploité lorsqu'il est programmé sur une instance EC2. Vous pouvez également utiliser un routage par chemin pour partager le programme ELB entre plusieurs services.

Amazon Elastic Container Service peut être utilisé avec un registre Docker ou un concentrateur Docker (référentiel d'image Docker hébergé) privé tiers ou accessible. Il vous suffit d'indiquer le référentiel dans votre définition de tâches et Amazon ECS récupère les images appropriées pour vos applications.

Vous pouvez envoyer les journaux d'agent ECS et les journaux de conteneur Docker de chaque instance de conteneur à Amazon CloudWatch Logs pour simplifier le diagnostic des problèmes. Vous pouvez également enregistrer tous les appels d'API Amazon ECS et recevoir les fichiers journaux correspondants via AWS CloudTrail. Les informations enregistrées incluent l'identité de l'utilisateur à l'origine de l'appel de l'API, l'heure de l'appel, l'adresse IP d'origine, les paramètres de la requête, ainsi que les éléments de réponse renvoyés par Amazon ECS. CloudTrail fournit l'historique des appels d'API effectués via la console de gestion Amazon ECS, les kits SDK AWS et l'interface de ligne de commande AWS aux fins des analyses de sécurité, du suivi des modifications au niveau des ressources et des audits de conformité.

Amazon Elastic Container Service fournit des capacités de surveillance pour vos conteneurs et clusters. Vous pouvez surveiller l'utilisation moyenne et globale des ressources CPU et de la mémoire pour les tâches en cours d'exécution, telles que regroupées par Définition de tâches, Service ou Cluster via Amazon CloudWatch. Vous pouvez également définir des alarmes CloudWatch afin d'être averti lorsque vos conteneurs ou clusters doivent être mis à l'échelle.

L'interface de ligne de commande Amazon Elastic Container Service (Amazon ECS CLI) vous permet de simplifier votre expérience de développement local et de mettre aisément en place un cluster Amazon ECS ainsi que ses ressources associées (par exemple, une instance EC2). L'interface de ligne de commande Amazon ECS prend en charge Docker Compose, un outil à code source libre qui permet de définir et d'exécuter des applications à conteneurs multiples. Vous pouvez appliquer la même définition Compose définissant une application à conteneurs multiples sur votre machine de développement, ainsi qu'en production. L'interface de ligne de commande Amazon ECS est à code source libre et peut être téléchargée ici.

Amazon Elastic Container Service vous permet de spécifier un rôle IAM pour chaque tâche ECS. Les instances de conteneur ECS jouent ainsi un rôle minime, ce qui vous permet de respecter la stratégie d'accès basée sur le principe du « moindre privilège » et de gérer séparément le rôle de l'instance et le rôle de la tâche. Vous gagnez également en visibilité lorsqu'il s'agit de savoir quelle tâche utilise quel rôle, grâce au suivi assuré par les journaux CloudTrail.