Amazon ECS a publié AWS Copilot, un nouvel outil d'interface de ligne de commande,
Pour déployer et exploiter des conteneurs dans AWS

Amazon Web Service a publié la semaine dernière AWS Copilot, son nouvel outil d'interface de ligne de commande qui aide les clients à développer, mettre en ligne et exploiter des applications conteneurisées sur AWS. Selon un billet de blog publié jeudi dernier, AWS Copilot crée, avec seulement quelques commandes, toute l'infrastructure et tous les artefacts nécessaires à l'exécution d'un service prêt pour la production sur Amazon ECS et AWS Fargate. Ceci comprend les définitions de tâches, les référentiels d'images et les ressources AWS telles que les équilibreurs de charge et les pipelines de déploiement.

AWS a créé le premier outil officiel de ligne de commande pour le service Amazon Elastic Container Service (ECS CLI) en 2015. En décembre 2019, une seconde version repensée d’ECS CLI a été publiée pour faciliter le déploiement des applications sur Amazon ECS. AWS vient de partager une nouvelle expérience de ligne de commande avec les dernières mises à jour ainsi que le nouveau nom officiel de l’outil : AWS Copilot.


Selon Amazon ECS, AWS Copilot est conçu à la fois pour les utilisateurs ECS existants et pour les nouveaux utilisateurs ECS qui souhaitent aller au-delà de la gestion manuelle des infrastructures de niveau inférieur. Copilot crée des déploiements d'applications modernes par défaut, basés sur des modèles prêts à la production qui incluent les meilleures pratiques conçues par les ingénieurs et les clients d'ECS au fil des ans. L’outil aidera les utilisateurs des services ECS à se concentrer sur le développement de leurs applications plutôt que sur la mise en place d'une infrastructure, d’après Amazon ECS.

« Si vous concevez une nouvelle application, vous commencez probablement par un tableau blanc ou un diagramme mental qui comporte des cases pour chaque service et des lignes pour la façon dont ils vont se parler. Mais plus tard, quand il s'agit de créer cette architecture, il y a beaucoup d'autres composants du Cloud auxquels il faut penser : sous-réseaux VPC, équilibreurs de charge, pipelines de déploiement et stockage durable des données de votre application. Copilot s'occupe de tous ces détails sous-jacents pour vous », lit-on dans le billet l’article d’Amazon.

« Vous pouvez même demander à Copilot de créer un pipeline de déploiement qui redéploiera automatiquement la dernière version de votre application chaque fois que vous enverrez une nouvelle validation dans votre dépôt de code ».

Selon AWS, dès que votre service ECS est opérationnel, vous n’aurez qu’à utiliser des commandes intégrées dans AWS Copilot pour ajouter facilement d'autres services, des infrastructures comme des bases de données ou des compartiments Amazon S3, voire de nouveaux environnements de déploiement dans différents comptes et régions. Vous pouvez en outre consulter l'état et les journaux de tous vos services en quelques secondes depuis votre terminal. Enfin, AWS Copilot vous permet de choisir un modèle de collaboration adapté à votre équipe. Lorsque vous utilisez AWS Copilot, vous pouvez travailler seul ou partager votre application avec d'autres utilisateurs dans votre compte AWS.

Les concepts d’AWS Copilot

Le nouvel outil d'interface de ligne de commande a trois concepts principaux :

- Application : une application est un mécanisme de regroupement des éléments de votre système. Selon Amazon ECS, vous devez diviser vos composants en applications Copilot qui correspondent aux différentes équipes de votre organisation. Par exemple, si vous avez encore une petite organisation avec une équipe de développement unifiée qui travaille sur un peu de tout, vous pouvez probablement organiser les choses comme une seule application composée d'un ou plusieurs services. Mais si vous avez plusieurs équipes, chacune responsable d'un seul groupe de composants, et très peu de travail en équipe croisée, alors chaque équipe devrait avoir sa propre application Copilot.

- Environnement : un environnement est une étape du déploiement d'une application. Par exemple, vous pouvez commencer par déployer une application dans un environnement "QA" afin qu'elle puisse être testée sans impact sur vos clients. Une fois qu'il a été vérifié qu'elle fonctionne comme prévu, vous déployez cette version de l'application dans l'environnement "Production" afin que vos clients puissent y accéder.

