Utiliser l' CodeDeploy agent pour valider un package de déploiement sur une machine locale - 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.

Utiliser l' CodeDeploy agent pour valider un package de déploiement sur une machine locale

À l'aide de l' CodeDeploy agent, vous pouvez déployer du contenu sur une instance à laquelle vous êtes connecté. Cela vous permet de tester l'intégrité d'un fichier de spécification d'application (AppSpec fichier) que vous avez l'intention d'utiliser dans le cadre d'un déploiement et du contenu que vous souhaitez déployer.

Il n'est pas nécessaire de créer une application et un groupe de déploiement. Si vous souhaitez déployer du contenu stocké sur l'instance locale, vous n'avez même pas besoin de AWS compte. Pour les tests les plus simples, vous pouvez exécuter la codedeploy-local commande, sans spécifier d'options, dans un répertoire contenant le AppSpec fichier et le contenu à déployer. L'outil inclut aussi des options pour d'autres scénarios de test.

En validant un package de déploiement sur un ordinateur local, vous pouvez :

  • Tester l'intégrité d'une révision d'application.

  • Testez le contenu d'un AppSpec fichier.

  • Essayez CodeDeploy pour la première fois avec le code de votre application existant.

  • Déployer rapidement du contenu lorsque vous êtes déjà connecté à une instance.

Vous pouvez utiliser le contenu de déploiement stocké sur l'instance locale ou dans un type de référentiel distant pris en charge (compartiments Amazon S3 ou GitHub référentiels publics).

Prérequis

Avant de lancer un déploiement local, effectuez les étapes suivantes :

  • Créez ou utilisez un type d'instance pris en charge par l' CodeDeploy agent. Pour plus d’informations, veuillez consulter Systèmes d'exploitation pris en charge par l' CodeDeploy agent.

  • Installez la version 1.0.1.1352 ou ultérieure de l'agent. CodeDeploy Pour plus d’informations, veuillez consulter Installation de l' CodeDeploy agent.

  • Si vous déployez votre contenu à partir d'un compartiment ou d'un GitHub référentiel Amazon S3, configurez un utilisateur avec lequel vous pourrez l'utiliser CodeDeploy. Pour plus d’informations, veuillez consulter Étape 1 : Configuration.

  • Si vous déployez la révision de votre application à partir d'un compartiment Amazon S3, créez un compartiment Amazon S3 dans la région dans laquelle vous travaillez et appliquez une politique de compartiment Amazon S3 au compartiment. Cette stratégie accorde à vos instances les autorisations requises pour télécharger la révision d'application.

    Par exemple, la politique de compartiment Amazon S3 suivante permet à toute instance Amazon EC2 associée à un profil d'instance IAM contenant l'ARN de arn:aws:iam::444455556666:role/CodeDeployDemo télécharger n'importe où dans le compartiment Amazon S3 nommé : DOC-EXAMPLE-BUCKET

    { "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/CodeDeployDemo" ] } } ] }

    La politique de compartiment Amazon S3 suivante permet à toute instance sur site associée à un utilisateur IAM contenant l'ARN de arn:aws:iam::444455556666:user/CodeDeployUser télécharger depuis n'importe quel emplacement du compartiment Amazon S3 nommé : DOC-EXAMPLE-BUCKET

    { "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Principal": { "AWS": [ "arn:aws:iam::444455556666:user/CodeDeployUser" ] } } ] }

    Pour plus d'informations sur la façon de générer et d'associer une politique de compartiment Amazon S3, consultez les exemples de politique de compartiment.

  • Si vous déployez la révision de votre application à partir d'un compartiment ou d'un GitHub référentiel Amazon S3, configurez un profil d'instance IAM et attachez-le à l'instance. Pour plus d'informations, consultez Étape 4 : Création d'un profil d'instance IAM pour vos instances Amazon EC2, Créez une instance Amazon EC2 pour CodeDeploy (AWS CLI ou une console Amazon EC2) et Création d'une instance Amazon EC2 pour CodeDeploy (modèle)AWS CloudFormation.

  • Si vous déployez votre contenu depuis GitHub, créez un GitHub compte et un dépôt public. Pour créer un GitHub compte, consultez la section S'inscrire GitHub. Pour créer un GitHub dépôt, voir Création d'un dépôt.

    Note

    Les référentiels privés ne sont pas pris en charge pour l'instant. Si votre contenu est stocké dans un GitHub référentiel privé, vous pouvez le télécharger sur l'instance et utiliser l'--bundle-locationoption pour spécifier son chemin local.

  • Préparez le contenu (y compris un AppSpec fichier) que vous souhaitez déployer sur l'instance et placez-le sur l'instance locale, dans votre compartiment Amazon S3 ou dans votre GitHub référentiel. Pour plus d’informations, veuillez consulter Travailler avec les révisions d'applications pour CodeDeploy.

  • Si vous souhaitez utiliser des valeurs autres que les valeurs par défaut pour d'autres options de configuration, créez le fichier de configuration et placez-le sur l'instance (/etc/codedeploy-agent/conf/codedeployagent.ymlpour les instances Amazon Linux, RHEL ou Ubuntu Server ou C:\ProgramData\Amazon\CodeDeploy\conf.yml pour les instances Windows Server). Pour plus d’informations, veuillez consulter CodeDeploy référence de configuration de l'agent.

    Note

    Si vous utilisez un fichier de configuration sur des instances Amazon Linux, RHEL ou Ubuntu Server, vous devez soit :

    • Utiliser les variables :root_dir: et :log_dir: pour spécifier des emplacements autres que ceux par défaut pour les dossiers du répertoire de journaux et du répertoire racine du déploiement.

    • sudoÀ utiliser pour exécuter les commandes de CodeDeploy l'agent.

