Déploiements sur une plateforme de calcul Amazon ECS - AWS CodeDeploy

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éploiements sur une plateforme de calcul Amazon ECS

Cette rubrique fournit des informations sur les composants et le flux de travailCodeDeploy des déploiements qui utilisent la plateforme de calcul Amazon ECS.

Avant de commencer un déploiement Amazon ECS

Avant de commencer le déploiement d'une application Amazon ECS, vous devez disposer des éléments suivants. Certaines exigences sont spécifiées lorsque vous créez votre groupe de déploiement, tandis que d'autres sont spécifiées dans leAppSpec fichier.

Exigence Mention
Cluster Amazon ECS Groupe de déploiement
Amazon ECS service Groupe de déploiement
équilibreur de charge d'application Load Balancer ou Network Load Balancer Groupe de déploiement
Écouteur de production Groupe de déploiement
Écouteur de test (facultatif) Groupe de déploiement
Deux groupes cibles Groupe de déploiement
Définition de tâche Amazon ECS AppSpec file
Nom du conteneur AppSpec file
Port du conteneur AppSpec file
Cluster Amazon ECS

Un cluster Amazon ECS est un regroupement logique de tâches ou de services. Vous spécifiez le cluster Amazon ECS qui contient votre service Amazon ECS lorsque vous créez le groupe de déploiement de votreCodeDeploy application. Pour de plus amples informations, veuillez consulter Cluster Amazon ECS dans le Manuel de l'utilisateur Amazon Elastic Container Service.

Service Amazon ECS

Un service Amazon ECS gère et exécute des instances spécifiées d'une définition de tâche dans un cluster Amazon ECS. Votre service Amazon ECS doit être activé pourCodeDeploy. Par défaut, un service Amazon ECS est activé pour les déploiements Amazon ECS. Lorsque vous créez votre groupe de déploiement, vous choisissez de déployer un service Amazon ECS qui se trouve dans votre cluster Amazon ECS. Pour de plus amples informations, veuillez consulter les services Amazon ECS dans le Manuel de l'utilisateur Amazon Elastic Container Service.

équilibreur de charge d'application Load Balancer ou Network Load Balancer

Vous devez utiliser Elastic Load Balancing avec le service Amazon ECS que vous souhaitez mettre à jour avec un déploiement Amazon ECS. Vous pouvez utiliser un équilibreur de charge d'application Load Balancer ou un équilibreur Network Load Balancer. Nous recommandons un équilibreur de charge d'application afin que vous puissiez tirer parti de fonctionnalités telles que le mappage dynamique des ports et les règles de routage et de priorité basées sur les chemins. Vous spécifiez l'équilibreur de charge lors de la création du groupe de déploiement de votre application CodeDeploy. Pour plus d'informations, consultezConfiguration d'un équilibreur de charge, de groupes cibles et d'écouteurs pour les déploiements CodeDeploy Amazon ECS et créez un équilibreur de charge dans le Guide de l'utilisateur d'Amazon Elastic Container Service.

Un ou deux auditeurs

Un écouteur est utilisé par votre équilibreur de charge pour diriger le trafic vers vos groupes cibles. Un écouteur de production est obligatoire. Vous pouvez spécifier un deuxième écouteur de test facultatif qui dirige le trafic vers votre ensemble de tâches de remplacement lors de l'exécution des tests de validation. Vous spécifiez un écouteur ou les deux lors de la création de votre groupe de déploiement. Si vous utilisez la console Amazon ECS pour créer votre service Amazon ECS, vos écouteurs sont créés pour vous. Pour plus d'informations, consultez les écouteurs pour les équilibreurs de charge de vos applications dans le Guide de l'utilisateur d'Elastic Load Balancing et la section Création d'un service dans le Guide de l'utilisateur d'Amazon Elastic Container Service.

Deux groupes cibles Amazon ECS

Un groupe cible est utilisé pour acheminer le trafic vers une cible enregistrée. Un déploiement Amazon ECS nécessite deux groupes cibles : l'un pour l'ensemble de tâches d'origine de votre application Amazon ECS et l'autre pour son ensemble de tâches de remplacement. Pendant le déploiement, CodeDeploy crée un ensemble de tâches de remplacement et réachemine le trafic de l'ensemble de tâches d'origine vers le nouvel ensemble. Vous spécifiez les groupes cibles lors de la création du groupe de déploiement de votre application CodeDeploy.

