Tutoriel : Création d'un pipeline avec une ECR source Amazon et déploiement en ECS vue d'un déploiement CodeDeploy - 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.

Tutoriel : Création d'un pipeline avec une ECR source Amazon et déploiement en ECS vue d'un déploiement CodeDeploy

Dans ce didacticiel, vous allez configurer un pipeline AWS CodePipeline qui déploie des applications de conteneur à l'aide d'un déploiement bleu/vert prenant en charge les images Docker. Dans un déploiement bleu/vert, vous pouvez lancer la nouvelle version de votre application avec l'ancienne version, et tester la nouvelle version avant de rediriger le trafic. Vous pouvez également surveiller le processus de déploiement et revenir rapidement en arrière en cas de problème.

Important

Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé CodePipeline pour les artefacts. (Ceci est différent du compartiment utilisé pour une action source S3.) Si le compartiment d'artefacts S3 se trouve dans un compte différent de celui de votre pipeline, assurez-vous que le compartiment d'artefacts S3 appartient à cette personne sûre et Comptes AWS qu'elle sera fiable.

Note

Ce didacticiel est destiné à l'action ECS de déploiement CodeDeploy bleu/vert d'Amazon. CodePipeline Pour un didacticiel utilisant l'action de déploiement ECS standard d'Amazon dans CodePipeline, consultezTutoriel : déploiement ECS standard d'Amazon avec CodePipeline.

Le pipeline terminé détecte les modifications apportées à votre image, qui est stockée dans un référentiel d'images tel qu'AmazonECR, et utilisée CodeDeploy pour acheminer et déployer le trafic vers un ECS cluster Amazon et un équilibreur de charge. CodeDeploy utilise un écouteur pour rediriger le trafic vers le port du conteneur mis à jour spécifié dans le AppSpec fichier. Pour plus d'informations sur la façon dont l'équilibreur de charge, l'écouteur de production, les groupes cibles et votre ECS application Amazon sont utilisés dans un déploiement bleu/vert, consultez Tutoriel : Déployer un service Amazon. ECS

Le pipeline est également configuré pour utiliser un emplacement source CodeCommit, tel que l'endroit où votre définition de ECS tâche Amazon est stockée. Dans ce didacticiel, vous allez configurer chacune de ces AWS ressources, puis créer votre pipeline avec des étapes contenant des actions pour chaque ressource.

Votre pipeline de livraison continue créera et déploiera automatiquement des images de conteneur chaque fois que le code source est modifié ou qu'une nouvelle image de base est téléchargée sur AmazonECR.

Ce flux utilise les artefacts suivants :

  • Un fichier image Docker qui indique le nom du conteneur et le référentiel URI de votre référentiel d'ECRimages Amazon.

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

  • CodeDeploy AppSpec Fichier qui indique le nom du fichier de définition des ECS tâches Amazon, le nom du conteneur de l'application mise à jour et le port du conteneur CodeDeploy vers lequel le trafic de production est redirigé. Il peut également spécifier la configuration du réseau et les fonctions Lambda facultatifs que vous pouvez exécuter durant les hooks d'événement de cycle de vie de déploiement.

Note

Lorsque vous validez une modification dans votre référentiel ECR d'images Amazon, l'action relative à la source du pipeline crée un imageDetail.json fichier pour cette validation. 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.

Lorsque vous créez ou modifiez votre pipeline et mettez à jour ou spécifiez des artefacts source pour votre étape de déploiement, assurez-vous pour qu'il pointe vers la source des artefacts avec le nom et la version les plus récents que vous souhaitez utiliser. Une fois que vous avez configuré votre pipeline, au fur et à mesure que vous apportez des modifications à votre image ou à une définition de tâche, il se peut que vous ayez besoin de mettre à jour vos fichiers d'artefact source dans vos référentiels, puis de modifier l'étape de déploiement dans votre pipeline.

Prérequis

Vous devez avoir déjà créé les ressources suivantes :

  • Un CodeCommit référentiel. Vous pouvez utiliser le AWS CodeCommit référentiel dans lequel vous l'avez crééTutoriel : Création d'un pipeline simple (CodeCommitréférentiel).

  • Lancez une instance Amazon EC2 Linux et installez Docker pour créer une image, comme indiqué dans ce didacticiel. Si vous avez déjà une image que vous souhaitez utiliser, vous pouvez ignorer cette condition préalable.