Création d'un déploiement local

Sur l'instance où vous souhaitez créer le déploiement local, ouvrez une session de terminal (instances Amazon Linux, RHEL ou Ubuntu Server) ou une invite de commande (Windows Server) pour exécuter les commandes de l'outil.

Note

La commande codedeploy-local est installée dans les emplacements suivants :

  • Sur Amazon Linux, RHEL ou Ubuntu Server : /opt/codedeploy-agent/bin

  • Sur Windows Server :C:\ProgramData\Amazon\CodeDeploy\bin.

Syntaxe de base des commandes

codedeploy-local [options]

Résumé

codedeploy-local [--bundle-location <value>] [--type <value>] [--file-exists-behavior <value>] [--deployment-group <value>] [--events <comma-separated values>] [--agent-configuration-file <value>] [--appspec-filename <value>]

Options

-l, --bundle-location

Emplacement du bundle de la révision d'application. Si vous ne spécifiez pas d'emplacement, l'outil utilise par défaut le répertoire dans lequel vous travaillez actuellement. Si vous spécifiez une valeur pour --bundle-location, vous devez également en spécifier une pour --type.

Exemples de format pour l'emplacement du bundle :

  • Instance locale de serveur Amazon Linux, RHEL ou Ubuntu : /path/to/local/bundle.tgz

  • Instance Windows Server locale : C:/path/to/local/bundle

  • Compartiment Amazon S3 : s3://DOC-EXAMPLE-BUCKET/bundle.tar

  • GitHub référentiel : https://github.com/account-name/repository-name/

-t, --type

Format du bundle de la révision d'application. Les types pris en charge incluent tgz, tar, zip et directory. Si vous ne spécifiez aucun type, l'outil utilise directory par défaut. Si vous spécifiez une valeur pour --type, vous devez également en spécifier une pour --bundle-location.

-b, -- file-exists-behavior

Indique le traitement à appliquer aux fichiers qui existent déjà dans un emplacement cible du déploiement mais qui ne faisaient pas partie d'un précédent déploiement réussi. Les options incluent DISALLOW, OVERWRITE, RETAIN. Pour plus d'informations, consultez fileExistsBehaviorla section Référence des AWS CodeDeploy API.

-g, --deployment-group

