Amazon Elastic Container Service et référence CodeDeploy sur les actions de déploiement bleu-vert - AWS CodePipeline

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.

Amazon Elastic Container Service et référence CodeDeploy sur les actions de déploiement bleu-vert

Vous pouvez configurer un pipeline AWS CodePipeline qui déploie des applications de conteneur à l'aide d'un déploiement bleu/vert. Dans un déploiement bleu/vert, vous pouvez lancer une nouvelle version de votre application parallèlement à l'ancienne version, et vous pouvez tester la nouvelle version avant de rediriger le trafic vers celle-ci. Vous pouvez également surveiller le processus de déploiement et revenir rapidement en arrière en cas de problème.

Le pipeline terminé détecte les modifications apportées à vos images ou à votre fichier de définition de tâches et les utilise CodeDeploy pour acheminer et déployer le trafic vers un ECS cluster Amazon et un équilibreur de charge. CodeDeploy crée un nouvel écouteur sur votre équilibreur de charge qui peut cibler votre nouvelle tâche via un port spécial. Vous pouvez également configurer le pipeline pour utiliser un emplacement source, tel qu'un CodeCommit référentiel, dans lequel votre définition de ECS tâche Amazon est stockée.

Avant de créer votre pipeline, vous devez déjà avoir créé les ECS ressources Amazon, les ressources, l' CodeDeploy équilibreur de charge et le groupe cible. Vous devez avoir déjà balisé et stocké l'image dans votre référentiel d'images, puis téléchargé la définition de tâche et le AppSpec fichier dans votre référentiel de fichiers.

Note

Cette rubrique décrit l'action de déploiement ECS d'Amazon vers le CodeDeploy bleu/vert pour. CodePipeline Pour obtenir des informations de référence sur les actions de déploiement ECS standard d'Amazon dans CodePipeline, consultezRéférence des actions de déploiement d'Amazon Elastic Container Service.

Type d'action

  • Catégorie : Deploy

  • Propriétaire : AWS

  • Fournisseur : CodeDeployToECS

  • Version : 1

Paramètres de configuration

ApplicationName

Obligatoire : oui

Nom de l'application dans CodeDeploy. Avant de créer votre pipeline, vous devez déjà avoir créé l'application dans CodeDeploy.

DeploymentGroupName

Obligatoire : oui

Le groupe de déploiement spécifié pour les ensembles de ECS tâches Amazon que vous avez créés pour votre CodeDeploy application. Avant de créer votre pipeline, vous devez déjà avoir créé le groupe de déploiement dans CodeDeploy.

TaskDefinitionTemplateArtifact

Obligatoire : oui

Nom de l'artefact d'entrée qui fournit le fichier de définition de tâche à l'action de déploiement. Il s'agit généralement du nom de l'artefact de sortie de l'action source. Lorsque vous utilisez la console, le nom par défaut de l'artefact de sortie de l'action source estSourceArtifact.

AppSpecTemplateArtifact

Obligatoire : oui

Nom de l'artefact d'entrée qui fournit le AppSpec fichier à l'action de déploiement. Cette valeur est mise à jour lorsque votre pipeline est exécuté. Il s'agit généralement du nom de l'artefact de sortie de l'action source. Lorsque vous utilisez la console, le nom par défaut de l'artefact de sortie de l'action source estSourceArtifact. TaskDefinitionDans le AppSpec fichier, vous pouvez conserver le texte de l'<TASK_DEFINITION>espace réservé comme indiqué ici.

AppSpecTemplatePath

Obligatoire : non

Le nom du AppSpec fichier stocké dans l'emplacement du fichier source du pipeline, tel que le CodeCommit référentiel de votre pipeline. Le nom de fichier par défaut est appspec.yaml. Si votre AppSpec fichier porte le même nom et est stocké à la racine dans votre référentiel de fichiers, il n'est pas nécessaire de fournir le nom du fichier. Si le chemin n'est pas le chemin par défaut, entrez le chemin et le nom du fichier.

TaskDefinitionTemplatePath

Obligatoire : non

Le nom de fichier de la définition de tâche stockée dans l'emplacement source du fichier de pipeline, tel que le CodeCommit référentiel de votre pipeline. Le nom de fichier par défaut est taskdef.json. Si votre fichier de définition de tâche porte le même nom et est stocké à la racine dans votre référentiel de fichiers, il n'est pas nécessaire de fournir le nom du fichier. Si le chemin n'est pas le chemin par défaut, entrez le chemin et le nom du fichier.

Image <Number>ArtifactName

Obligatoire : non

Nom de l'artefact d'entrée qui fournit l'image à l'action de déploiement. Il s'agit généralement de l'artefact de sortie du référentiel d'images, tel que le résultat de l'action ECR source Amazon.

Les valeurs disponibles pour <Number> sont comprises entre 1 et 4.

Image <Number>ContainerName

Obligatoire : non

Le nom de l'image disponible dans le référentiel d'images, tel que le référentiel ECR source Amazon.

Les valeurs disponibles pour <Number> sont comprises entre 1 et 4.

