Déployez une application en cluster sur Amazon ECS à l'aide d'AWS Copilot - Recommandations AWS

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éployez une application en cluster sur Amazon ECS à l'aide d'AWS Copilot

Créée par Jean-Baptiste Guillois (AWS), Mathew George (AWS) et Thomas Scott (AWS)

Référentiel de code : démonstration d'un exemple d'application en cluster

Environnement : Production

Technologies : conteneurs et microservices ; productivité des entreprises ; technologie native du cloud ; développement et tests de logiciels

Services AWS : Amazon ECS ; AWS Fargate ; Amazon ECR

Récapitulatif

Ce modèle montre comment déployer des conteneurs dans un cluster Amazon Elastic Container Service (Amazon ECS) de deux manières : en utilisant la console de gestion Amazon Web Services (AWS) et en utilisant AWS CoPilot, afin de montrer comment AWS Copilot simplifie les tâches de déploiement.

Amazon ECS est un service de gestion de conteneurs rapide et hautement évolutif qui facilite l'exécution, l'arrêt et la gestion des conteneurs sur un cluster. Vos conteneurs sont définis dans une définition de tâche qui vous sert à exécuter des tâches individuelles ou des tâches dans un service. Vous pouvez exécuter vos tâches et services sur une infrastructure sans serveur gérée par AWS Fargate. Pour mieux contrôler votre infrastructure, vous pouvez également exécuter vos tâches et services sur un cluster d'instances Amazon Elastic Compute Cloud (Amazon EC2) que vous gérez.

Les commandes de l'interface de ligne de commande (CLI) AWS Copilot simplifient la création, le lancement et l'exploitation d'applications conteneurisées prêtes pour la production sur Amazon ECS à partir d'un environnement de développement local. La CLI AWS Copilot s'aligne sur les flux de travail des développeurs qui prennent en charge les meilleures pratiques en matière d'applications modernes, qu'il s'agisse de l'utilisation de l'infrastructure sous forme de code ou de la création d'un pipeline d'intégration et de livraison continues (CI/CD) provisionné pour le compte d'un utilisateur. Vous pouvez utiliser l'interface de ligne de commande AWS Copilot dans le cadre de votre cycle quotidien de développement et de test comme alternative à l'AWS Management Console.

Conditions préalables et limitations

