Qu'est-ce qu'Amazon Elastic Container Service ? - Amazon Elastic Container Service

Qu'est-ce qu'Amazon Elastic Container Service ?

Amazon Elastic Container Service (Amazon ECS) est un service de gestion de conteneurs hautement scalable et rapide, qui permet d'exécuter, d'arrêter et de gérer facilement des conteneurs Docker sur un cluster. Vous pouvez héberger votre cluster sur une infrastructure sans serveur gérée par Amazon ECS en lançant vos services ou les tâches via le type de lancement Fargate. Pour plus de contrôle sur votre infrastructure, vous pouvez héberger vos tâches sur un cluster d'instances Amazon Elastic Compute Cloud (Amazon EC2) que vous gérez à l'aide du type de lancement EC2. Pour plus d'informations sur les types de lancement, consultez Types de lancement Amazon ECS.

Amazon ECS vous permet de lancer et de stopper des applications basées sur les conteneurs avec des appels d'API simples, et d'obtenir l'état de votre cluster à partir d'un service centralisé. Il vous permet également d'accéder à de nombreuses fonctions Amazon EC2 déjà connues.

Vous pouvez utiliser Amazon ECS pour planifier le placement de conteneurs sur votre cluster en fonction de vos besoins en ressources, de vos stratégies d'isolement et de vos exigences en termes de disponibilité. Avec Amazon ECS, vous n'avez plus besoin d'utiliser vos propres systèmes de gestion de cluster et de configuration, ni de vous soucier de la mise à l'échelle de votre infrastructure de gestion.

Amazon ECS peut être utilisé pour créer un déploiement cohérent et renforcer l'expérience, gérer et dimensionner les charges de travail par lots et les charges de travail d'extraction, de transformation et de chargement (ETL), ainsi que développer des architectures d'applications sophistiquées sur un modèle de microservices. Pour de plus amples informations sur les cas d'utilisation et les scénarios Amazon ECS, veuillez consulter Cas d'utilisation des conteneurs.

AWS Elastic Beanstalk peut également être utilisé pour développer, tester et déployer rapidement des conteneurs Docker conjointement avec d'autres composants de votre infrastructure d'application. Toutefois, si vous utilisez Amazon ECS directement, vous bénéficiez d'un contrôle plus précis et d'un accès à un plus large éventail de cas d'utilisation. Pour plus d'informations, consultez le Manuel du développeur AWS Elastic Beanstalk.

L'équipe des services de conteneurs AWS maintient une feuille de route publique sur GitHub. Elle contient des informations sur les travaux des équipes et permet à tous les clients AWS de communiquer des commentaires directs. Pour de plus amples informations, consultez la Feuille de route des conteneurs AWS.

Fonctions d'Amazon ECS

Amazon ECS est un service régional qui simplifie l'exécution des conteneurs d'application de manière hautement disponible sur plusieurs zones de disponibilité au sein d'une région. Vous pouvez créer des clusters Amazon ECS au sein d'un nouveau VPC ou d'un VPC existant. Lorsqu'un cluster est opérationnel, vous pouvez définir des définitions de tâches et des services qui spécifient les images de conteneur Docker à exécuter sur vos clusters. Les images de conteneur sont stockées dans et extraites de registres de conteneur, qui peuvent exister dans votre infrastructure AWS ou en dehors de celle-ci.

Le schéma suivant illustre l'architecture d'un environnement Amazon ECS qui utilise le type de lancement Fargate :

Les sections suivantes explorent plus en détail ces éléments individuels de l'architecture Amazon ECS.

Conteneurs et images

Pour déployer des applications sur Amazon ECS, les composants de votre application doivent être conçus pour s'exécuter dans des conteneurs. Un conteneur Docker est une unité standardisée pour le développement logiciel, contenant tout ce dont votre application logicielle a besoin pour être exécutée : code, exécutable, outils système, bibliothèques système, etc. Les conteneurs sont créés à partir d'un modèle en lecture seule appelé image.

Les images sont généralement créées à partir d'un fichier Dockerfile, fichier en texte brut qui spécifie tous les éléments qui sont inclus dans le conteneur. Ces images sont ensuite stockées dans un registre à partir duquel elles peuvent être téléchargées et exécutées sur le cluster. Pour plus d'informations sur la technologie de conteneur, consultez Principes de base de Docker pour Amazon ECS.

Définitions de tâche