Chemin du dossier constituant l'emplacement cible du contenu à déployer. Si vous ne spécifiez aucun dossier, l'outil en crée un nommé default-local-deployment-groupdans le répertoire racine de votre déploiement. Pour chaque déploiement local que vous créez, l'outil crée un sous-répertoire à l'intérieur de ce dossier avec un nom tel que d-98761234-local.

-e, --events

Un ensemble de hooks d'événements de remplacement du cycle de vie que vous souhaitez exécuter, dans l'ordre, à la place des événements que vous avez répertoriés dans le AppSpec fichier. Plusieurs hooks peuvent être spécifiés, séparés par des virgules. Vous pouvez utiliser cette option si :

  • Vous souhaitez exécuter un ensemble d'événements différent sans avoir à mettre à jour le AppSpec fichier.

  • Vous souhaitez exécuter un hook d'événement unique en tant qu'exception au contenu du AppSpec fichier, par exempleApplicationStop.

Si vous ne spécifiez ni n'installez DownloadBundleles événements dans la liste de remplacement, ils s'exécuteront avant tous les hooks d'événements que vous spécifiez. Si vous incluez DownloadBundleet Installer dans la liste des --events options, elles doivent être précédées uniquement des événements qui s'exécutent normalement avant elles lors CodeDeploy des déploiements. Pour plus d’informations, veuillez consulter AppSpec section « crochets ».

-c, -- agent-configuration-file

Emplacement d'un fichier de configuration à utiliser pour le déploiement, si vous le stockez à un emplacement autre que celui par défaut. Un fichier de configuration spécifie des options alternatives pour les autres valeurs et comportements par défaut dans le cadre d'un déploiement.

Par défaut, les fichiers de configuration sont stockés dans /etc/codedeploy-agent/conf/codedeployagent.yml (instances Amazon Linux, RHEL ou Ubuntu Server) ou C:/ProgramData/Amazon/CodeDeploy/conf.yml (Windows Server). Pour plus d’informations, consultez CodeDeploy référence de configuration de l'agent.

-A, --appspec-filename

Le nom du AppSpec fichier. Pour les déploiements locaux, les valeurs acceptées sont appspec.yml etappspec.yaml. Par défaut, le AppSpec fichier est appeléappspec.yml.

-h, --help

Affiche un résumé du contenu d'aide.

-v, --version

Affiche le numéro de version de l'outil.

Exemples

Voici des exemples de formats de commande valides.

codedeploy-local
codedeploy-local --bundle-location /path/to/local/bundle/directory
codedeploy-local --bundle-location C:/path/to/local/bundle.zip --type zip --deployment-group my-deployment-group
codedeploy-local --bundle-location /path/to/local/directory --type directory --deployment-group my-deployment-group

Déployez un bundle depuis Amazon S3 :

codedeploy-local --bundle-location s3://DOC-EXAMPLE-BUCKET/bundle.tgz --type tgz
codedeploy-local --bundle-location s3://DOC-EXAMPLE-BUCKET/bundle.zip?versionId=1234&etag=47e8 --type zip --deployment-group my-deployment-group

Déployez un bundle à partir d'un GitHub dépôt public :

codedeploy-local --bundle-location https://github.com/awslabs/aws-codedeploy-sample-tomcat --type zip
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/master --type zip
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/HEAD --type zip
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/1a2b3c4d --type zip

Déploiement d'un bundle en spécifiant plusieurs événements de cycle de vie :

codedeploy-local --bundle-location /path/to/local/bundle.tar --type tar --application-folder my-deployment --events DownloadBundle,Install,ApplicationStart,HealthCheck

Arrêtez une application précédemment déployée à l'aide de l'événement ApplicationStop du cycle de vie :

codedeploy-local --bundle-location /path/to/local/bundle.tgz --type tgz --deployment-group --events ApplicationStop

Déploiement à l'aide d'un ID de groupe de déploiement spécifique :

codedeploy-local --bundle-location C:/path/to/local/bundle/directory --deployment-group 1234abcd-5dd1-4774-89c6-30b107ac5dca
codedeploy-local --bundle-location C:/path/to/local/bundle.zip --type zip --deployment-group 1234abcd-5dd1-4774-89c6-30b107ac5dca