Étape 1 : créer une image et la transférer vers un ECR référentiel Amazon

Dans cette section, vous utilisez Docker pour créer une image, puis vous l'utilisez AWS CLI pour créer un ECR référentiel Amazon et transférer l'image vers le référentiel.

Note

Si vous avez déjà une image que vous souhaitez utiliser, vous pouvez ignorer cette étape.

Pour créer une image
  1. Connectez-vous à votre instance Linux dans laquelle Docker est installé.

    Retirez une image pour nginx. Cette commande fournit l'nginx:latestimage :

    docker pull nginx
  2. Exécutez docker images. Vous devez voir l'image dans la liste.

    docker images
Pour créer un ECR référentiel Amazon et publier votre image
  1. Créez un ECR référentiel Amazon pour stocker votre image. Notez l'repositoryUri dans la sortie.

    aws ecr create-repository --repository-name nginx

    Sortie :

    { "repository": { "registryId": "aws_account_id", "repositoryName": "nginx", "repositoryArn": "arn:aws:ecr:us-east-1:aws_account_id:repository/nginx", "createdAt": 1505337806.0, "repositoryUri": "aws_account_id.dkr.ecr.us-east-1.amazonaws.com/nginx" } }
  2. Balisez l'image avec la valeur repositoryUri de l'étape précédente.

    docker tag nginx:latest aws_account_id.dkr.ecr.us-east-1.amazonaws.com/nginx:latest
  3. Exécutez la aws ecr get-login-password commande, comme indiqué dans cet exemple pour la us-west-2 région et l'ID de compte 111122223333.

    aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-west-2.amazonaws.com/nginx
  4. Transférez l'image vers Amazon à l'ECRaide repositoryUri de l'étape précédente.

    docker push 111122223333.dkr.ecr.us-east-1.amazonaws.com/nginx:latest

Étape 2 : Création de la définition des tâches et des fichiers AppSpec source, puis transfert vers un CodeCommit référentiel

Dans cette section, vous allez créer un JSON fichier de définition de tâche et l'enregistrer auprès d'AmazonECS. Vous créez ensuite un AppSpec fichier pour votre client Git CodeDeploy et vous l'utilisez pour transférer les fichiers vers votre CodeCommit dépôt.

Pour créer une définition de tâche pour votre image
  1. Créez un fichier nommé taskdef.json avec les contenus suivants. Pour image, saisissez votre nom d'image, par exemple nginx. Cette valeur est mise à jour lorsque votre pipeline est exécuté.

    Note

    Assurez-vous que le rôle d'exécution spécifié dans la définition de tâche contient la stratégie AmazonECSTaskExecutionRolePolicy. Pour plus d'informations, consultez Amazon ECS Task Execution IAM Role dans le manuel Amazon ECS Developer Guide.

    { "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "sample-website", "image": "nginx", "essential": true, "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ] } ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "256", "memory": "512", "family": "ecs-demo" }
  2. Enregistrez votre définition de tâche dans le fichier taskdef.json.

    aws ecs register-task-definition --cli-input-json file://taskdef.json
  3. Une fois la définition de tâche enregistrée, modifiez votre fichier afin de supprimer le nom et d'inclure le texte d'espace réservé <IMAGE1_NAME> dans le champ de l'image.

    { "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "sample-website", "image": "<IMAGE1_NAME>", "essential": true, "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ] } ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "256", "memory": "512", "family": "ecs-demo" }
Pour créer un AppSpec fichier
  • Le AppSpec fichier est utilisé pour les CodeDeploy déploiements. Le fichier, qui inclut des champs facultatifs, utilise ce format :

    version: 0.0 Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: "task-definition-ARN" LoadBalancerInfo: ContainerName: "container-name" ContainerPort: container-port-number # Optional properties PlatformVersion: "LATEST" NetworkConfiguration: AwsvpcConfiguration: Subnets: ["subnet-name-1", "subnet-name-2"] SecurityGroups: ["security-group"] AssignPublicIp: "ENABLED" Hooks: - BeforeInstall: "BeforeInstallHookFunctionName" - AfterInstall: "AfterInstallHookFunctionName" - AfterAllowTestTraffic: "AfterAllowTestTrafficHookFunctionName" - BeforeAllowTraffic: "BeforeAllowTrafficHookFunctionName" - AfterAllowTraffic: "AfterAllowTrafficHookFunctionName"

    Pour plus d'informations sur le AppSpec fichier, y compris des exemples, consultez la section Référence CodeDeploy AppSpec du fichier.

    Créez un fichier nommé appspec.yaml avec les contenus suivants. Pour TaskDefinition, ne modifiez pas le texte d'espace réservé <TASK_DEFINITION>. Cette valeur est mise à jour lorsque votre pipeline est exécuté.

    version: 0.0 Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: <TASK_DEFINITION> LoadBalancerInfo: ContainerName: "sample-website" ContainerPort: 80