Prérequis

  • Un compte AWS actif

  • Interface de ligne de commande AWS (AWS CLI) installée localement et configurée pour utiliser votre compte AWS (consultez les instructions d'installation et les instructions de configuration dans la documentation de l'AWS CLI)

  • AWS Copilot installé localement (consultez les instructions d'installation dans la documentation Amazon ECS)

  • Docker installé sur votre machine locale (voir la documentation Docker)

Limites

  • Docker applique des limites d'extraction de 100 images de conteneur par 6 heures et par adresse IP dans le cadre du forfait gratuit.

Architecture

Pile technologique cible

  • Environnement AWS configuré avec un cloud privé virtuel (VPC), des sous-réseaux publics et privés et des groupes de sécurité

  • Cluster Amazon ECS

  • Définition du service et des tâches Amazon ECS

  • Amazon Elastic Container Registry (Amazon ECR)

  • Amazon DynamoDB

  • Application Load Balancer

  • AWS Fargate

  • Amazon Identity and Access Management (IAM) (IAM)

  • Amazon CloudWatch

  • AWS CloudTrail

Architecture cible

Lorsque vous déployez l'exemple d'application correspondant à ce modèle, plusieurs tâches sont créées et déployées dans des zones de disponibilité distinctes. Chaque tâche stocke les données dans Amazon DynamoDB. Lorsque vous accédez à la page Web d'une tâche, vous pouvez consulter les données de toutes les autres tâches.

Architecture pour le déploiement de conteneurs avec AWS Copilot

Outils

Services AWS

  • Amazon ECR Amazon Elastic Container Registry (Amazon ECR) est un service de registre d'images de conteneurs géré par AWS qui est sécurisé, évolutif et fiable. Amazon ECR prend en charge les référentiels privés avec des autorisations basées sur les ressources à l'aide d' IAM.

  • Amazon ECS — Amazon Elastic Container Service (Amazon ECS) est un service de gestion de conteneurs rapide et hautement évolutif permettant d'exécuter, d'arrêter et de gérer des conteneurs sur un cluster. Vous pouvez exécuter vos tâches et services sur une infrastructure sans serveur gérée par AWS Fargate. Pour mieux contrôler votre infrastructure, vous pouvez également exécuter vos tâches et services sur un cluster d'instances Amazon Elastic Compute Cloud (Amazon EC2) que vous gérez.

  • AWS Copilot — AWS Copilot fournit une interface de ligne de commande qui vous aide à lancer et à gérer des applications conteneurisées sur AWS, notamment en les transférant vers un registre, en créant une définition de tâche et en créant un cluster.

  • AWS Fargate — AWS Fargate est un moteur de calcul pay-as-you-go sans serveur qui vous permet de vous concentrer sur le développement d'applications sans gérer de serveurs. AWS Fargate est compatible avec Amazon ECS et Amazon Elastic Kubernetes Service (Amazon EKS). Lorsque vous exécutez vos tâches et services Amazon ECS avec le type de lancement Fargate ou un fournisseur de capacité Fargate, vous créez le package de votre application dans des conteneurs, spécifiez les besoins en CPU et mémoire, définissez les stratégies réseaux et IAM, et vous lancez l'application. Chaque tâche Fargate possède sa propre limite d'isolation et ne partage pas le noyau sous-jacent, les ressources du processeur, les ressources de mémoire ou l'interface elastic network avec une autre tâche.

  • Amazon DynamoDB — Amazon DynamoDB est un service de base de données NoSQL entièrement géré qui fournit des performances rapides et prévisibles ainsi qu'une évolutivité sans faille.

  • Elastic Load Balancing (ELB) — Elastic Load Balancing distribue automatiquement votre trafic entrant sur plusieurs cibles, telles que les instances EC2, les conteneurs et les adresses IP, dans une ou plusieurs zones de disponibilité. Il contrôle l'état des cibles enregistrées et achemine le trafic uniquement vers les cibles saines. Elastic Load Balancing met à l'échelle votre équilibreur de charge à mesure que votre trafic entrant change au fil du temps. Il est capable de s'adapter automatiquement à la plupart des applications.

Outils

Code

Le code de l'exemple d'application utilisé dans ce modèle est disponible sur GitHub, dans le référentiel Cluster Sample Application. Suivez les instructions de la section suivante pour utiliser les fichiers d'exemple.

Épopées

TâcheDescriptionCompétences requises
Clonez le GitHub dépôt.

Clonez le référentiel d'exemples de code à l'aide de la commande :

git clone https://github.com/aws-samples/cluster-sample-app cluster-sample-app && cd cluster-sample-app
Développeur d'applications, AWS DevOps
Créez votre référentiel Amazon ECR.
  1. Connectez-vous à l'AWS Management Console et ouvrez la console Amazon ECR à l'adresse https://console.aws.amazon.com/ecr/repositories.

  2. Choisissez Créer un référentiel.

  3. Pour le nom du référentiel, entrez cluster-sample-app.

  4. Pour tous les autres paramètres, conservez les valeurs par défaut.

  5. Choisissez Créer un référentiel.

Pour plus d'informations, consultez la section Création d'un référentiel privé dans la documentation Amazon ECR.

Développeur d'applications, AWS DevOps
Créez, balisez et transférez votre image Docker dans votre référentiel Amazon ECR.
  1. Sélectionnez le référentiel que vous venez de créer et choisissez Afficher les commandes push.

  2. Copiez les commandes affichées et exécutez-les localement pour créer, étiqueter et envoyer votre image docker. Ces commandes seront similaires aux suivantes.

Pour authentifier votre client Docker auprès du registre :

aws ecr get-login-password --region <YOUR_AWS_REGION> | docker login --username AWS --password-stdin <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com

Pour créer votre image Docker :

docker build -t cluster-sample-app .

Pour baliser votre image Docker :

docker tag cluster-sample-app:latest <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com/cluster-sample-app:latest

Pour transférer l'image Docker vers votre dépôt :

docker push <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com/cluster-sample-app:latest
Développeur d'applications, AWS DevOps
Déployez la pile d'applications.
  1. Ouvrez la CloudFormation console AWS à l'adresse https://console.aws.amazon.com/cloudformation/.

  2. Sélectionnez Créer la pile.

  3. Dans la section Préparer le modèle, sélectionnez Le modèle est prêt.

  4. Dans la section Spécifier un modèle, sélectionnez Charger un modèle de fichier.

  5. Choisissez le fichier local cluster-sample-app-stack.yml que vous avez cloné depuis le GitHub référentiel comme CloudFormation modèle, puis choisissez Next.

  6. Entrez un nom pour votre pile, puis choisissez Next.

  7. Conservez toutes les options par défaut, puis choisissez Next.

  8. Passez en revue toutes les options, confirmez la création des ressources IAM, puis choisissez Create stack.

  9. Lorsque votre pile d'applications a été déployée, choisissez l'onglet Sortie, copiez l'URL et ouvrez-la dans votre navigateur pour accéder à l'application.

Pour plus d'informations sur le déploiement CloudFormation de modèles, consultez la section Création d'une pile dans la CloudFormation documentation AWS.

AWS DevOps, développeur d'applications
TâcheDescriptionCompétences requises
Clonez le GitHub dépôt.

Clonez le référentiel d'exemples de code à l'aide de la commande :

git clone https://github.com/aws-samples/cluster-sample-app cluster-sample-app && cd cluster-sample-app
Développeur d'applications, AWS DevOps
Déployez votre image de conteneur sur AWS à l'aide de la CLI AWS Copilot.

Déployez l'application en une seule étape à l'aide de la commande suivante dans le répertoire racine de votre projet :

copilot init --app cluster-sample-app --name demo --type "Load Balanced Web Service" --dockerfile ./Dockerfile --port 8080 --deploy

Vous devriez ensuite pouvoir accéder à l'application en utilisant le nom DNS fourni en sortie.

Développeur d'applications, AWS DevOps
TâcheDescriptionCompétences requises
Supprimez les ressources créées via l'AWS Management Console.

Si vous avez utilisé l'option 1 (AWS Management Console) pour déployer la pile d'applications, suivez ces étapes lorsque vous êtes prêt à supprimer les ressources que vous avez créées :

  1. Ouvrez la CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation/.

  2. Sélectionnez la pile que vous avez créée, puis choisissez Supprimer.

  3. Ouvrez la console Amazon ECR à l'adresse https://console.aws.amazon.com/ecr/repositories.

  4. Sélectionnez le référentiel que vous avez créé, puis choisissez Supprimer.

Développeur d'applications, AWS DevOps
Supprimez les ressources créées par AWS Copilot.

Si vous avez utilisé l'option 2 (la CLI AWS Copilot) pour déployer la pile d'applications, exécutez la commande suivante depuis le répertoire racine de votre projet lorsque vous êtes prêt à supprimer les ressources que vous avez créées :

copilot app delete
Développeur d'applications, AWS DevOps

Ressources connexes