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

Cette rubrique fournit des informations sur les composants et le flux de travail des CodeDeploy déploiements utilisant la plateforme de ECS calcul Amazon.

Avant de commencer un ECS déploiement sur Amazon

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

Exigence Mention
ECSCluster Amazon Groupe de déploiement
ECSService Amazon Groupe de déploiement
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 des ECS tâches Amazon AppSpec fichier
Nom du conteneur AppSpec fichier
Port du conteneur AppSpec fichier
ECSCluster Amazon

Un ECS cluster Amazon est un regroupement logique de tâches ou de services. Vous spécifiez le ECS cluster Amazon qui contient votre ECS service Amazon lorsque vous créez le groupe de déploiement de votre CodeDeploy application. Pour plus d'informations, consultez les ECSclusters Amazon dans le guide de l'utilisateur d'Amazon Elastic Container Service.

ECSService Amazon

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

Application Load Balancer ou Network Load Balancer

Vous devez utiliser Elastic Load Balancing avec le ECS service Amazon que vous souhaitez mettre à jour avec un ECS déploiement Amazon. Vous pouvez utiliser un Application Load Balancer ou un Network Load Balancer. Nous recommandons un Application Load Balancer afin que vous puissiez tirer parti de fonctionnalités telles que le mappage dynamique des ports, le routage basé sur le chemin et les règles de priorité. Vous spécifiez l'équilibreur de charge lorsque vous créez le groupe de déploiement de votre CodeDeploy application. Pour plus d'informations, consultez la section Création Configuration d'un équilibreur de charge, de groupes cibles et d'écouteurs pour les déploiements CodeDeploy Amazon ECS d'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 ECS console Amazon pour créer votre ECS service Amazon, vos écouteurs sont créés pour vous. Pour plus d'informations, consultez les sections Listeners for your application load balancers dans le guide de l'utilisateur d'Elastic Load Balancing et Creating a service dans le guide de l'utilisateur d'Amazon Elastic Container Service.

Deux groupes ECS cibles Amazon

Un groupe cible est utilisé pour acheminer le trafic vers une cible enregistrée. Un ECS déploiement Amazon nécessite deux groupes cibles : un pour l'ensemble de tâches d'origine de votre ECS application Amazon et un pour son ensemble de tâches de remplacement. Au cours du déploiement, CodeDeploy crée un ensemble de tâches de remplacement et redirige le trafic de l'ensemble de tâches d'origine vers le nouveau. Vous spécifiez les groupes cibles lorsque vous créez le groupe de déploiement de votre CodeDeploy application.