Pour transférer des fichiers vers votre CodeCommit dépôt
  1. Envoyez ou téléchargez les fichiers dans votre CodeCommit dépôt. Ces fichiers sont l'artefact source créé par l'assistant de création de pipeline pour votre action de déploiement dans CodePipeline. Vos fichiers doivent être similaires à ce qui suit dans votre répertoire local :

    /tmp |my-demo-repo |-- appspec.yaml |-- taskdef.json
  2. Choisissez la méthode que vous souhaitez utiliser pour charger vos fichiers :

    1. Pour utiliser la ligne de commande Git à partir d'un référentiel cloné sur votre ordinateur local :

      1. Modifiez les répertoires vers votre référentiel local :

        (For Linux, macOS, or Unix) cd /tmp/my-demo-repo (For Windows) cd c:\temp\my-demo-repo
      2. Exécutez la commande suivante pour organiser tous vos fichiers à la fois :

        git add -A
      3. Exécutez la commande suivante pour valider les fichiers avec un message de validation :

        git commit -m "Added task definition files"
      4. Exécutez la commande suivante pour transférer les fichiers de votre dépôt local vers votre CodeCommit dépôt :

        git push
    2. Pour télécharger vos fichiers à l' CodeCommit aide de la console, procédez comme suit :

      1. Ouvrez la CodeCommit console et choisissez votre dépôt dans la liste des référentiels.

      2. Choisissez Ajouter un fichier, puis choisissez Charger le fichier.

      3. Sélectionnez Choisir un fichier, puis recherchez votre fichier. Validez la modification en entrant votre nom d'utilisateur et votre adresse e-mail. Choisissez Valider les modifications.

      4. Répétez cette étape pour chaque fichier que vous souhaitez charger.

Étape 3 : Créer votre équilibreur de charge d'application et vos groupes cibles

Dans cette section, vous allez créer un Amazon EC2 Application Load Balancer. Vous utiliserez les noms de sous-réseaux et les valeurs de groupe cible que vous créez avec votre équilibreur de charge ultérieurement, lorsque vous créez votre service AmazonECS. Vous pouvez créer un équilibreur de charge d'application ou un Network Load Balancer. L'équilibreur de charge doit utiliser un VPC avec deux sous-réseaux publics situés dans des zones de disponibilité différentes. Au cours de ces étapes, vous confirmez votre valeur par défautVPC, vous créez un équilibreur de charge, puis vous créez deux groupes cibles pour votre équilibreur de charge. Pour plus d'informations, consultez Groupes cibles pour vos équilibreurs de charge du réseau.

Pour vérifier vos sous-réseaux par défaut VPC et publics
  1. Connectez-vous à la VPC console Amazon AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/vpc/.

  2. Vérifiez la valeur par défaut VPC à utiliser. Dans le volet de navigation, sélectionnez Votre VPCs. Notez que la VPC mention Oui apparaît dans la VPC colonne Par défaut. Il s'agit de la valeur par défautVPC. Il contient des sous-réseaux par défaut que vous pouvez sélectionner.

  3. Choisissez Sous-réseaux. Choisissez deux sous-réseaux qui contiennent Oui dans la colonne Sous-réseau par défaut.

    Note

    Prenez note de votre sous-réseauIDs. Vous en aurez besoin ultérieurement dans ce didacticiel.

  4. Choisissez les sous-réseaux, puis choisissez l'onglet Description. Vérifiez que les sous-réseaux que vous souhaitez utiliser sont dans des zones de disponibilité différentes.

  5. Choisissez les sous-réseaux, puis choisissez l'onglet Table de routage. Pour vérifier que chaque sous-réseau que vous souhaitez utiliser est un sous-réseau public, vérifiez qu'une ligne de passerelle est incluse dans la table de routage.