Au cours d'un déploiement,CodeDeploy détermine quel groupe cible est associé à l'ensemble de tâches de votre service Amazon ECS ayant le statutPRIMARY (il s'agit de l'ensemble de tâches d'origine) et associe un groupe cible à celui-ci, puis associe l'autre groupe cible à l'ensemble de tâches de remplacement. Si vous effectuez un autre déploiement, le groupe cible associé à l'ensemble de tâches d'origine du déploiement actuel est associé à l'ensemble de tâches de remplacement du déploiement suivant. Pour de plus amples informations, veuillez consulter Groupes cibles de votre équilibreur de charge d'application dans le Guide de l'utilisateur Elastic Load Balancing.

Définition de tâche Amazon ECS

Une définition de tâche est requise pour exécuter le conteneur Docker qui contient votre application Amazon ECS. Vous spécifiez l'ARN de votre définition de tâche dans leAppSpec fichier de votreCodeDeploy application. Pour de plus amples informations, veuillez consulter Définitions de tâche Amazon ECS dans le Manuel de l'utilisateur Amazon Elastic Container et AppSpec section « ressources » pour les déploiements Amazon ECS.

Un conteneur pour votre application Amazon ECS

Un conteneur Docker est une unité de logiciel qui regroupe le code et ses dépendances afin que votre application puisse s'exécuter. Un conteneur isole votre application afin qu'elle s'exécute dans différents environnements informatiques. Votre équilibreur de charge dirige le trafic vers un conteneur de l'ensemble de tâches de votre application Amazon ECS. Vous indiquez le nom de votre conteneur dans leAppSpec fichier de votreCodeDeploy application. Le conteneur spécifié dans votreAppSpec fichier doit être l'un des conteneurs spécifiés dans votre définition de tâche Amazon ECS. Pour de plus amples informations, veuillez consulter Qu'est-ce qu'Amazon Elastic Container Service ? dans le guide de l'utilisateur d'Amazon Elastic Container Service et AppSpec section « ressources » pour les déploiements Amazon ECS.

Un port pour votre ensemble de tâches de remplacement

Au cours de votre déploiement Amazon ECS, votre équilibreur de charge dirige le trafic vers ce port sur le conteneur spécifié dans leAppSpec fichier de votreCodeDeploy application. Vous spécifiez le port dans leAppSpec fichier de votreCodeDeploy application. Pour plus d'informations, veuillez consulter AppSpec section « ressources » pour les déploiements Amazon ECS.

Flux de travail de déploiement (haut niveau) sur une plateforme de calcul Amazon ECS

Le schéma suivant montre les principales étapes du déploiement des services Amazon ECS mis à jour.

Les étapes sont les suivantes :

  1. Créez une application AWS CodeDeploy en spécifiant un nom qui représente de façon unique les éléments à déployer. Pour déployer une application Amazon ECS, choisissez la plateforme de calcul Amazon ECS dans votreAWS CodeDeploy application. CodeDeployutilise une application pendant un déploiement pour référencer les composants de déploiement appropriés, tels que le groupe de déploiement, les groupes cibles, les écouteurs, le comportement de redirection du trafic et la révision de l'application. Pour plus d'informations, veuillez consulter Créez une application avec CodeDeploy.

  2. Configurez un groupe de déploiement en spécifiant les éléments suivants :

    • Le nom du groupe de déploiement.

    • Votre cluster Amazon ECS et le nom de votre service. Le contrôleur de déploiement du service Amazon ECS doit être configuré surCodeDeploy.

    • L'écouteur de production, un écouteur de test facultatif et les groupes cibles utilisés au cours d'un déploiement.

    • Les paramètres de déploiement, tels que le moment où il faut rediriger le trafic de production vers l'ensemble de tâches Amazon ECS de remplacement dans votre service Amazon ECS et quand mettre fin à l'ensemble de tâches Amazon ECS d'origine dans votre service Amazon ECS.

    • Des paramètres facultatifs, tels que les déclencheurs, les alarmes et le comportement de restauration.

  3. Spécifiez un fichier de spécifications d'application (AppSpecfichier). Vous pouvez le télécharger sur Amazon S3, le saisir dans la console au format YAML ou JSON, ou le spécifier à l'aide du SDKAWS CLI ou. LeAppSpec fichier spécifie une définition de tâche Amazon ECS pour le déploiement, le nom du conteneur et le mappage des ports utilisés pour acheminer le trafic, et les fonctions Lambda exécutées après les interruptions du cycle de vie du déploiement. Le nom du conteneur doit être un conteneur dans votre définition de tâche Amazon ECS. Pour plus d'informations, veuillez consulter Utilisation des révisions d'application pour CodeDeploy.

  4. Déployez la version de votre application. AWS CodeDeployredirige le trafic depuis la version d'origine d'un ensemble de tâches de votre service Amazon ECS vers un nouvel ensemble de tâches de remplacement. Les groupes cibles spécifiés dans le groupe de déploiement sont utilisés pour diriger le trafic vers les ensembles de tâches d'origine et de remplacement. Lorsque le déploiement est terminé, l'ensemble de tâches d'origine est arrêté. Vous pouvez spécifier un écouteur de test facultatif pour diriger le trafic de test vers votre version de remplacement avant que le trafic soir réacheminé vers celle-ci. Pour plus d'informations, veuillez consulter Créez un déploiement avec CodeDeploy.

  5. Vérifiez les résultats du déploiement. Pour plus d'informations, veuillez consulter Surveillance des déploiements dans CodeDeploy.

Que se passe-t-il lors d'un déploiement Amazon ECS

Avant de démarrer un déploiement Amazon ECS avec un écouteur de test, vous devez configurer ses composants. Pour plus d'informations, veuillez consulter Avant de commencer un déploiement Amazon ECS.

Le schéma suivant montre la relation entre ces composants lorsqu'un déploiement Amazon ECS est prêt à démarrer.

Lorsque le déploiement démarre, les événements de cycle de vie du déploiement s’exécutent les uns après les autres. Certains événements du cycle de vie sont des hooks qui exécutent uniquement les fonctions Lambda spécifiées dans leAppSpec fichier. Dans le tableau suivant, les événements de cycle de vie du déploiement sont répertoriés dans leur ordre d’exécution. Pour plus d'informations, veuillez consulter AppSpec section « hooks » pour un déploiement Amazon ECS.

événement du cycle de vie Action d'événement de cycle de vie
BeforeInstall(un hook pour les fonctions Lambda) Exécutez des fonctions Lambda.
Installation Configuration de l’ensemble de tâches de remplacement.
AfterInstall(un hook pour les fonctions Lambda) Exécutez des fonctions Lambda.
AllowTestTraffic Acheminement du trafic de l'écouteur de test au groupe cible 2.
AfterAllowTestTraffic(un hook pour les fonctions Lambda) Exécutez des fonctions Lambda.
BeforeAllowTraffic(un hook pour les fonctions Lambda) Exécutez des fonctions Lambda.
AllowTraffic Acheminement du trafic de l'écouteur de production au groupe cible 2.
AfterAllowTraffic Exécutez des fonctions Lambda.

Note

Les fonctions Lambda d'un hook sont facultatives.

  1. Exécutez toutes les fonctions Lambda spécifiées dans leBeforeInstall hook duAppSpec fichier.

  2. Au cours de l'événement de cycle de vie Install :

    1. Un ensemble de tâches de remplacement est créé dans votre service Amazon ECS.

    2. L’application conteneurisée mise à jour est installée dans l’ensemble de tâches de remplacement.

    3. Le deuxième groupe cible est associé à l’ensemble de tâches de remplacement.

    Ce schéma présente les composants de déploiement avec le nouvel ensemble de tâches de remplacement. L'application conteneurisée est à l'intérieur de cet ensemble de tâches. L’ensemble de tâches se compose de trois tâches. (Une application peut comporter n’importe quel nombre de tâches.) Le deuxième groupe cible est désormais associé à l’ensemble de tâches de remplacement.

  3. Exécutez toutes les fonctions Lambda spécifiées dans leAfterInstall hook duAppSpec fichier.

  4. L'événement AllowTestTraffic est appelé. Durant cet événement de cycle de vie, l’écouteur de test achemine le trafic vers l'application conteneurisée mise à jour.

  5. Exécutez toutes les fonctions Lambda spécifiées dans leAfterAllowTestTraffic hook duAppSpec fichier. Les fonctions Lambda peuvent valider le déploiement à l'aide du trafic de test. Par exemple, une fonction Lambda peut diriger le trafic vers l'écouteur de test et suivre les métriques de l’ensemble de tâches de remplacement. Si les annulations sont configurées, vous pouvez configurer uneCloudWatch alarme qui déclenche une annulation lorsque le test de validation de votre fonction Lambda échoue.

    Une fois les tests de validation terminés, l'une des actions suivantes se produit :

    • Si la validation échoue et que des restaurations sont configurées, le statut du déploiement est défini sur Failed et les composants reviennent à l’état dans lequel ils étaient au démarrage du déploiement.

    • Si la validation échoue et qu’aucune restauration n’est configurée, le statut du déploiement est défini sur Failed et les composants restent dans leur état actuel.

    • Si la validation aboutit, le déploiement se poursuit avec le hook BeforeAllowTraffic.

    Pour plus d'informations, consultez Surveillance des déploiements avec des alarmes CloudWatch dans CodeDeploy, Restaurations automatiques et Configuration des options avancées d'un groupe de déploiement.

  6. Exécutez toutes les fonctions Lambda spécifiées dans leBeforeAllowTraffic hook duAppSpec fichier.

  7. L'événement AllowTraffic est appelé. Le trafic de production est redirigé de l’ensemble de tâches d'origine vers l'ensemble de tâches de remplacement. Sur le schéma suivant, l’ensemble de tâches de remplacement reçoit du trafic de production.

  8. Exécutez toutes les fonctions Lambda spécifiées dans leAfterAllowTraffic hook duAppSpec fichier.

  9. Une fois tous les événements réussis, le statut du déploiement est défini sur Succeeded et l’ensemble de tâches d'origine est supprimé.

Téléchargement de la révision de votre application

Importez unAppSpec fichier dans Amazon S3 ou saisissez-le directement dans la console ouAWS CLI. Pour plus d'informations, veuillez consulter Application Specification Files.

Création de vos groupes d'applications et de déploiement

Un groupe deCodeDeploy déploiement sur une plateforme de calcul Amazon ECS identifie les récepteurs destinés à acheminer le trafic vers votre application Amazon ECS mise à jour et deux groupes cibles utilisés lors de votre déploiement. Un groupe de déploiement définit également un ensemble d'options de configuration, notamment les alarmes et les configurations de restauration.

Déployez la version de votre application

Maintenant, vous êtes prêt à déployer le service Amazon ECS mis à jour spécifié dans votre groupe de déploiement. Vous pouvez utiliser laCodeDeploy console ou la commande create-deployment. Vous pouvez spécifier certains paramètres pour contrôler votre déploiement, y compris la révision et le groupe de déploiement.

Mise à jour de votre application

Vous pouvez mettre à jour votre application, puis utiliser laCodeDeploy console ou appeler la commande create-deployment pour effectuer une révision.

Déploiements interrompus et échoués

Vous pouvez utiliser laCodeDeploy console ou la commande stop-deployment pour arrêter un déploiement. Lorsque vous essayez d'arrêter le déploiement, trois choses peuvent se produire :

  • Le déploiement s'arrête et l'opération renvoie un statut de réussite. Dans ce cas, aucun événement de cycle de vie de déploiement supplémentaire ne se déroule sur le groupe de déploiement pour le déploiement arrêté.

  • Le déploiement ne s'arrête pas immédiatement et l'opération renvoie un statut d'attente. Dans ce cas, certains événements de cycle de vie de déploiement peuvent encore se dérouler sur le groupe de déploiement. Une fois l'opération en attente terminée, les appels suivants visant à arrêter le déploiement renvoient un statut de réussite.

  • Le déploiement ne peut pas s'arrêter et l'opération renvoie une erreur. Pour plus d'informations, consultez les sections Informations sur les erreurs et Erreurs courantes dans la référenceAWS CodeDeploy d'API.

Redéploiements et annulations de déploiements

CodeDeploy implémente les restaurations en réacheminant le trafic depuis l'ensemble de tâches de remplacement vers l'ensemble de tâches d'origine.

Vous pouvez configurer un groupe de déploiement pour restaurer automatiquement les déploiements lorsque certaines conditions sont remplies, y compris lorsqu'un déploiement échoue, ou si un seuil de surveillance d'alarme est atteint. Vous pouvez également remplacer les paramètres de restauration spécifiés pour un groupe de déploiement dans un déploiement individuel.

Vous pouvez également choisir de restaurer un déploiement ayant échoué en redéployant manuellement une révision précédemment déployée.

Dans tous les cas, un déploiement nouveau ou annulé est attribué à son propre identifiant de déploiement. La console CodeDeploy affiche une liste des déploiements qui résultent d'un déploiement automatique.

Si vous effectuez un autre déploiement, le groupe cible associé à l'ensemble de tâches d'origine du déploiement actuel est associé à l'ensemble de tâches de remplacement du déploiement.

Pour plus d'informations, veuillez consulter Redéploiement et restauration d'un déploiement avec CodeDeploy.

Déployez bleu/vert Amazon ECS viaAWS CloudFormation

Vous pouvez utiliserAWS CloudFormation pour gérer les déploiements bleu/vert Amazon ECS viaCodeDeploy. Pour plus d'informations, veuillez consulter Créez un déploiement bleu/vert Amazon ECS via AWS CloudFormation.

Note

La gestion des déploiements bleu/vert Amazon ECS n'AWS CloudFormationest pas disponible dans la région Asie-Pacifique (Osaka).