Au cours d'un déploiement, CodeDeploy déterminez quel groupe cible est associé à l'ensemble de tâches de votre ECS service Amazon ayant le statut PRIMARY (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 plus d'informations, consultez la section Groupes cibles pour les équilibreurs de charge de votre application dans le guide de l'utilisateur d'Elastic Load Balancing.

Définition d'une ECS tâche Amazon

Une définition de tâche est requise pour exécuter le conteneur Docker qui contient votre ECS application Amazon. Vous spécifiez la définition ARN de votre tâche dans le AppSpec fichier de votre CodeDeploy application. Pour plus d'informations, consultez les définitions des ECS tâches Amazon dans le guide de l'utilisateur d'Amazon Elastic Container Service et AppSpec section « ressources » pour les ECS déploiements Amazon.

Un conteneur pour votre ECS application Amazon

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 ECS application Amazon. Vous spécifiez le nom de votre conteneur dans le AppSpec fichier de votre CodeDeploy application. Le conteneur spécifié dans votre AppSpec fichier doit être l'un des conteneurs spécifiés dans votre définition de ECS tâche Amazon. Pour plus d'informations, consultez 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 ECS déploiements Amazon.

Un port pour votre ensemble de tâches de remplacement

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

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

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

Comment CodeDeploy déploie une application en tant qu'ensemble de tâches sur AmazonECS.

Les étapes sont les suivantes :

  1. Créez une AWS CodeDeploy application en spécifiant un nom qui représente de manière unique ce que vous souhaitez déployer. Pour déployer une ECS application Amazon, choisissez dans votre AWS CodeDeploy application la plateforme de ECS calcul Amazon. CodeDeploy utilise une application lors d'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 réacheminement du trafic et la révision de l'application. Pour de plus amples 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 ECS cluster Amazon et le nom de votre service. Le contrôleur de déploiement du ECS service Amazon doit être configuré sur CodeDeploy.

    • 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ù le trafic de production doit être redirigé vers l'ensemble de ECS tâches Amazon de remplacement dans votre ECS service Amazon et le moment où il convient de mettre fin à l'ensemble de ECS tâches Amazon d'origine dans votre ECS service Amazon.

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

  3. Spécifiez un fichier de spécification d'application (AppSpec fichier). Vous pouvez le télécharger sur Amazon S3, le saisir dans la console JSON au format YAML ou le spécifier avec le AWS CLI ouSDK. Le AppSpec fichier spécifie une définition de ECS tâche Amazon pour le déploiement, un nom de conteneur et un mappage de port utilisés pour acheminer le trafic, et les fonctions Lambda s'exécutent après les hooks du cycle de vie du déploiement. Le nom du conteneur doit être un conteneur dans votre définition de ECS tâche Amazon. Pour de plus amples informations, veuillez consulter Travailler avec les révisions d'applications pour CodeDeploy.

  4. Déployez la révision de votre application. AWS CodeDeploy redirige le trafic de la version d'origine d'un ensemble de tâches de votre ECS service Amazon 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 de plus amples informations, veuillez consulter Créez un déploiement avec CodeDeploy.

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

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

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

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

La relation entre l'équilibreur de charge, les auditeurs, les groupes cibles et l'ensemble de tâches lorsqu'un ECS déploiement Amazon 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 le AppSpec 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 de plus amples informations, veuillez consulter AppSpec section « hooks » pour un ECS déploiement sur Amazon.

Événement lié au cycle Action liée aux événements liés au cycle
BeforeInstall(un crochet pour les fonctions Lambda) Exécutez les fonctions Lambda.
Installation Configuration de l’ensemble de tâches de remplacement.
AfterInstall(un crochet pour les fonctions Lambda) Exécutez les fonctions Lambda.
AllowTestTraffic Acheminement du trafic de l'écouteur de test au groupe cible 2.
AfterAllowTestTraffic(un crochet pour les fonctions Lambda) Exécutez les fonctions Lambda.
BeforeAllowTraffic(un crochet pour les fonctions Lambda) Exécutez les fonctions Lambda.
AllowTraffic Acheminement du trafic de l'écouteur de production au groupe cible 2.
AfterAllowTraffic Exécutez les fonctions Lambda.

Note

Les fonctions Lambda d'un hook sont facultatives.

  1. Exécute toutes les fonctions Lambda spécifiées dans le BeforeInstall hook du fichier. AppSpec

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

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

    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.

    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. Le deuxième groupe cible est désormais associé à l’ensemble de tâches de remplacement.
  3. Exécute toutes les fonctions Lambda spécifiées dans le AfterInstall hook du fichier. AppSpec

  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.

    L'écouteur de test achemine le trafic vers l'application conteneurisée mise à jour.
  5. Exécute toutes les fonctions Lambda spécifiées dans le AfterAllowTestTraffic hook du fichier. AppSpec 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 des annulations sont configurées, vous pouvez configurer une CloudWatch 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 CloudWatch alarmes dans CodeDeploy, Annulations automatiques et Configuration des options avancées d'un groupe de déploiement.

  6. Exécute toutes les fonctions Lambda spécifiées dans le BeforeAllowTraffic hook du fichier. AppSpec

  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.

    L'ensemble de tâches de remplacement reçoit le trafic de production.
  8. Exécute toutes les fonctions Lambda spécifiées dans le AfterAllowTraffic hook du fichier. AppSpec

  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é.

    Tous les événements sont réussis.

Téléchargement de la version révisée de votre application

Placez un AppSpec fichier dans Amazon S3 ou saisissez-le directement dans la console ou AWS CLI. Pour de plus amples informations, veuillez consulter Application Specification Files.

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

Un groupe de CodeDeploy déploiement sur une plateforme de ECS calcul Amazon identifie les écouteurs chargés d'acheminer le trafic vers votre ECS application Amazon mise à jour et les 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éploiement de la révision de votre application

Vous êtes maintenant prêt à déployer le ECS service Amazon mis à jour spécifié dans votre groupe de déploiement. Vous pouvez utiliser la CodeDeploy 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.

Mettre à jour votre application

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

Déploiements interrompus ou échoués

Vous pouvez utiliser la CodeDeploy 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 AWS CodeDeploy API référence.

Redéploiements et annulations de déploiements

CodeDeploy implémente les annulations en redirigeant le trafic de 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 CodeDeploy console affiche la liste des déploiements résultant 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 de plus amples informations, veuillez consulter Redéployez et annulez un déploiement avec CodeDeploy.

ECSDéploiements bleu/vert d'Amazon via AWS CloudFormation

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

Note

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