Pour préparer votre application à être exécutée sur Amazon ECS, vous créez une définition de tâche. La définition de tâche est un fichier texte au format JSON qui décrit le ou les conteneurs qui constituent votre application. Notez que vous pouvez avoir jusqu'à 10 conteneurs. Elle peut être considérée comme un plan pour votre application. Les définitions de tâche spécifient différents paramètres de votre application. Elles permettent, par exemple, de déterminer les conteneurs et le type de lancement à utiliser, les ports qui doivent être ouverts pour votre application et les volumes de données qui doivent être utilisés avec les conteneurs de la tâche. Les paramètres spécifiques disponibles pour la définition de tâche dépendent du type de lancement que vous utilisez. Pour plus d'informations sur la création de définitions de tâches, consultez Définition des tâches Amazon ECS.

Voici un exemple de définition de tâche contenant un conteneur unique qui exécute un serveur web NGINX avec le type de lancement Fargate. Pour obtenir un exemple plus complet illustrant l'utilisation de plusieurs conteneurs dans une définition de tâche, consultez Exemples de définitions de tâches.

{ "family": "webserver", "containerDefinitions": [ { "name": "web", "image": "nginx", "memory": "100", "cpu": "99" }, ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "memory": "512", "cpu": "256", }

Tâches et planification

Une tâche est l'instanciation d'une définition de tâche au sein d'un cluster. Après avoir créé une définition de tâche pour votre application dans Amazon ECS, vous pouvez spécifier le nombre de tâches qui s'exécuteront sur votre cluster.

Chaque tâche qui utilise le type de lancement Fargate possède sa propre limite d'isolement et ne partage pas le noyau sous-jacent, les ressources d'UC, les ressources de mémoire ou une interface réseau Elastic avec une autre tâche.

Le planificateur de tâches Amazon ECS est chargé de placer des tâches au sein du cluster. Il existe plusieurs options de planification différentes. Par exemple, vous pouvez définir un service qui exécute et gère un certain nombre de tâches en même temps. Pour plus d'informations sur les différentes options de planification, consultez Planification de tâches Amazon ECS.

Clusters

Lorsque vous exécutez des tâches à l'aide d'Amazon ECS, vous les placez sur un cluster, qui est un regroupement logique de ressources. Lorsque vous utilisez le type de lancement Fargate avec des tâches au sein de votre cluster, Amazon ECS gère les ressources de votre cluster. Lorsque vous utilisez le type de lancement EC2, les clusters correspondent à un groupe d'instances de conteneur que vous gérez. Une instance de conteneur Amazon ECS est une instance Amazon EC2 qui exécute l'agent de conteneur Amazon ECS. Amazon ECS télécharge vos images de conteneur depuis un registre que vous spécifiez et exécute ces images dans votre cluster.

Pour de plus amples informations sur la création de clusters, veuillez consulter Clusters Amazon ECS. Si vous utilisez le type de lancement EC2, découvrez comment créer des instances de conteneur sous Instances de conteneur Amazon ECS.

Agent de conteneur

L'agent de conteneur s'exécute sur chaque ressource d'infrastructure d'un cluster Amazon ECS. Il envoie à Amazon ECS des informations relatives aux tâches en cours d'exécution et à l'utilisation des ressources de la ressource. Il lance et arrête les tâches lorsqu'il reçoit une demande d'Amazon ECS. Pour plus d'informations, consultez Agent de conteneur Amazon ECS.

Comment démarrer avec Amazon ECS

Si vous utilisez Amazon ECS pour la première fois, l'AWS Management Console pour Amazon ECS fournit un assistant de première exécution qui vous guide pour définir une définition de tâche pour un serveur web, configurer un service et lancer votre première tâche Fargate. L'assistant de première exécution est fortement conseillé aux utilisateurs qui n'ont aucune expérience préalable avec Amazon ECS. Pour plus d'informations, consultez le didacticiel Démarrez avec Amazon ECS avec Fargate.

Sinon, vous pouvez installer l'AWS Command Line Interface (AWS CLI) pour utiliser Amazon ECS. Pour plus d'informations, consultez Configuration avec Amazon ECS.

Amazon ECS peut être utilisé avec les services AWS suivants :

AWS Identity and Access Management

IAM est un service web qui vous permet de contrôler en toute sécurité l'accès aux ressources AWS de vos utilisateurs. Utilisez IAM pour contrôler qui peut utiliser vos ressources AWS (authentification) et quelles ressources pourront être utilisées et de quelle manière (autorisation). Dans Amazon ECS, IAM peut être utilisé pour contrôler l'accès au niveau de l'instance de conteneur à l'aide de rôles IAM et au niveau de la tâche à l'aide de rôles de tâche IAM. Pour de plus amples informations, veuillez consulter IAM (Identity and Access Management) pour Amazon Elastic Container Service.

Amazon EC2 Auto Scaling

Auto Scaling est un service web qui vous permet de monter en charge ou de mettre à l'échelle automatiquement des tâches en fonction de stratégies définies par l'utilisateur, des vérifications de l'état et de calendriers. Vous pouvez utiliser Auto Scaling avec une tâche Fargate au sein d'un service pour mettre à l'échelle la réponse à un certain nombre de métriques ou avec une tâche EC2 pour mettre à l'échelle les instances de conteneur dans votre cluster. Pour plus d'informations, consultez Service Auto Scaling.

Elastic Load Balancing

Elastic Load Balancing répartit automatiquement votre trafic applicatif entrant sur les tâches dans le service Amazon ECS. Il vous permet d'obtenir une meilleure tolérance aux pannes au sein de vos applications, en fournissant en toute transparence les capacités requises en matière d'équilibrage de charge afin de distribuer le trafic applicatif. Vous pouvez utiliser Elastic Load Balancing pour créer un point de terminaison qui équilibre le trafic entre les services d'un cluster. Pour plus d'informations, consultez Équilibrage de charge des services.

Amazon Elastic Container Registry

Amazon ECR est un service d'enregistrement Docker AWS géré sûr, scalable et fiable. Amazon ECR prend en charge les référentiels privés Docker avec des autorisations basées sur les ressources à l'aide d'IAM afin que des utilisateurs ou des tâches spécifiques puissent accéder aux référentiels et aux images. Les développeurs peuvent utiliser l'interface de ligne de commande Docker pour transférer, récupérer et gérer des images. Pour plus d'informations, consultez le Amazon Elastic Container Registry Guide de l'utilisateur.

AWS CloudFormation

AWS CloudFormation permet aux développeurs et aux administrateurs système de créer et de gérer facilement un ensemble de ressources liées à AWS, de les mettre en service et de les actualiser de manière ordonnée et prévisible. Vous pouvez définir des clusters, des définitions de tâches et des services en tant qu'entités dans un script AWS CloudFormation. Pour plus d'informations, consultez la Référence sur les modèles AWS CloudFormation.

Accès à Amazon ECS

Vous pouvez utiliser Amazon ECS de l'une des façons suivantes :

AWS Management Console

La console est une interface basée sur un navigateur pour gérer les ressources Amazon ECS. Pour obtenir un didacticiel pour vous guider dans la console, consultez Mise en route sur Amazon ECS avec Amazon EC2.

Outils de ligne de commande AWS

Vous pouvez utiliser les outils de ligne de commande AWS pour émettre des commandes sur la ligne de commande de votre système afin d'exécuter des tâches Amazon ECS et AWS, ce qui peut être plus rapide et plus pratique que d'utiliser la console. Les outils de ligne de commande sont également utiles pour créer des scripts exécutant des tâches AWS.

AWS fournit deux jeux d'outils de ligne de commande : l'AWS Command Line Interface (AWS CLI) et les Outils AWS pour Windows PowerShell. Pour plus d'informations, consultez le AWS Command Line Interface Guide de l'utilisateur et le Guide de l'utilisateur Outils AWS pour Windows PowerShell.

Interface de ligne de commande Amazon ECS

En plus d'utiliser l'AWS CLI pour accéder aux ressources Amazon ECS, vous pouvez utiliser l'interface de ligne de commande Amazon ECS, qui fournit des commandes de haut niveau pour simplifier la création, la mise à jour et la surveillance des clusters et des tâches d'un environnement de développement local à l'aide de Docker Compose. Pour plus d'informations, consultez Utilisation de l'interface de ligne de commande Amazon ECS.

Kits SDK AWS

Nous proposons également des kits de développement logiciel (SDK) qui vous permettent d'accéder à Amazon ECS à l'aide d'une variété de langages de programmation. Les kits de développement logiciel prennent automatiquement en charge les tâches suivantes :

  • Signature cryptographique des demandes de service

  • Nouvelles tentatives de requête

  • Gestion des réponses d'erreur

Pour plus d'informations sur les kits SDK disponibles, consultez Outils pour Amazon Web Services.