Pour créer un Amazon EC2 Application Load Balancer
  1. Connectez-vous à la EC2 console Amazon AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/ec2/.

  2. Dans le volet de navigation, choisissez Load Balancers.

  3. Sélectionnez Create Load Balancer (Créer un équilibreur de charge).

  4. Choisissez Équilibreur de charge d'application, puis choisissez Créer.

  5. Dans Nom, entrez le nom de votre équilibreur de charge.

  6. Dans Méthode, choisissez Accessible sur Internet.

  7. Dans Type d'adresse IP, choisissez ipv4.

  8. Configurez deux ports d'écoute pour votre équilibreur de charge :

    1. Sous Load Balancer Protocol, choisissez. HTTP Sous Port de l'équilibreur de charge, entrez 80.

    2. Choisissez Add listener (Ajouter un écouteur).

    3. Sous Load Balancer Protocol pour le deuxième écouteur, choisissez. HTTP Sous Port de l'équilibreur de charge, entrez 8080.

  9. Sous Zones de disponibilité, dans VPC, choisissez la valeur par défautVPC. Ensuite, choisissez deux sous-réseaux par défaut que vous souhaitez utiliser.

  10. Choisissez Next: Configure Security Settings (Suivant : Configurer les paramètres de sécurité).

  11. Choisissez Next: Configure Security Groups (Suivant : Configurer des groupes de sécurité).

  12. Choisissez Sélectionner un groupe de sécurité existant et prenez note de l'ID du groupe de sécurité.

  13. Choisissez Next: Configure Routing (Suivant :Configurer le routage).

  14. Dans Groupe cible, choisissez Nouveau groupe cible et configurez votre premier groupe cible :

    1. Dans Nom, entrez un nom de groupe cible (par exemple, target-group-1).

    2. Dans Type cible, choisissez IP.

    3. Dans Protocole, choisissez HTTP. Dans Port, entrez 80.

    4. Choisissez Next: Register Targets (Suivant : Enregistrer des cibles).

  15. Choisissez Suivant : Vérification, puis Créer.

Pour créer un deuxième groupe cible pour votre équilibreur de charge
  1. Une fois votre équilibreur de charge configuré, ouvrez la console AmazonEC2. Dans le volet de navigation, sélectionnez Groupes cibles.

  2. Sélectionnez Créer un groupe cible.

  3. Dans Nom, entrez un nom de groupe cible (par exemple, target-group-2).

  4. Dans Type cible, choisissez IP.

  5. Dans Protocole, choisissez HTTP. Dans Port, entrez 8080.

  6. Dans VPC, choisissez la valeur par défautVPC.

  7. Sélectionnez Create (Créer).

    Note

    Vous devez avoir deux groupes cibles créés pour votre équilibreur de charge afin de permettre l'exécution du déploiement. Il vous suffit de noter le nom ARN de votre premier groupe cible. Ceci ARN est utilisé dans le create-service JSON fichier à l'étape suivante.

Pour mettre à jour votre équilibreur de charge de façon à inclure votre deuxième groupe cible
  1. Ouvrez la EC2 console Amazon. Dans le volet de navigation, choisissez Load Balancers.

  2. Choisissez l'équilibreur de charge, puis choisissez l'onglet Ecouteurs. Choisissez l'écouteur avec le port 8080, puis choisissez Modifier.

  3. Choisissez l'icône en forme de crayon en regard de Réacheminer vers. Choisissez votre deuxième groupe cible, puis choisissez la coche. Choisissez Mettre à jour pour mettre à jour les mises à jour.

Étape 4 : Créez votre ECS cluster et votre service Amazon

Dans cette section, vous créez un ECS cluster et un service Amazon qui CodeDeploy acheminent le trafic pendant le déploiement (vers un ECS cluster Amazon plutôt que vers EC2 des instances). Pour créer votre ECS service Amazon, vous devez utiliser les noms de sous-réseaux, le groupe de sécurité et la valeur du groupe cible que vous avez créés avec votre équilibreur de charge pour créer votre service.

Note

Lorsque vous suivez ces étapes pour créer votre ECS cluster Amazon, vous utilisez le modèle de cluster Networking only, qui approvisionne les conteneurs AWS Fargate. AWS Fargate est une technologie qui gère votre infrastructure d'instance de conteneur pour vous. Vous n'avez pas besoin de choisir ou de créer manuellement des EC2 instances Amazon pour votre ECS cluster Amazon.