- Service : un service est un processus de code unique de longue durée à l'intérieur d'un conteneur. Une application se compose d'un ou de plusieurs services. Si vous utilisez une architecture monolithique, il est probable que chaque application n'aura qu'un seul service. Une architecture plus distribuée utilisera plusieurs services pour chaque application. Par exemple, vous pouvez avoir un service "site Web" avec un équilibreur de charge, un service "API" interne qui n'est accessible que par la découverte de services, et un service "background worker" qui travaille sur des tâches en dehors d'une file d'attente. Ensemble, ces services constituent les éléments d'une seule et même application.

Pour installer AWS Copilot, vous pouvez télécharger la dernière version sur GitHub sur votre machine de développement, à l’aide des instructions ci-dessous :

curl -Lo /usr/local/bin/copilot https://github.com/aws/copilot-cli/r...-darwin-v0.1.0 &&
chmod +x /usr/local/bin/copilot &&
copilot --help


Docker sera utilisé par AWS Copilot pour construire et empaqueter votre application, vous devez donc vous assurer que Docker est installé sur votre machine de développement, d’après AWS.

Démarrer avec votre première application conteneurisée

Selon Nathan Peck, promoteur de services de conteneurs chez Amazon Web Services et auteur du billet de blog, la première étape de toute application conteneurisée est son Dockerfile. Le Dockerfile est un petit fichier qui décrit les dépendances et les fichiers dont votre application a besoin, ainsi que le programme à exécuter dans le conteneur. Pour faire une démonstration, Peck a utilisé un simple serveur Web statique NGINX, avec un Dockerfile qui ressemble au fichier ci-dessous :

FROM nginx:alpine
EXPOSE 80
COPY . /usr/share/nginx/html


Le Dockerfile indique à Docker de commencer avec un conteneur préconstruit qui contient déjà NGINX, puis d'ajouter quelques fichiers HTML locaux au conteneur. Le fichier inclus également une déclaration EXPOSE pour que Copilot sache quel port d'application doit être exposé via un équilibreur de charge. Ensuite, la commande copilot init est exécutée dans le répertoire d'application :


Copilot trouve automatiquement le Dockerfile, selon Peck et crée un environnement dans lequel le service peut être déployé. Il construit et pousse le conteneur vers le Cloud. En fin de compte, il donne une URL où l’utilisateur peut accéder à l'application. Lorsque l'application est opérationnelle, comme ici dans l’exemple, vous pouvez charger son URL dans votre navigateur et envoyer des requêtes :


Après avoir fait quelques requêtes Web aux services NGINX conteneurisés, comme dans le cas de l’exemple, vous pouvez utiliser Copilot pour voir les journaux de votre application en cours d'exécution à l’aide de la commande : copilot svc logs --follow

Pour le déploiement d’un environnement de production afin d’être prêt pour le trafic de production, il faut toujours mettre en place un nouvel environnement avec la commande copilot env init, après la toute première application que vous déployez dans Copilot. Cette première application qui démarrera avec la configuration par défaut ne déploie qu'un seul petit conteneur.

En résumé, vous fournissez votre Dockerfile, et laissez l’outil Copilot construire, pousser et lancer votre conteneur sur AWS. Mais, selon Peck, ceci n'est que le début des puissantes fonctionnalités de Copilot. D’autres fonctions sont encore en développement, tel qu’un moyen facile de configurer un pipeline de CI/CD automatiquement pour que vous puissiez le déployer en poussant simplement vers un dépôt Git.

Source : AWS

Et vous ?

Qu’en pensez-vous ?
Avez-vous utilisé Amazon ECS CLI ? Que pensez-vous des fonctionnalités d’AWS Copilot ?

Voir aussi :

Amazon Web Services annonce la disponibilité de CodeGuru, une solution de révision de code pour améliorer ses performances, qui se décline en deux services : CodeGuru Reviewer et CodeGuru Profiler
Amazon Web Services annonce la disponibilité d'AWS CodeArtifact, un service de dépôt d'artefacts logiciels entièrement géré
Cloud : Amazon Web Services lance Amazon LightSail, un nouveau service pour faciliter l'accès et la gestion des serveurs privés virtuels