Artefacts d'entrée

  • Nombre d'artefacts : 1 to 5

  • Description : l'CodeDeployToECSaction recherche d'abord le fichier de définition de tâche et le AppSpec fichier dans le référentiel de fichiers source, puis recherche l'image dans le référentiel d'images, puis génère dynamiquement une nouvelle révision de la définition de tâche et exécute enfin AppSpec les commandes pour déployer l'ensemble de tâches et le conteneur dans le cluster.

    L'CodeDeployToECSaction recherche un imageDetail.json fichier qui associe l'image URI à l'image. Lorsque vous validez une modification dans votre référentiel ECR d'images Amazon, l'action relative à la ECR source du pipeline crée un imageDetail.json fichier pour cette validation. Vous pouvez également ajouter manuellement un imageDetail.json fichier pour un pipeline dans lequel l'action n'est pas automatisée. Pour de plus amples informations concernant le fichier imageDetail.json, veuillez consulter imageDetailfichier .json pour les actions de déploiement ECS bleu/vert d'Amazon.

    L'CodeDeployToECSaction génère dynamiquement une nouvelle révision de la définition de tâche. Dans cette phase, cette action remplace les espaces réservés du fichier de définition de tâche par une image URI extraite des fichiers imageDetail .json. Par exemple, si vous définissez IMAGE1_ NAME comme ContainerName paramètre Image1, vous devez spécifier l'espace réservé < IMAGE1 _ NAME > comme valeur du champ d'image dans votre fichier de définition de tâche. Dans ce cas, l' CodeDeployToECSaction remplace l'espace réservé < IMAGE1 _ NAME > par l'image réelle URI extraite de imageDetail .json dans l'artefact que vous spécifiez comme Image1. ArtifactName

    Pour les mises à jour des définitions de tâches, le CodeDeploy AppSpec.yaml fichier contient la TaskDefinition propriété.

    TaskDefinition: <TASK_DEFINITION>

    Cette propriété sera mise à jour par l'CodeDeployToECSaction après la création de la nouvelle définition de tâche.

    Pour la valeur du TaskDefinition champ, le texte de l'espace réservé doit être < TASK _ DEFINITION >. L'CodeDeployToECSaction remplace cet espace réservé par la définition réelle ARN de la tâche générée dynamiquement.

Artefacts de sortie

  • Nombre d'artefacts : 0

  • Description : les artefacts de sortie ne s'appliquent pas à ce type d'action.

Déclaration d'action

YAML
Name: Deploy Actions: - Name: Deploy ActionTypeId: Category: Deploy Owner: AWS Provider: CodeDeployToECS Version: '1' RunOrder: 1 Configuration: AppSpecTemplateArtifact: SourceArtifact ApplicationName: ecs-cd-application DeploymentGroupName: ecs-deployment-group Image1ArtifactName: MyImage Image1ContainerName: IMAGE1_NAME TaskDefinitionTemplatePath: taskdef.json AppSpecTemplatePath: appspec.yaml TaskDefinitionTemplateArtifact: SourceArtifact OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact - Name: MyImage Region: us-west-2 Namespace: DeployVariables
JSON
{ "Name": "Deploy", "Actions": [ { "Name": "Deploy", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CodeDeployToECS", "Version": "1" }, "RunOrder": 1, "Configuration": { "AppSpecTemplateArtifact": "SourceArtifact", "ApplicationName": "ecs-cd-application", "DeploymentGroupName": "ecs-deployment-group", "Image1ArtifactName": "MyImage", "Image1ContainerName": "IMAGE1_NAME", "TaskDefinitionTemplatePath": "taskdef.json", "AppSpecTemplatePath": "appspec.yaml", "TaskDefinitionTemplateArtifact": "SourceArtifact" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" }, { "Name": "MyImage" } ], "Region": "us-west-2", "Namespace": "DeployVariables" } ] }

Les ressources connexes suivantes peuvent s'avérer utiles dans le cadre de l'utilisation de cette action.

  • Tutoriel : Création d'un pipeline avec une ECR source Amazon et déploiement en ECS vue d'un déploiement CodeDeploy — Ce didacticiel vous explique comment créer les ECS ressources CodeDeploy et Amazon dont vous avez besoin pour un déploiement bleu/vert. Ce didacticiel explique comment envoyer une image Docker à Amazon ECR et créer une définition de ECS tâche Amazon répertoriant le nom de votre image Docker, le nom du conteneur, le nom du ECS service Amazon et la configuration de votre équilibreur de charge. Le didacticiel vous explique ensuite comment créer le AppSpec fichier et le pipeline nécessaires à votre déploiement.

    Note

    Cette rubrique et ce didacticiel décrivent l'action CodeDeploy/ECSblue/green pour. CodePipeline Pour plus d'informations sur les actions ECS standard dans CodePipeline, voir Tutoriel : Déploiement continu avec CodePipeline.

  • AWS CodeDeploy Guide de l'utilisateur — Pour plus d'informations sur l'utilisation de l'équilibreur de charge, de l'écouteur de production, des groupes cibles et de votre ECS application Amazon dans le cadre d'un déploiement bleu/vert, consultez Tutoriel : Déployer un service Amazon. ECS Ces informations de référence contenues dans le guide de AWS CodeDeploy l'utilisateur fournissent une vue d'ensemble des déploiements bleu/vert avec Amazon et. ECS AWS CodeDeploy

  • Guide du développeur Amazon Elastic Container Service — Pour plus d'informations sur l'utilisation d'images et de conteneurs Docker, de ECS services et de clusters, ainsi que d'ensembles de ECS tâches, consultez What Is Amazon ? ECS