Pour créer un ECS cluster Amazon
  1. Ouvrez la console Amazon ECS Classic à l'adresse https://console.aws.amazon.com/ecs/.

  2. Dans le panneau de navigation, choisissez Clusters.

  3. Choisissez Créer un cluster.

  4. Choisissez le modèle de cluster Networking only qui utilise AWS Fargate, puis choisissez Next step.

  5. Saisissez le nom d'un cluster sur la page Configure cluster (Configurer le cluster). Vous pouvez ajouter une balise facultative pour votre ressource. Sélectionnez Create (Créer).

Pour créer un ECS service Amazon

Utilisez le AWS CLI pour créer votre service sur AmazonECS.

  1. Créez un JSON fichier et nommez-lecreate-service.json. Collez le texte suivant dans le JSON fichier.

    Pour le taskDefinition champ, lorsque vous enregistrez une définition de tâche sur AmazonECS, vous lui attribuez une famille. Il s'agit d'un élément similaire à un nom pour plusieurs versions de la définition de tâche, spécifié avec un numéro de révision. Dans cet exemple, utilisez « ecs-demo:1 » comme famille et numéro de révision dans votre fichier. Utilisez les noms des sous-réseau, le groupe de sécurité et la valeur du groupe cible créés avec l'équilibreur de charge dans Étape 3 : Créer votre équilibreur de charge d'application et vos groupes cibles .

    Note

    Vous devez inclure votre groupe cible ARN dans ce fichier. Ouvrez la EC2 console Amazon et dans le volet de navigation, sous LOADBALANCING, choisissez Target Groups. Choisissez votre premier groupe cible. Copiez le vôtre ARN depuis l'onglet Description.

    { "taskDefinition": "family:revision-number", "cluster": "my-cluster", "loadBalancers": [ { "targetGroupArn": "target-group-arn", "containerName": "sample-website", "containerPort": 80 } ], "desiredCount": 1, "launchType": "FARGATE", "schedulingStrategy": "REPLICA", "deploymentController": { "type": "CODE_DEPLOY" }, "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "subnet-1", "subnet-2" ], "securityGroups": [ "security-group" ], "assignPublicIp": "ENABLED" } } }
  2. Exécutez la create-service commande en spécifiant le JSON fichier :

    Important

    N'oubliez pas d'inclure file:// devant le nom du fichier. Il est nécessaire dans cette commande.

    Cet exemple crée un service nommé my-service.

    Note

    Cet exemple de commande crée un service nommé my-service. Si vous avez déjà un service portant ce nom, la commande renvoie une erreur.

    aws ecs create-service --service-name my-service --cli-input-json file://create-service.json

    La sortie renvoie les champs de description pour votre service.

  3. Exécutez la commande describe-services pour vérifier que le service a été créé.

    aws ecs describe-services --cluster cluster-name --services service-name

Étape 5 : Création de votre CodeDeploy application et de votre groupe de déploiement (plateforme de ECS calcul)

Lorsque vous créez une CodeDeploy application et un groupe de déploiement pour la plateforme de ECS calcul Amazon, l'application est utilisée lors d'un déploiement pour référencer le groupe de déploiement, les groupes cibles, les écouteurs et le comportement de réacheminement du trafic appropriés.

Pour créer une CodeDeploy application
  1. Ouvrez la CodeDeploy console et choisissez Create application.

  2. Dans Nom de l'application, entrez le nom que vous souhaitez utiliser.

  3. Dans Compute platform, choisissez Amazon ECS.

  4. Choisissez Créer une application.

Pour créer un groupe CodeDeploy de déploiement
  1. Sur la page de votre application, dans l'onglet Groupe de déploiement, choisissez Créer un groupe de déploiement.

  2. Dans Nom du groupe de déploiement, entrez un nom décrivant le groupe de déploiement.

  3. Dans Rôle de service, choisissez un rôle de service qui accorde CodeDeploy l'accès à AmazonECS. Pour créer un rôle de service, procédez comme suit :

    1. Ouvrez la IAM console à l'adresse https://console.aws.amazon.com/iam/).

    2. Dans le tableau de bord de la console, choisissez Rôles.

    3. Sélectionnez Créer un rôle.

    4. Sous Sélectionner le type d'entité de confiance, sélectionnez Service AWS. Sous Choisir un cas d'utilisation, sélectionnez CodeDeploy. Sous Sélectionnez votre cas d'utilisation, sélectionnez CodeDeploy - ECS. Sélectionnez Next: Permissions (Étape suivante : autorisations). La stratégie gérée AWSCodeDeployRoleForECS est déjà attachée au rôle.

    5. Choisissez Suivant : Balises, puis Suivant : Vérification.

    6. Entrez un nom pour le rôle (par exemple, CodeDeployECSRole), puis choisissez Créer un rôle.

  4. Dans Configuration de l'environnement, choisissez le nom de votre ECS cluster Amazon et le nom du service.

  5. Dans Équilibreurs de charge, choisissez le nom de l'équilibreur de charge qui achemine le trafic vers votre service AmazonECS.

  6. Dans Port de l'écouteur de production, choisissez le port et le protocole de l'écouteur qui transmet le trafic de production à votre service Amazon. ECS Dans Test listener port (Port de l'écouteur de test), choisissez le port et le protocole de l'écouteur de test.

  7. À partir de Nom du groupe cible 1 et Nom du groupe cible 2, choisissez les groupes cible utilisés pour acheminer le trafic au cours de votre déploiement. Assurez-vous que ce sont les groupes cibles que vous avez créés pour votre équilibreur de charge.

  8. Choisissez Réacheminer le trafic immédiatement pour déterminer combien de temps après un déploiement réussi vous souhaitez rediriger le trafic vers votre tâche Amazon ECS mise à jour.

  9. Choisissez Créer un groupe de déploiement.

Étape 6 : Créer le pipeline

Dans cette section, vous créez un pipeline avec les actions suivantes :

  • CodeCommit Action dans laquelle les artefacts sources sont la définition de la tâche et le AppSpec fichier.

  • Un stage source avec une action Amazon ECR source où l'artefact source est le fichier image.

  • Une phase de déploiement avec une action Amazon ECS Deploy dans laquelle le déploiement s'exécute avec une CodeDeploy application et un groupe de déploiement.

Pour créer un pipeline à deux étapes avec l'assistant
  1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'adresse http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. Sur la page Bienvenue, la page Démarrez ou la page Pipelines, choisissez Créer un pipeline.

  3. Dans l'Étape 1 : Choisir les paramètres d'un pipeline, dans Nom du pipeline, saisissez MyImagePipeline.

  4. Dans Type de pipeline, choisissez V2. Pour de plus amples informations, veuillez consulter Types de pipelines. Choisissez Suivant.

  5. Dans Rôle de service, choisissez Nouveau rôle de service CodePipeline pour autoriser la création d'un rôle de service dansIAM.

  6. Laissez les paramètres sous Advanced settings (Paramètres avancés) à leurs valeurs par défaut, puis choisissez Suivant.

  7. Dans Étape 2 : Ajouter une étape source, dans Fournisseur de source, choisissez AWS CodeCommit. Dans Nom du référentiel, choisissez le nom du CodeCommit référentiel dans lequel vous l'avez crééÉtape 1 : Création d'un CodeCommit référentiel. Dans Nom de branche, choisissez le nom de la branche qui contient votre dernière mise à jour du code.

    Choisissez Suivant.

  8. Dans Step 3: Add build stage (Étape 3 : Ajouter une étape de génération), choisissez Skip build stage (Ignorer l'étape de génération) et acceptez le message d'avertissement en choisissant à nouveau Skip (Ignorer). Choisissez Suivant.

  9. Dans Étape 4 : Ajouter une étape de déploiement :

    1. Dans Deploy provider, choisissez Amazon ECS (bleu/vert). Dans Nom de l'application, entrez ou choisissez le nom de l'application dans la liste, comme codedeployapp. Dans Groupe de déploiement, saisissez ou choisissez le nom du groupe de déploiement dans la liste, comme codedeploydeplgroup.

      Note

      « Déploiement » est le nom donné par défaut à l'étape du pipeline créée lors de l'Étape 4 : Déploiement tout comme « Source » est le nom donné à la première étape du pipeline.

    2. Sous Définition de ECS tâche Amazon, sélectionnez SourceArtifact. Dans le champ, entrez taskdef.json.

    3. Sous AWS CodeDeploy AppSpec fichier, sélectionnez SourceArtifact. Dans le champ, entrez appspec.yaml.

      Note

      À ce stade, ne renseignez aucune information sous Mettre à jour l'image de la définition de tâche de manière dynamique.

    4. Choisissez Suivant.

  10. Dans Step 5: Review, vérifiez les informations puis choisissez Create pipeline.

Pour ajouter une action Amazon ECR source à votre pipeline

Consultez votre pipeline et ajoutez une action Amazon ECR source à votre pipeline.

  1. Choisissez votre pipeline. Dans le coin supérieur gauche, choisissez Modifier.

  2. Dans la phase source, choisissez Modifier l'étape.

  3. Ajoutez une action parallèle en choisissant + Ajouter une action à côté de votre action CodeCommit source.

  4. Dans Nom d'action, saisissez un nom pour le pipeline (par exemple, Image).

  5. Dans Action provider, sélectionnez Amazon ECR.

    Ajoutez une action Amazon ECR source à votre pipeline.
  6. Dans Nom du référentiel, choisissez le nom de votre ECR référentiel Amazon.

  7. Dans Balise d'image, spécifiez le nom et la version de l'image, s'ils sont différents des précédents.

  8. Dans Artefacts de sortie, choisissez l'artefact de sortie par défaut (par exemple,MyImage) qui contient le nom de l'image et les URI informations du référentiel que vous souhaitez utiliser à l'étape suivante.

  9. Choisissez Save (Enregistrer) sur l'écran de l'action. Choisissez Done (Terminé) sur l'écran de l'étape. Choisissez Save (Enregistrer) sur le pipeline. Un message indique la règle Amazon CloudWatch Events à créer pour l'action Amazon ECR source.

Pour relier vos artefacts source à l'action de déploiement
  1. Choisissez Modifier lors de votre phase de déploiement et choisissez l'icône pour modifier l'action Amazon ECS (bleu/vert).

  2. Faites défiler jusqu'au bas du panneau. Dans Artefacts d'entrée, choisissez Ajouter. Ajoutez l'artefact source depuis votre nouveau ECR référentiel Amazon (par exemple,MyImage).

  3. Dans Définition de tâche, sélectionnez SourceArtifact, puis vérifiez que la saisie taskdef.json est effectuée.

  4. Dans AWS CodeDeploy AppSpec Fichier, sélectionnez SourceArtifact, puis vérifiez que la saisie appspec.yaml est effectuée.

  5. Dans Mettre à jour dynamiquement l'image de définition de tâche, dans Input Artifact with Image URI MyImage, choisissez, puis entrez le texte de l'espace réservé utilisé dans le taskdef.json fichier :. IMAGE1_NAME Choisissez Save (Enregistrer).

  6. Dans le AWS CodePipeline volet, choisissez Enregistrer la modification du pipeline, puis cliquez sur Enregistrer la modification. Affichez votre pipeline mis à jour.

    Une fois cet exemple de pipeline créé, la configuration d'action pour les entrées de la console s'affiche dans la structure du pipeline, comme suit :

    "configuration": { "AppSpecTemplateArtifact": "SourceArtifact", "AppSpecTemplatePath": "appspec.yaml", "TaskDefinitionTemplateArtifact": "SourceArtifact", "TaskDefinitionTemplatePath": "taskdef.json", "ApplicationName": "codedeployapp", "DeploymentGroupName": "codedeploydeplgroup", "Image1ArtifactName": "MyImage", "Image1ContainerName": "IMAGE1_NAME" },
  7. Pour soumettre vos modifications et lancer la génération d'un pipeline, choisissez Changement de version, puis Publication.

  8. Choisissez l'action de déploiement pour la visualiser CodeDeploy et suivre la progression du transfert du trafic.

    Note

    Il se peut qu'une étape de déploiement affiche un temps d'attente facultatif. Par défaut, CodeDeploy attend une heure après un déploiement réussi avant de mettre fin à l'ensemble de tâches initial. Vous pouvez utiliser ce temps pour revenir en arrière ou mettre fin à la tâche. Sinon, votre déploiement prend fin lorsque l’ensemble de tâches est terminé.

Étape 7 : Modifier le pipeline et vérifier le déploiement

Apportez une modification à votre image, puis transférez la modification dans votre ECR référentiel Amazon. Cela déclenche l'exécution de votre pipeline. Vérifiez que la modification de la source de l'image est déployée.