

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.

# CodeDeploy tutoriels
<a name="tutorials"></a>

Cette section inclut des didacticiels qui vous aideront à apprendre à utiliser CodeDeploy.

Les procédures décrites dans ces didacticiels fournissent des suggestions concernant l'emplacement dans lequel stocker les fichiers (par exemple, c:\$1temp) et les noms à attribuer aux compartiments, sous-dossiers ou fichiers (par exemple, amzn-s3-demo-bucket et CodeDeployDemo - EC2 -trust.json, respectivement) HelloWorldApp, mais vous n'êtes pas obligé de les utiliser. Veillez simplement à substituer vos noms et emplacements de fichiers lorsque vous exécutez les procédures.

**Topics**
+ [Tutoriel : Déploiement WordPress sur une instance Amazon EC2 (Amazon Linux ou Red Hat Enterprise Linux et Linux, macOS ou Unix)](tutorials-wordpress.md)
+ [Tutoriel : Déployez un message « Bonjour tout le monde \$1 » application avec CodeDeploy (Windows Server)](tutorials-windows.md)
+ [Tutoriel : Déployer une application sur une instance locale avec CodeDeploy (Windows Server, Ubuntu Server ou Red Hat Enterprise Linux)](tutorials-on-premises-instance.md)
+ [Tutoriel : CodeDeploy À utiliser pour déployer une application dans un groupe Auto Scaling](tutorials-auto-scaling-group.md)
+ [Tutoriel : CodeDeploy À utiliser pour déployer une application à partir de GitHub](tutorials-github.md)
+ [Tutoriel : Déployer une application dans Amazon ECS](tutorial-ecs-deployment.md)
+ [Tutoriel : Déployer un service Amazon ECS avec un test de validation](tutorial-ecs-deployment-with-hooks.md)
+ [Tutoriel : Déployer une fonction Lambda mise à jour avec CodeDeploy et le modèle d'application AWS sans serveur](tutorial-lambda-sam.md)

# Tutoriel : Déploiement WordPress sur une instance Amazon EC2 (Amazon Linux ou Red Hat Enterprise Linux et Linux, macOS ou Unix)
<a name="tutorials-wordpress"></a>

Dans ce didacticiel, vous allez déployer WordPress un outil de blog open source et un système de gestion de contenu basés sur PHP et MySQL sur une seule instance Amazon EC2 exécutant Amazon Linux ou Red Hat Enterprise Linux (RHEL).

Ce n'est pas ce que vous recherchez ?
+ Pour vous entraîner à déployer sur une instance Amazon EC2 exécutant plutôt Windows Server, consultez. [Tutoriel : Déployez un message « Bonjour tout le monde \$1 » application avec CodeDeploy (Windows Server)](tutorials-windows.md)
+ Pour vous entraîner à déployer sur une instance sur site plutôt que sur une instance Amazon EC2, consultez. [Tutoriel : Déployer une application sur une instance locale avec CodeDeploy (Windows Server, Ubuntu Server ou Red Hat Enterprise Linux)](tutorials-on-premises-instance.md)

Les étapes de ce didacticiel sont présentées du point de vue d'une machine de développement locale exécutant Linux, macOS ou Unix. Bien que vous puissiez effectuer la plupart de ces étapes sur une machine locale exécutant Windows, vous devez adapter les étapes qui couvrent des commandes telles que **chmod** et **wget**, des applications telles que sed et des chemins de répertoires tels que `/tmp`.

Avant de commencer ce didacticiel, vous devez remplir les conditions préalables dans [Commencer avec CodeDeploy](getting-started-codedeploy.md). Il s'agit notamment de configurer un utilisateur, d'installer ou de mettre à niveau le AWS CLI, ainsi que de créer un profil d'instance IAM et un rôle de service.

**Topics**
+ [Étape 1 : Lancer et configurer une instance Amazon EC2 Amazon Linux ou Red Hat Enterprise Linux](tutorials-wordpress-launch-instance.md)
+ [Étape 2 : configurer votre contenu source à déployer sur l'instance Amazon EC2 Amazon Linux ou Red Hat Enterprise Linux](tutorials-wordpress-configure-content.md)
+ [Étape 3 : Chargez votre WordPress application sur Amazon S3](tutorials-wordpress-upload-application.md)
+ [Étape 4 : Déployez votre WordPress application](tutorials-wordpress-deploy-application.md)
+ [Étape 5 : Mettez à jour et redéployez votre application WordPress](tutorials-wordpress-update-and-redeploy-application.md)
+ [Étape 6 : Nettoyez votre WordPress application et les ressources associées](tutorials-wordpress-clean-up.md)

# Étape 1 : Lancer et configurer une instance Amazon EC2 Amazon Linux ou Red Hat Enterprise Linux
<a name="tutorials-wordpress-launch-instance"></a>

Pour déployer l' WordPress application CodeDeploy, vous aurez besoin d'une instance Amazon EC2 exécutant Amazon Linux ou Red Hat Enterprise Linux (RHEL). L'instance Amazon EC2 nécessite une nouvelle règle de sécurité entrante qui autorise les connexions HTTP. Cette règle est nécessaire pour afficher la WordPress page dans un navigateur après son déploiement réussi.

Suivez les instructions de la section [Créez une instance Amazon EC2 pour CodeDeploy](instances-ec2-create.md). Lorsque vous arriverez à la partie de ces instructions concernant l'attribution d'une balise d'instance Amazon EC2 à l'instance, assurez-vous de spécifier la clé **Name** de balise et la valeur de balise de. **CodeDeployDemo** (Si vous spécifiez une clé de balise ou une valeur de balise différente, les instructions fournies dans [Étape 4 : Déployez votre WordPress application](tutorials-wordpress-deploy-application.md) peuvent générer des résultats inattendus.)

Après avoir suivi les instructions pour lancer l'instance Amazon EC2, revenez à cette page et passez à la section suivante. Ne passez pas à [Créez une application avec CodeDeploy](applications-create.md) l'étape suivante.

## Connectez-vous à votre instance Amazon Linux ou RHEL Amazon EC2
<a name="tutorials-wordpress-launch-instance-connect"></a>

Après le lancement de votre nouvelle instance Amazon EC2, suivez ces instructions pour vous entraîner à vous y connecter.

1. Utilisez la **ssh** commande (ou un émulateur de terminal compatible SSH tel que [PuTTY](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html)) pour vous connecter à votre instance Amazon Linux ou RHEL Amazon EC2. Vous aurez besoin de l'adresse DNS publique de l'instance et de la clé privée de la paire de clés que vous avez utilisée lorsque vous avez démarré l'instance Amazon EC2. Pour plus d'informations, consultez [Connect to Your Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-connect-to-instance-linux.html).

   Par exemple, si l'adresse DNS publique est **ec2-01-234-567-890.compute-1.amazonaws.com** et que votre paire de clés d'instance Amazon EC2 pour l'accès SSH est nommée**codedeploydemo.pem**, vous devez taper :

   ```
   ssh -i /path/to/codedeploydemo.pem ec2-user@ec2-01-234-567-890.compute-1.amazonaws.com
   ```

   Remplacez `/path/to/codedeploydemo.pem` par le chemin de votre `.pem` fichier et l'exemple d'adresse DNS par l'adresse de votre instance Amazon Linux ou RHEL Amazon EC2.
**Note**  
Si vous recevez une erreur indiquant que les autorisations de votre fichier de clé sont trop ouvertes, vous devez limiter ces autorisations pour accorder l'accès uniquement à l'utilisateur actuel (vous-même). Par exemple, avec la **chmod** commande sous Linux, macOS ou Unix, tapez :

   ```
   chmod 400 /path/to/codedeploydemo.pem
   ```

1. Une fois connecté, vous verrez la bannière AMI de l'instance Amazon EC2. Pour Amazon Linux, cela devrait ressembler à ceci :

   ```
          __|  __|_  )
          _|  (     /   Amazon Linux AMI
         ___|\___|___|
   ```

1. Vous pouvez désormais vous déconnecter de l'instance Amazon EC2 en cours d'exécution.
**Avertissement**  
N'arrêtez pas ou ne mettez pas fin à l'instance Amazon EC2. Sinon, je CodeDeploy ne pourrai pas y déployer.

## Ajoutez une règle entrante qui autorise le trafic HTTP vers votre instance Amazon Linux ou RHEL Amazon EC2
<a name="tutorials-wordpress-launch-instance-add-inbound-rule"></a>

L'étape suivante confirme que votre instance Amazon EC2 possède un port HTTP ouvert afin que vous puissiez voir la page d'accueil de l' WordPress application déployée dans un navigateur. 

1. Connectez-vous à la console Amazon EC2 AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Choisissez **Instances**, puis choisissez votre instance. 

1. Dans l'onglet **Description**, sous **Groupes de sécurité**, choisissez **Afficher les règles entrantes**. 

   Vous devriez voir une liste de règles dans votre groupe de sécurité, comme suit :

   ```
   Security Groups associated with i-1234567890abcdef0
    Ports     Protocol     Source     launch-wizard-N
    22        tcp          0.0.0.0/0          ✔
   ```

1.  Sous **Groupes de sécurité**, choisissez le groupe de sécurité pour votre instance Amazon EC2. Il pourrait être nommé **launch-wizard-*N***. Le ***N*** dans le nom est un numéro attribué à votre groupe de sécurité lorsque l'instance a été créée. 

    Choisissez l'onglet **Entrant**. Si le groupe de sécurité de votre instance est correctement configuré, vous devriez voir apparaître une règle avec les valeurs suivantes : 
   + **Type** : HTTP
   + **Protocole** : TCP
   + **Plage de ports** : 80
   + **Source** : 0.0.0,0/0

1.  Si aucune règle ne contient ces valeurs, utilisez les procédures décrites dans [Ajouter des règles à un groupe de sécurité](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#adding-security-group-rule) pour les ajouter à une nouvelle règle de sécurité. 

# Étape 2 : configurer votre contenu source à déployer sur l'instance Amazon EC2 Amazon Linux ou Red Hat Enterprise Linux
<a name="tutorials-wordpress-configure-content"></a>

Désormais, il est temps de configurer le contenu source de votre application pour que vous ayez quelque chose à déployer sur l'instance.

**Topics**
+ [Obtenez le code source](#tutorials-wordpress-configure-content-download-code)
+ [Créez des scripts pour exécuter votre application](#tutorials-wordpress-configure-content-create-scripts)
+ [Ajouter un fichier de spécification d'application](#tutorials-wordpress-configure-content-add-appspec-file)

## Obtenez le code source
<a name="tutorials-wordpress-configure-content-download-code"></a>

Dans le cadre de ce didacticiel, vous déployez la plateforme de publication de WordPress contenu depuis votre machine de développement vers l'instance Amazon EC2 cible. Pour obtenir le code WordPress source, vous pouvez utiliser les appels de ligne de commande intégrés. Ou, si Git est installé sur votre machine de développement, vous pouvez l'utiliser à la place.

Pour ces étapes, nous supposons que vous avez téléchargé une copie du code WordPress source `/tmp` dans le répertoire de votre machine de développement. (Vous pouvez choisir n'importe quel répertoire, mais n'oubliez pas de remplacer `/tmp` par votre emplacement chaque fois que ce répertoire est spécifié dans ces étapes.)

Choisissez l'une des deux options suivantes pour copier les fichiers WordPress source sur votre machine de développement. La première option utilise des appels de ligne de commande intégrés. La deuxième option utilise Git.

**Topics**
+ [Pour obtenir une copie du code WordPress source (appels de ligne de commande intégrés)](#tutorials-wordpress-configure-content-download-code-command-line)
+ [Pour obtenir une copie du code WordPress source (Git)](#tutorials-wordpress-configure-content-download-code-git)

### Pour obtenir une copie du code WordPress source (appels de ligne de commande intégrés)
<a name="tutorials-wordpress-configure-content-download-code-command-line"></a>

1. Appelez la **wget** commande pour télécharger une copie du code WordPress source, sous forme de fichier .zip, dans le répertoire actuel :

   ```
   wget https://github.com/WordPress/WordPress/archive/master.zip
   ```

1. Appelez les commandes **unzip**, **mkdir**, **cp** et **rm** pour :
   + Décompressez le fichier `master`.zip dans le répertoire (dossier) `/tmp/WordPress_Temp`.
   + Copiez son contenu décompressé dans le dossier de destination `/tmp/WordPress`.
   + Supprimez le dossier `/tmp/WordPress_Temp` temporaire et le fichier `master`.

   Exécutez une par une les commandes :

   ```
   unzip master -d /tmp/WordPress_Temp
   ```

   ```
   mkdir -p /tmp/WordPress
   ```

   ```
   cp -paf /tmp/WordPress_Temp/WordPress-master/* /tmp/WordPress
   ```

   ```
   rm -rf /tmp/WordPress_Temp
   ```

   ```
   rm -f master
   ```

   Cela vous laisse un ensemble propre de fichiers de code WordPress source dans le `/tmp/WordPress` dossier.

### Pour obtenir une copie du code WordPress source (Git)
<a name="tutorials-wordpress-configure-content-download-code-git"></a>

1. Téléchargez et installez [Git](http://git-scm.com) sur votre machine de développement.

1. Dans le dossier `/tmp/WordPress`, appelez la commande **git init**. 

1. Appelez la **git clone** commande pour cloner le WordPress dépôt public, en créant votre propre copie dans le dossier de `/tmp/WordPress` destination :

   ```
   git clone https://github.com/WordPress/WordPress.git /tmp/WordPress
   ```

   Cela vous laisse un ensemble propre de fichiers de code WordPress source dans le `/tmp/WordPress` dossier.

## Créez des scripts pour exécuter votre application
<a name="tutorials-wordpress-configure-content-create-scripts"></a>

Créez ensuite un dossier et des scripts dans le répertoire. CodeDeploy utilise ces scripts pour configurer et déployer la révision de votre application sur l'instance Amazon EC2 cible. Vous pouvez utiliser un éditeur de texte quelconque pour créer ces scripts.

1. Créez un répertoire de scripts dans votre copie du code WordPress source :

   ```
   mkdir -p /tmp/WordPress/scripts
   ```

1. Créez un fichier `install_dependencies.sh` dans `/tmp/WordPress/scripts`. Ajoutez les lignes suivantes dans le fichier. Ce script `install_dependencies.sh` installe Apache, MySQL et PHP. Il ajoute également la prise en charge de MySQL à PHP.

   ```
   #!/bin/bash
   sudo amazon-linux-extras install php7.4
   sudo yum install -y httpd mariadb-server php
   ```

1. Créez un fichier `start_server.sh` dans `/tmp/WordPress/scripts`. Ajoutez les lignes suivantes dans le fichier. Ce script `start_server.sh` démarre Apache et MySQL.

   ```
   #!/bin/bash
   systemctl start mariadb.service
   systemctl start httpd.service
   systemctl start php-fpm.service
   ```

1. Créez un fichier `stop_server.sh` dans `/tmp/WordPress/scripts`. Ajoutez les lignes suivantes dans le fichier. Ce script `stop_server.sh` arrête Apache et MySQL.

   ```
   #!/bin/bash
   isExistApp="pgrep httpd"
   if [[ -n $isExistApp ]]; then
   systemctl stop httpd.service
   fi
   isExistApp=pgrep mysqld
   if [[ -n $isExistApp ]]; then
   systemctl stop mariadb.service
   fi
   isExistApp=pgrep php-fpm
   if [[ -n $isExistApp ]]; then
   systemctl stop php-fpm.service
   
   fi
   ```

1. Créez un fichier `create_test_db.sh` dans `/tmp/WordPress/scripts`. Ajoutez les lignes suivantes dans le fichier. Ce `create_test_db.sh` script utilise MySQL pour créer une **test** base de données WordPress à utiliser.

   ```
   #!/bin/bash
   mysql -uroot <<CREATE_TEST_DB
   CREATE DATABASE IF NOT EXISTS test;
   CREATE_TEST_DB
   ```

1. Enfin, créez un script `change_permissions.sh` dans `/tmp/WordPress/scripts`. Il permet de modifier les autorisations des dossiers dans Apache.
**Important**  
 Ce script a mis à jour les autorisations sur le dossier `/tmp/WordPress` pour que tout le monde puisse écrire dans celui-ci. Cela est nécessaire pour WordPress pouvoir écrire dans sa base de données pendant[Étape 5 : Mettez à jour et redéployez votre application WordPress](tutorials-wordpress-update-and-redeploy-application.md). Une fois l' WordPress application configurée, exécutez la commande suivante pour mettre à jour les autorisations selon un paramètre plus sécurisé :  

   ```
   chmod -R 755 /var/www/html/WordPress
   ```

   ```
   #!/bin/bash
   chmod -R 777 /var/www/html/WordPress
   ```

1. Fournissez à tous les scripts des autorisations d'exécution. Sur la ligne de commande, tapez :

   ```
   chmod +x /tmp/WordPress/scripts/*
   ```

## Ajouter un fichier de spécification d'application
<a name="tutorials-wordpress-configure-content-add-appspec-file"></a>

Ajoutez ensuite un fichier de spécification d'application (AppSpec fichier), un fichier au format [YAML](http://www.yaml.org) utilisé pour : CodeDeploy 
+ Mappez les fichiers source de la révision de votre application à leurs destinations sur l'instance Amazon EC2 cible.
+ spécifier des autorisations personnalisées pour les fichiers déployés ;
+ Spécifiez les scripts à exécuter sur l'instance Amazon EC2 cible lors du déploiement.

Le AppSpec fichier doit être nommé`appspec.yml`. Il doit être placé dans le répertoire racine du code source de l'application. Dans ce didacticiel, le répertoire racine est `/tmp/WordPress`.

Grâce à votre éditeur de texte, créez un fichier nommé `appspec.yml`. Ajoutez les lignes suivantes dans le fichier :

```
version: 0.0
os: linux
files:
  - source: /
    destination: /var/www/html/WordPress
hooks:
  BeforeInstall:
    - location: scripts/install_dependencies.sh
      timeout: 300
      runas: root
  AfterInstall:
    - location: scripts/change_permissions.sh
      timeout: 300
      runas: root
  ApplicationStart:
    - location: scripts/start_server.sh
    - location: scripts/create_test_db.sh
      timeout: 300
      runas: root
  ApplicationStop:
    - location: scripts/stop_server.sh
      timeout: 300
      runas: root
```

CodeDeploy utilise ce AppSpec fichier pour copier tous les fichiers du `/tmp/WordPress` dossier de la machine de développement vers le `/var/www/html/WordPress` dossier de l'instance Amazon EC2 cible. Au cours du déploiement, CodeDeploy exécute les scripts spécifiés tels qu'ils `root` figurent dans le `/var/www/html/WordPress/scripts` dossier de l'instance Amazon EC2 cible lors d'événements spécifiques du cycle de vie du déploiement, tels que **BeforeInstall** et. **AfterInstall** Si l'exécution de l'un de ces scripts prend plus de 300 secondes (5 minutes), CodeDeploy arrête le déploiement et marque le déploiement comme ayant échoué.

Pour plus d'informations sur ces paramètres, consultez la rubrique [CodeDeploy AppSpec référence de fichier](reference-appspec-file.md).

**Important**  
Les emplacements et les nombres d'espaces entre les différents éléments de ce fichier sont importants. Si l'espacement est incorrect, CodeDeploy cela génère une erreur qui peut être difficile à déboguer. Pour de plus amples informations, veuillez consulter [AppSpec Espacement des fichiers](reference-appspec-file.md#reference-appspec-file-spacing).

# Étape 3 : Chargez votre WordPress application sur Amazon S3
<a name="tutorials-wordpress-upload-application"></a>

Vous allez maintenant préparer et télécharger votre contenu source vers un emplacement à partir duquel CodeDeploy vous pourrez le déployer. Les instructions suivantes vous montrent comment configurer un compartiment Amazon S3, préparer les fichiers de révision de l'application pour le compartiment, regrouper les fichiers de révision, puis transférer la révision dans le compartiment.

**Note**  
Bien que cela ne soit pas abordé dans ce didacticiel, vous pouvez l'utiliser CodeDeploy pour déployer des applications depuis des GitHub référentiels vers des instances. Pour de plus amples informations, veuillez consulter [Intégration CodeDeploy avec GitHub](integrations-partners-github.md).

**Topics**
+ [Provisionner un compartiment Amazon S3](#tutorials-wordpress-upload-application-create-s3-bucket)
+ [Préparer les fichiers de l'application pour le bucket](#tutorials-wordpress-upload-application-prepare-application-files)
+ [Regroupez les fichiers de l'application dans un seul fichier d'archive et transférez le fichier d'archive](#tutorials-wordpress-upload-application-bundle-and-push-archive)

## Provisionner un compartiment Amazon S3
<a name="tutorials-wordpress-upload-application-create-s3-bucket"></a>

Créez un conteneur ou un *compartiment* de stockage dans Amazon S3 ou utilisez un compartiment existant. Assurez-vous que vous pouvez télécharger la révision dans le compartiment et que les instances Amazon EC2 utilisées dans les déploiements peuvent télécharger la révision depuis le compartiment.

Vous pouvez utiliser AWS CLI la console Amazon S3 ou Amazon S3 APIs pour créer un compartiment Amazon S3. Après avoir créé le bucket, assurez-vous de donner des autorisations d'accès au bucket et à votre AWS compte.

**Note**  
Les noms de compartiment doivent être uniques sur Amazon S3 pour tous les AWS comptes. Si vous n'êtes pas en mesure d'utiliser **amzn-s3-demo-bucket**, essayez un autre nom de compartiment, tel que **amzn-s3-demo-bucket**, suivi d'un tiret et de vos initiales ou d'un autre identificateur unique. Veillez ensuite à substituer votre nom de compartiment à **amzn-s3-demo-bucket** chaque fois que vous le verrez tout au long de ce didacticiel.  
Le compartiment Amazon S3 doit être créé dans la même AWS région que celle où vos instances Amazon EC2 cibles sont lancées. Par exemple, si vous créez le bucket dans la région USA Est (Virginie du Nord), vos instances Amazon EC2 cibles doivent être lancées dans la région USA Est (Virginie du Nord).

**Topics**
+ [Pour créer un compartiment Amazon S3 (CLI)](#tutorials-wordpress-upload-application-create-s3-bucket-cli)
+ [Pour créer un compartiment Amazon S3 (console)](#tutorials-wordpress-upload-application-create-s3-bucket-console)
+ [Donnez des autorisations au compartiment et au AWS compte Amazon S3](#tutorials-wordpress-upload-application-create-s3-bucket-grant-permissions)

### Pour créer un compartiment Amazon S3 (CLI)
<a name="tutorials-wordpress-upload-application-create-s3-bucket-cli"></a>

Appelez la **mb** commande pour créer un compartiment Amazon S3 nommé **amzn-s3-demo-bucket** :

```
aws s3 mb s3://amzn-s3-demo-bucket --region region
```

### Pour créer un compartiment Amazon S3 (console)
<a name="tutorials-wordpress-upload-application-create-s3-bucket-console"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans la console Amazon S3, choisissez **Create bucket**.

1. Dans la zone **Nom du compartiment**, saisissez un nom pour le compartiment.

1. Dans la liste**Région**, choisissez la région cible, puis **Créer**.

### Donnez des autorisations au compartiment et au AWS compte Amazon S3
<a name="tutorials-wordpress-upload-application-create-s3-bucket-grant-permissions"></a>

Vous devez disposer des autorisations nécessaires pour effectuer le téléchargement dans le compartiment Amazon S3. Vous pouvez spécifier ces autorisations par le biais d'une politique de compartiment Amazon S3. Par exemple, dans la politique de compartiment Amazon S3 suivante, l'utilisation du caractère générique (\$1) permet `111122223333` au AWS compte de télécharger des fichiers dans n'importe quel répertoire du compartiment Amazon S3 nommé `amzn-s3-demo-bucket` :

```
{
    "Statement": [
        {
            "Action": [
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Principal": {
                "AWS": [
                    "111122223333"
                ]
            }
        }
    ]
}
```

Pour consulter l'identifiant de votre AWS compte, consultez la section [Trouver votre identifiant de AWS compte](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html#FindingYourAWSId).

C'est le bon moment pour vérifier que le compartiment Amazon S3 autorisera les demandes de téléchargement provenant de chaque instance Amazon EC2 participante. Vous pouvez le spécifier par le biais d'une politique de compartiment Amazon S3. Par exemple, dans la politique de compartiment Amazon S3 suivante, l'utilisation du caractère générique (\$1) permet à toute instance Amazon EC2 associée à un profil d'instance IAM contenant l'`arn:aws:iam::444455556666:role/CodeDeployDemo`ARN de télécharger des fichiers depuis n'importe quel répertoire du compartiment Amazon S3 nommé : `amzn-s3-demo-bucket`

```
{
    "Statement": [
        {
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::444455556666:role/CodeDeployDemo"
                ]
            }
        }
    ]
}
```

 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html).

Pour plus d'informations sur la création et l'attachement d'une stratégie IAM, consultez la section [Utilisation des politiques](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html#AddingPermissions_Console).

## Préparer les fichiers de l'application pour le bucket
<a name="tutorials-wordpress-upload-application-prepare-application-files"></a>

Assurez-vous que les fichiers WordPress d'application, le AppSpec fichier et les scripts sont organisés sur votre machine de développement de la manière suivante :

```
/tmp/
  |--WordPress/
      |-- appspec.yml  
      |-- scripts/
      |    |-- change_permissions.sh
      |    |-- create_test_db.sh
      |    |-- install_dependencies.sh
      |    |-- start_server.sh
      |    |-- stop_server.sh
      |-- wp-admin/
      |    |-- (various files...)
      |-- wp-content/
      |    |-- (various files...)
      |-- wp-includes/
      |    |-- (various files...)
      |-- index.php
      |-- license.txt
      |-- readme.html
      |-- (various files ending with .php...)
```

## Regroupez les fichiers de l'application dans un seul fichier d'archive et transférez le fichier d'archive
<a name="tutorials-wordpress-upload-application-bundle-and-push-archive"></a>

Regroupez les fichiers WordPress d'application et le AppSpec fichier dans un fichier d'archive (connu sous le nom de *révision* de l'application).

**Note**  
Il est possible qu'il vous soit facturé le stockage des objets dans un compartiment et le transfert des révisions d'application vers et hors d'un compartiment. Pour plus d’informations, consultez [Tarification Amazon S3](https://aws.amazon.com/s3/pricing/). 

1. Sur la machine de développement, basculez vers le dossier dans lequel les fichiers sont stockés : 

   ```
   cd /tmp/WordPress
   ```
**Note**  
Si vous ne basculez pas dans ce dossier, la création d'un bundle de fichiers commencera dans votre dossier actif. Par exemple, si votre dossier actif est `/tmp` au lieu de `/tmp/WordPress`, la création du bundle commencera avec les fichiers et les sous-dossiers figurant dans le dossier `tmp`, lequel peut inclure plus que le simple sous-dossier `WordPress`.

1. Appelez la commande **create-application** pour enregistrer une nouvelle application nommée **WordPress\$1App** :

   ```
   aws deploy create-application --application-name WordPress_App
   ```

1. Appelez la commande CodeDeploy [push](https://docs.aws.amazon.com/cli/latest/reference/deploy/push.html) pour regrouper les fichiers, télécharger les révisions CodeDeploy sur Amazon S3 et enregistrer les informations relatives à la révision téléchargée, le tout en une seule action. 

   ```
   aws deploy push \
     --application-name WordPress_App \
     --s3-location s3://amzn-s3-demo-bucket/WordPressApp.zip \
     --ignore-hidden-files
   ```

   Cette commande regroupe les fichiers du répertoire actuel (à l'exception des fichiers cachés) dans un seul fichier d'archive nommé**WordPressApp.zip**, télécharge la révision dans le **amzn-s3-demo-bucket** compartiment et enregistre les informations relatives à CodeDeploy la révision téléchargée.

# Étape 4 : Déployez votre WordPress application
<a name="tutorials-wordpress-deploy-application"></a>

Vous devez maintenant déployer l'exemple de révision WordPress d'application que vous avez chargé sur Amazon S3. Vous pouvez utiliser la console AWS CLI ou la CodeDeploy console pour déployer la révision et suivre la progression du déploiement. Une fois que la révision d'application est déployée avec succès, vous vérifiez les résultats.

**Topics**
+ [Déployez la révision de votre application avec CodeDeploy](#tutorials-wordpress-deploy-application-create-deployment)
+ [Surveillez et résolvez les problèmes liés à votre déploiement](#tutorials-wordpress-deploy-application-monitor)
+ [Vérifiez votre déploiement](#tutorials-wordpress-deploy-application-verify-deployment)

## Déployez la révision de votre application avec CodeDeploy
<a name="tutorials-wordpress-deploy-application-create-deployment"></a>

Utilisez la console AWS CLI ou la console pour déployer la révision de votre application.

**Topics**
+ [Pour déployer votre révision d'application (interface CLI)](#tutorials-wordpress-deploy-application-create-deployment-cli)
+ [Pour déployer votre révision d'application (console)](#tutorials-wordpress-deploy-application-create-deployment-console)

### Pour déployer votre révision d'application (interface CLI)
<a name="tutorials-wordpress-deploy-application-create-deployment-cli"></a>

1. Le déploiement a besoin d'un groupe de déploiement. Toutefois, avant de créer le groupe de déploiement, vous avez besoin d'un nom ARN de rôle de service. Un rôle de service est un rôle IAM qui autorise un service à agir en votre nom. Dans ce cas, le rôle de service donne CodeDeploy l'autorisation d'accéder à vos instances Amazon EC2 pour étendre (lire) leurs balises d'instance Amazon EC2.

   Vous devriez avoir déjà suivi les instructions de la rubrique [Création d'un rôle de service (CLI)](getting-started-create-service-role.md#getting-started-create-service-role-cli) pour créer un rôle de service. Pour obtenir le nom ARN du rôle de service, consultez la page [Obtenez l'ARN du rôle de service (CLI)](getting-started-create-service-role.md#getting-started-get-service-role-cli).

1. Maintenant que vous disposez de l'ARN du rôle de service, appelez la **create-deployment-group** commande pour créer un groupe de déploiement nommé**WordPress\$1DepGroup**, associé à l'application nommée**WordPress\$1App**, à l'aide de la balise Amazon EC2 **CodeDeployDemo** et de la configuration de déploiement nommée : **CodeDeployDefault.OneAtATime**

   ```
   aws deploy create-deployment-group \
     --application-name WordPress_App \
     --deployment-group-name WordPress_DepGroup \
     --deployment-config-name CodeDeployDefault.OneAtATime \
     --ec2-tag-filters Key=Name,Value=CodeDeployDemo,Type=KEY_AND_VALUE \
     --service-role-arn serviceRoleARN
   ```

   
**Note**  
La [create-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html)commande permet de créer des déclencheurs qui entraînent l'envoi de notifications Amazon SNS aux abonnés du topic concernant des événements spécifiques liés aux déploiements et aux instances. La commande prend également en charge des options permettant d'annuler automatiquement les déploiements et de configurer des alarmes pour arrêter les déploiements lorsque les seuils de surveillance des CloudWatch alarmes d'Amazon sont atteints. Les commandes associées à ces actions ne sont pas incluses dans ce didacticiel.

1. Avant de créer un déploiement, l' CodeDeploy agent doit être installé sur les instances de votre groupe de déploiement. Vous pouvez installer l'agent à partir de la ligne de commande AWS Systems Manager avec la commande suivante :

   ```
   aws ssm create-association \
     --name AWS-ConfigureAWSPackage \
     --targets Key=tag:Name,Values=CodeDeployDemo \
     --parameters action=Install,name=AWSCodeDeployAgent \
     --schedule-expression "cron(0 2 ? * SUN *)"
   ```

   Cette commande crée une association dans Systems Manager State Manager qui installera l' CodeDeploy agent puis tentera de le mettre à jour à 2h00 tous les dimanches matins. Pour plus d'informations sur l' CodeDeploy agent, consultez la section [Utilisation de l' CodeDeploy agent](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent.html). Pour plus d'informations sur Systems Manager, consultez [What is AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html).

1. Maintenant, appelez la commande **create-deployment** pour créer un déploiement associé à l'application nommée **WordPress\$1App**, à la configuration de déploiement nommée **CodeDeployDefault.OneAtATime** et au groupe de déploiement nommé **WordPress\$1DepGroup**, en utilisant la révision d'application nommée **WordPressApp.zip** dans le compartiment nommé **amzn-s3-demo-bucket** :

   ```
   aws deploy create-deployment \
     --application-name WordPress_App \
     --deployment-config-name CodeDeployDefault.OneAtATime \
     --deployment-group-name WordPress_DepGroup \
     --s3-location bucket=amzn-s3-demo-bucket,bundleType=zip,key=WordPressApp.zip
   ```

### Pour déployer votre révision d'application (console)
<a name="tutorials-wordpress-deploy-application-create-deployment-console"></a>

1. Avant d'utiliser la CodeDeploy console pour déployer la révision de votre application, vous avez besoin d'un ARN de rôle de service. Un rôle de service est un rôle IAM qui autorise un service à agir en votre nom. Dans ce cas, le rôle de service donne CodeDeploy l'autorisation d'accéder à vos instances Amazon EC2 pour étendre (lire) leurs balises d'instance Amazon EC2.

   Vous devriez avoir déjà suivi les instructions de la rubrique [Création d'un rôle de service (console)](getting-started-create-service-role.md#getting-started-create-service-role-console) pour créer un rôle de service. Pour obtenir le nom ARN du rôle de service, consultez la page [Obtenir l'ARN du rôle de service (console)](getting-started-create-service-role.md#getting-started-get-service-role-console).

1. Maintenant que vous avez l'ARN, utilisez la CodeDeploy console pour déployer la révision de votre application :

   Connectez-vous à la CodeDeploy console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codedeploy.](https://console.aws.amazon.com/codedeploy)
**Note**  
Connectez-vous avec le même utilisateur que celui que vous avez configuré[Commencer avec CodeDeploy](getting-started-codedeploy.md).

1. Dans le volet de navigation, développez **Deploy**, puis choisissez **Applications**.

1. Dans la liste des applications, choisissez **WordPress\$1App**.

1. Dans l'onglet **Groupes de déploiement**, choisissez **Créer un groupe de déploiement**.

1. Dans **Nom du groupe de déploiement**, saisissez **WordPress\$1DepGroup**.

1. Sous **Deployment type**, choisissez déploiement **In-place**.

1. Dans **Configuration de l'environnement**, sélectionnez les **instances Amazon EC2.**

1. Dans la **configuration de l'agent avec AWS Systems Manager**, conservez les valeurs par défaut.

1. Dans **Clé**, entrez **Name**.

1. Dans **Value (Valeur)**, entrez **CodeDeployDemo**.
**Note**  
Une fois que vous avez saisi le code**CodeDeployDemo**, un **1** doit apparaître sous **Instances correspondantes** pour confirmer qu'une instance Amazon EC2 correspondante CodeDeploy a été trouvée.

1. Dans **Configuration du déploiement**, choisissez **CodeDeployDefault. OneAtATime**.

1. Dans **ARN de rôle de service**, choisissez l'ARN du rôle de service, puis choisissez **Créer un groupe de déploiement**.

1. Choisissez **Créer un déploiement**.

1. Dans **Groupe de déploiement**, choisissez **WordPress\$1DepGroup**.

1. À côté de **Type de référentiel**, choisissez **Mon application est stockée dans Amazon S3**. Dans **Emplacement de la révision**, entrez l'emplacement de l'exemple de révision de WordPress l'application que vous avez précédemment chargé sur Amazon S3. Pour obtenir cet emplacement :

   1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

   1. Dans la liste des buckets, choisissez **amzn-s3-demo-bucket (ou le nom du bucket dans lequel** vous avez chargé la révision de votre application). 

   1. Dans la liste des objets, choisissez **WordPressApp.zip.**

   1. Dans l'onglet **Présentation**, copiez la valeur du champ **Lien** dans votre presse-papiers.

      Elle peut ressembler à ceci :

      **https://s3.amazonaws.com/amzn-s3-demo-bucket/WordPressApp.zip**

   1. Retournez à la CodeDeploy console, puis dans **Emplacement de la révision**, collez la valeur du champ **Lien**.

1. Dans la liste **File type** (Type de fichier), si un message s'affiche indiquant que le type de fichier n'a pas pu être détecté, choisissez **.zip**.

1. (Facultatif) Tapez un commentaire dans la zone **Deployment description**. 

1. **Développez les **remplacements des groupes** de **déploiement, puis sélectionnez CodeDeployDefault Configuration** du déploiement. OneAtATime**.

1. Choisissez **Démarrer le déploiement**. Des informations sur votre déploiement nouvellement créé s'affichent dans la page **Deployments**.

## Surveillez et résolvez les problèmes liés à votre déploiement
<a name="tutorials-wordpress-deploy-application-monitor"></a>

Utilisez la console AWS CLI ou la console pour surveiller et résoudre les problèmes liés à votre déploiement.

**Topics**
+ [Pour surveiller et dépanner votre déploiement (interface CLI)](#tutorials-wordpress-deploy-application-monitor-cli)
+ [Pour surveiller et dépanner votre déploiement (console)](#tutorials-wordpress-deploy-application-monitor-console)

### Pour surveiller et dépanner votre déploiement (interface CLI)
<a name="tutorials-wordpress-deploy-application-monitor-cli"></a>

1. Obtenez l'ID du déploiement en appelant la commande **list-deployments** sur l'application nommée **WordPress\$1App** et le groupe de déploiement nommé **WordPress\$1DepGroup** :

   ```
   aws deploy list-deployments --application-name WordPress_App --deployment-group-name WordPress_DepGroup --query 'deployments' --output text
   ```

1. Appelez la commande **get-deployment** avec l'ID du déploiement :

   ```
   aws deploy get-deployment --deployment-id deploymentID --query 'deploymentInfo.status' --output text
   ```

1. La commande renvoie l'état général du déploiement. En cas de réussite, la valeur est `Succeeded`.

   Si l'état général est `Failed`, vous pouvez appeler des commandes telles que [list-deployment-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-instances.html) et [get-deployment-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-instance.html) pour résoudre les problèmes. Pour plus d'options de dépannage, consultez la page [Analyse des fichiers journaux pour enquêter sur des échecs de déploiement sur les instances](troubleshooting-ec2-instances.md#troubleshooting-deploy-failures).

### Pour surveiller et dépanner votre déploiement (console)
<a name="tutorials-wordpress-deploy-application-monitor-console"></a>

Sur la page **Déploiements** de la CodeDeploy console, vous pouvez surveiller l'état de votre déploiement dans la colonne **État**.

Pour obtenir plus d'informations sur votre déploiement, notamment si la valeur de la colonne **État**a une valeur différente de **Succeeded** :

1. Dans la table **Déploiements**, choisissez du nom du déploiement. Une fois qu'un déploiement a échoué, un message décrivant la raison de l'échec s'affiche.

1. Dans **Activité des instances**, d'autres informations sur le déploiement s'affichent. Après l'échec d'un déploiement, vous pourrez peut-être déterminer sur quelles instances Amazon EC2 et à quelle étape le déploiement a échoué.

1. Si vous souhaitez effectuer davantage d'opérations de dépannage, vous pouvez utiliser une technique telle que celle décrite dans [Afficher les détails de l'instance avec CodeDeploy](instances-view-details.md). Vous pouvez également analyser les fichiers journaux de déploiement sur une instance Amazon EC2. Pour de plus amples informations, veuillez consulter [Analyse des fichiers journaux pour enquêter sur des échecs de déploiement sur les instances](troubleshooting-ec2-instances.md#troubleshooting-deploy-failures).

## Vérifiez votre déploiement
<a name="tutorials-wordpress-deploy-application-verify-deployment"></a>

Une fois le déploiement réussi, vérifiez que votre WordPress installation fonctionne. Utilisez l'adresse DNS publique de l'instance Amazon EC2, suivie de`/WordPress`, pour consulter votre site dans un navigateur Web. (Pour obtenir la valeur du DNS public, dans la console Amazon EC2, choisissez l'instance Amazon EC2, puis dans l'onglet Description, recherchez **la** valeur **du** DNS public.)

Par exemple, si l'adresse DNS publique de votre instance Amazon EC2 est**ec2-01-234-567-890.compute-1.amazonaws.com**, vous devez utiliser l'URL suivante :

```
http://ec2-01-234-567-890.compute-1.amazonaws.com/WordPress
```

Lorsque vous consultez le site dans votre navigateur, vous devriez voir une page d' WordPress accueil semblable à la suivante :

![\[WordPress page d'accueil\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/images/WordPress-Welcome-Page-013118.png)


 Si aucune règle HTTP entrante n'est ajoutée à votre instance Amazon EC2 dans son groupe de sécurité, la page d' WordPress accueil ne s'affiche pas. Si vous voyez un message indiquant que le serveur distant ne répond pas, assurez-vous que le groupe de sécurité de votre instance Amazon EC2 dispose de la règle d'entrée. Pour de plus amples informations, veuillez consulter [Ajoutez une règle entrante qui autorise le trafic HTTP vers votre instance Amazon Linux ou RHEL Amazon EC2Ajoutez une règle entrante qui autorise le trafic HTTP vers votre instance Amazon EC2 de Windows Server](tutorials-wordpress-launch-instance.md#tutorials-wordpress-launch-instance-add-inbound-rule). 

# Étape 5 : Mettez à jour et redéployez votre application WordPress
<a name="tutorials-wordpress-update-and-redeploy-application"></a>

Maintenant que vous avez déployé avec succès la révision de votre application, mettez à jour le WordPress code sur la machine de développement, puis utilisez-le CodeDeploy pour redéployer le site. Ensuite, vous devriez voir les modifications de code sur l'instance Amazon EC2.

**Topics**
+ [Configurez le WordPress site](#tutorials-wordpress-update-and-redeploy-application-configure-and-install)
+ [Modifier le site](#tutorials-wordpress-update-and-redeploy-application-modify-code)
+ [Redéployer le site](#tutorials-wordpress-update-and-redeploy-application-deploy-updates)

## Configurez le WordPress site
<a name="tutorials-wordpress-update-and-redeploy-application-configure-and-install"></a>

Pour voir les effets de la modification du code, terminez la configuration du WordPress site afin de disposer d'une installation entièrement fonctionnelle.

1. Tapez l'URL de votre site dans votre navigateur Web. L'URL est l'adresse DNS publique de l'instance Amazon EC2 plus une `/WordPress` extension. Pour cet exemple de WordPress site (et par exemple l'adresse DNS publique de l'instance Amazon EC2), l'URL est. **http://ec2-01-234-567-890.compute-1.amazonaws.com/WordPress**

1. Si vous n'avez pas encore configuré le site, la page d'accueil WordPress par défaut s'affiche. Choisissez **C'est parti \$1**.

1. Pour utiliser la base de données MySQL par défaut, sur la page de configuration de base de données, tapez les valeurs suivantes :
   + **Nom de base de données** : **test**
   + **Nom d'utilisateur** :**root**
   + **Mot de passe** : laissez vide.
   + **Hôte de base de données** : **localhost**
   + **Préfixe de tableau** : **wp\$1**

   Choisissez **Soumettre** pour configurer la base de données.

1. Poursuivez la configuration du site. Sur la page de **bienvenue**, saisissez les valeurs souhaitées, puis choisissez **Installer WordPress**. Une fois l'installation terminée, vous pouvez vous connecter à votre tableau de bord.

**Important**  
 Pendant le déploiement de l' WordPress application, le **change\$1permissions.sh** script a mis à jour les autorisations du `/tmp/WordPress` dossier afin que tout le monde puisse y écrire. C'est le bon moment pour exécuter la commande suivante afin de limiter les autorisations de manière à être le seul, en tant que propriétaire, à pouvoir écrire dans celui-ci :  

```
chmod -R 755 /var/www/html/WordPress
```

## Modifier le site
<a name="tutorials-wordpress-update-and-redeploy-application-modify-code"></a>

Pour modifier le WordPress site, rendez-vous dans le dossier de l'application sur votre machine de développement :

```
cd /tmp/WordPress
```

Pour modifier certaines couleurs du site, dans le fichier `wp-content/themes/twentyfifteen/style.css`, utilisez un éditeur de texte ou **sed** pour remplacer `#fff` par `#768331`. 

Sous Linux ou d'autres systèmes avec GNU **sed**, utilisez :

```
sed -i 's/#fff/#768331/g' wp-content/themes/twentyfifteen/style.css
```

Sous macOS, Unix ou d'autres systèmes avec BSD **sed**, utilisez :

```
sed -i '' 's/#fff/#768331/g' wp-content/themes/twentyfifteen/style.css
```

## Redéployer le site
<a name="tutorials-wordpress-update-and-redeploy-application-deploy-updates"></a>

Maintenant que vous avez modifié le code du site, utilisez Amazon S3 CodeDeploy pour redéployer le site.

Regroupez et chargez les modifications sur Amazon S3, comme décrit dans[Regroupez les fichiers de l'application dans un seul fichier d'archive et transférez le fichier d'archive](tutorials-wordpress-upload-application.md#tutorials-wordpress-upload-application-bundle-and-push-archive). (Lorsque vous suivez ces instructions, souvenez-vous que vous n'avez pas besoin de créer une application.) Donnez à la nouvelle révision la même clé qu'auparavant (**WordPressApp.zip**). Téléchargez-le dans le même compartiment Amazon S3 que vous avez créé précédemment (par exemple,**amzn-s3-demo-bucket**).

Utilisez le AWS CLI, la CodeDeploy console ou le CodeDeploy APIs pour redéployer le site.

**Topics**
+ [Pour redéployer le site (interface CLI)](#tutorials-wordpress-update-and-redeploy-application-deploy-updates-cli)
+ [Pour redéployer le site (console)](#tutorials-wordpress-update-and-redeploy-application-deploy-updates-console)

### Pour redéployer le site (interface CLI)
<a name="tutorials-wordpress-update-and-redeploy-application-deploy-updates-cli"></a>

Appelez la commande **create-deployment** pour créer un déploiement basé sur la révision nouvellement chargée. Utilisez l'application nommée **WordPress\$1App**, la configuration de déploiement nommée **CodeDeployDefault.OneAtATime**, le groupe de déploiement nommé **WordPress\$1DepGroup** et la révision nommée **WordPressApp.zip** dans le compartiment nommé **amzn-s3-demo-bucket** :

```
 aws deploy create-deployment \
  --application-name WordPress_App \
  --deployment-config-name CodeDeployDefault.OneAtATime \
  --deployment-group-name WordPress_DepGroup \  
  --s3-location bucket=amzn-s3-demo-bucket,bundleType=zip,key=WordPressApp.zip
```

Vous pouvez vérifier l'état du déploiement, comme décrit dans la rubrique [Surveillez et résolvez les problèmes liés à votre déploiement](tutorials-wordpress-deploy-application.md#tutorials-wordpress-deploy-application-monitor).

Après avoir CodeDeploy redéployé le site, revisitez-le dans votre navigateur Web pour vérifier que les couleurs ont été modifiées. (Vous devrez peut-être actualiser votre navigateur.) Si les couleurs ont été modifiées, vous avez réussi la procédure. Vous avez réussi à modifier et à redéployer votre site.

### Pour redéployer le site (console)
<a name="tutorials-wordpress-update-and-redeploy-application-deploy-updates-console"></a>

1. Connectez-vous à la CodeDeploy console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codedeploy.](https://console.aws.amazon.com/codedeploy)
**Note**  
Connectez-vous avec le même utilisateur que celui que vous avez configuré[Commencer avec CodeDeploy](getting-started-codedeploy.md).

1. Dans le volet de navigation, développez **Deploy**, puis choisissez **Applications**.

1. Dans la liste des applications, choisissez **WordPress\$1App**.

1. Sur l'onglet **Groupes de déploiement**, choisissez **WordPress\$1DepGroup**.

1. Choisissez **Créer un déploiement**. 

1. Sur la page **Créer un déploiement** :

   1. Dans **Groupe de déploiement**, choisissez **WordPress\$1DepGroup**.

   1. Dans la zone **Type de référentiel**, choisissez **Mon application est stockée dans Amazon S3**, puis copiez le lien Amazon S3 de votre révision dans le champ **Emplacement de la révision**. Pour trouver la valeur du lien : 

      1. Dans un onglet de navigateur distinct :

         Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

          Accédez à **amzn-s3-demo-bucket et ouvrez-le, puis choisissez votre révision**,. **WordPressApp.zip** 

      1.  Si le volet **Propriétés** n'est pas visible dans la console Amazon S3, cliquez sur le bouton **Propriétés**. 

      1.  Dans le volet **Propriétés**, copiez la valeur du champ **Lien** dans le champ **Emplacement des révisions** de la CodeDeploy console. 

   1. Si un message s'affiche et vous informe que le type de fichier n'a pas pu être détecté, choisissez **.zip**. 

   1. Laissez la zone **Deployment description** vide.

   1. **Développez les **remplacements des groupes** de **déploiement et choisissez CodeDeployDefault dans Configuration** du déploiement. OneAtATime**.

   1. Choisissez **Démarrer le déploiement**. Des informations sur votre déploiement nouvellement créé s'affichent dans la page **Deployments**.

   1. Vous pouvez vérifier l'état du déploiement, comme décrit dans la rubrique [Surveillez et résolvez les problèmes liés à votre déploiement](tutorials-wordpress-deploy-application.md#tutorials-wordpress-deploy-application-monitor).

      Après avoir CodeDeploy redéployé le site, revisitez-le dans votre navigateur Web pour vérifier que les couleurs ont été modifiées. (Vous devrez peut-être actualiser votre navigateur.) Si les couleurs ont été modifiées, vous avez réussi la procédure. Vous avez réussi à modifier et à redéployer votre site.

# Étape 6 : Nettoyez votre WordPress application et les ressources associées
<a name="tutorials-wordpress-clean-up"></a>

Vous avez maintenant correctement mis à jour le WordPress code et redéployé le site. Pour éviter des frais permanents pour les ressources que vous avez créées pour ce didacticiel, vous devez supprimer :
+ Toutes les CloudFormation piles (ou résiliez toute instance Amazon EC2, si vous les avez créées en dehors CloudFormation de).
+ Tous les compartiments Amazon S3.
+ l'application `WordPress_App` dans CodeDeploy ;
+ L'association AWS Systems Manager State Manager de l' CodeDeploy agent.

Vous pouvez utiliser les AWS CLI consoles Amazon S3, Amazon EC2 et les CodeDeploy consoles, ou AWS APIs pour effectuer le nettoyage. CloudFormation

**Topics**
+ [Pour nettoyer les ressources (interface CLI)](#tutorials-wordpress-clean-up-cli)
+ [Pour nettoyer les ressources (console)](#tutorials-wordpress-clean-up-console)
+ [Quelle est la prochaine étape ?](#tutorials-wordpress-clean-up-whats-next)

## Pour nettoyer les ressources (interface CLI)
<a name="tutorials-wordpress-clean-up-cli"></a>

1. Si vous avez utilisé notre CloudFormation modèle pour ce didacticiel, appelez la **delete-stack** commande par rapport à la pile nommée**CodeDeployDemoStack**. Cela mettra fin à toutes les instances Amazon EC2 associées et supprimera tous les rôles IAM associés créés par la pile :

   ```
   aws cloudformation delete-stack --stack-name CodeDeployDemoStack
   ```

1. Pour supprimer le compartiment Amazon S3, appelez la **rm** commande en utilisant le **--recursive** commutateur correspondant au compartiment nommé**amzn-s3-demo-bucket**. Elle supprime le compartiment et tous les objets qui y figurent :

   ```
   aws s3 rm s3://amzn-s3-demo-bucket --recursive --region region
   ```

1. Pour supprimer l'application `WordPress_App`, appelez la commande **delete-application**. Elle supprime également tous les enregistrements de groupe de déploiement et les enregistrements de déploiement associés pour l'application :

   ```
   aws deploy delete-application --application-name WordPress_App
   ```

1. Pour supprimer l'association Systems Manager State Manager, appelez la **delete-association** commande.

   ```
   aws ssm delete-association --assocation-id association-id
   ```

   Vous pouvez l'obtenir *association-id* en appelant la **describe-association** commande.

   ```
   aws ssm describe-association --name AWS-ConfigureAWSPackage --targets Key=tag:Name,Values=CodeDeployDemo
   ```

Si vous n'avez pas utilisé la CloudFormation pile pour ce didacticiel, appelez la **terminate-instances** commande pour mettre fin aux instances Amazon EC2 que vous avez créées manuellement. Fournissez l'ID de l'instance Amazon EC2 à résilier :

```
aws ec2 terminate-instances --instance-ids instanceId
```

## Pour nettoyer les ressources (console)
<a name="tutorials-wordpress-clean-up-console"></a>

Si vous avez utilisé notre CloudFormation modèle pour ce didacticiel, supprimez la CloudFormation pile associée.

1. Connectez-vous à la CloudFormation console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Dans la zone **Filtre**, tapez le nom de la CloudFormation pile que vous avez créée précédemment (par exemple,**CodeDeployDemoStack**).

1. Cochez la case en regard du nom de la pile. Dans le menu **Actions**, sélectionnez **Supprimer pile**.

   CloudFormation supprime la pile, met fin à toutes les instances Amazon EC2 associées et supprime tous les rôles IAM associés.

Pour mettre fin aux instances Amazon EC2 que vous avez créées en dehors d'une CloudFormation pile :

1. Connectez-vous à la console Amazon EC2 AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Dans la liste **INSTANCES**, sélectionnez **Instances**.

1. Dans le champ de recherche, tapez le nom de l'instance Amazon EC2 que vous souhaitez résilier (par exemple,**CodeDeployDemo**), puis appuyez sur Entrée.

1. Choisissez le nom de l'instance Amazon EC2.

1. Dans le menu **Actions**, pointez sur **État de l'instance**, puis choisissez **Terminer**. À l'invite, choisissez **Oui, résilier**. 

Répétez ces étapes pour chaque instance.

Pour supprimer le compartiment Amazon S3, procédez comme suit :

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans la liste des compartiments, recherchez et choisissez le nom du compartiment Amazon S3 que vous avez créé précédemment (par exemple,**amzn-s3-demo-bucket**).

1. Avant de pouvoir supprimer un compartiment, vous devez d'abord supprimer son contenu. Sélectionnez tous les fichiers figurant dans le compartiment, tels que **WordPressApp.zip**. Dans le menu **Actions**, sélectionnez **Delete**. Lorsque vous êtes invité à confirmer la suppression, choisissez **OK**. 

1. Une fois que le compartiment est vide, vous pouvez le supprimer. Dans la liste des compartiments, sélectionnez la ligne du compartiment (mais pas son nom). Choisissez **Supprimer le compartiment**, lorsque vous êtes invité à confirmer, puis **OK**. 

Pour supprimer l'`WordPress_App`application depuis CodeDeploy :

1. Connectez-vous à la CodeDeploy console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codedeploy.](https://console.aws.amazon.com/codedeploy)
**Note**  
Connectez-vous avec le même utilisateur que celui que vous avez configuré[Commencer avec CodeDeploy](getting-started-codedeploy.md).

1. Dans le volet de navigation, développez **Deploy**, puis choisissez **Applications**.

1. Dans la liste des applications, choisissez **WordPress\$1App**.

1. Sur la page **Détails de l'application**, choisissez **Supprimer l'application**.

1. À l'invite, entrez le nom de l'application pour confirmer que vous souhaitez la supprimer, puis choisissez **Supprimer**. 

Pour supprimer l'association Systems Manager State Manager, procédez comme suit :

1. Ouvrez la AWS Systems Manager console dans https://console.aws.amazon.com /systems-manager.

1. Dans le volet de navigation, sélectionnez **State Manager**.

1. Sélectionnez l'association que vous avez créée et choisissez **Delete (Supprimer)**.

## Quelle est la prochaine étape ?
<a name="tutorials-wordpress-clean-up-whats-next"></a>

Félicitations pour être arrivé jusqu'ici \$1 Vous avez réussi un déploiement CodeDeploy, puis mis à jour le code de votre site et l'avez redéployé. 

# Tutoriel : Déployez un message « Bonjour tout le monde \$1 » application avec CodeDeploy (Windows Server)
<a name="tutorials-windows"></a>

Dans ce didacticiel, vous allez déployer une page Web unique sur une instance Amazon EC2 Windows Server exécutant Internet Information Services (IIS) comme serveur Web. Cette page Web affiche un simple message « Bonjour tout le monde \$1 » message.

Ce n'est pas ce que vous recherchez ?
+ Pour vous entraîner plutôt à déployer sur une instance Amazon EC2 Amazon Linux ou Red Hat Enterprise Linux (RHEL), consultez. [Tutoriel : Déploiement WordPress sur une instance Amazon EC2 (Amazon Linux ou Red Hat Enterprise Linux et Linux, macOS ou Unix)](tutorials-wordpress.md)
+ Pour vous exercer plutôt à déployer sur une instance sur site, consultez la page [Tutoriel : Déployer une application sur une instance locale avec CodeDeploy (Windows Server, Ubuntu Server ou Red Hat Enterprise Linux)](tutorials-on-premises-instance.md).

Les étapes de ce didacticiel sont présentés du point de vue de Windows. Bien que vous puissiez effectuer la plupart de ces étapes sur un ordinateur local exécutant Linux, macOS ou Unix, vous devez adapter celles qui concernent les chemins de répertoire basés sur Windows, tels que. `c:\temp` En outre, si vous souhaitez vous connecter à l'instance Amazon EC2, vous avez besoin d'une application cliente capable de se connecter via le protocole RDP (Remote Desktop Protocol) à l'instance Amazon EC2 exécutant Windows Server. (Windows inclut une application cliente de connexion RDP par défaut.)

Avant de commencer ce didacticiel, vous devez remplir les conditions requises[Commencer avec CodeDeploy](getting-started-codedeploy.md), notamment configurer votre utilisateur, installer ou mettre à niveau le AWS CLI, et créer un profil d'instance IAM et un rôle de service.

**Topics**
+ [Étape 1 : Lancer une instance Amazon EC2 de Windows Server](tutorials-windows-launch-instance.md)
+ [Étape 2 : configurer votre contenu source à déployer sur l'instance Amazon EC2 de Windows Server](tutorials-windows-configure-content.md)
+ [Étape 3 : Téléchargez votre message « Bonjour tout le monde \$1 » application pour Amazon S3](tutorials-windows-upload-application.md)
+ [Étape 4 : Déployez votre application Hello World](tutorials-windows-deploy-application.md)
+ [Étape 5 : Mettez à jour et redéployez votre message « Hello, world \$1 » vigie](tutorials-windows-update-and-redeploy-application.md)
+ [Étape 6 : Nettoyez votre message « Bonjour tout le monde \$1 » application et ressources connexes](tutorials-windows-clean-up.md)

# Étape 1 : Lancer une instance Amazon EC2 de Windows Server
<a name="tutorials-windows-launch-instance"></a>

Pour déployer l'application Hello World avec CodeDeploy, vous avez besoin d'une instance Amazon EC2 exécutant Windows Server.

Suivez les instructions de la section [Créez une instance Amazon EC2 pour CodeDeploy](instances-ec2-create.md). Lorsque vous êtes prêt à attribuer une balise d'instance Amazon EC2 à l'instance, assurez-vous de spécifier la clé de balise **Name** et la valeur de balise de. **CodeDeployDemo** (Si vous spécifiez une clé de balise ou une valeur de balise différente, les instructions fournies dans [Étape 4 : Déployez votre application Hello World](tutorials-windows-deploy-application.md) peuvent générer des résultats inattendus.)

Après avoir lancé l'instance Amazon EC2, revenez à cette page et passez à la section suivante. Ne passez pas à l'étape [Créez une application avec CodeDeploy](applications-create.md).

## Connectez-vous à votre instance Amazon EC2
<a name="tutorials-windows-launch-instance-connect"></a>

Après le lancement de votre instance Amazon EC2, suivez ces instructions pour vous entraîner à vous y connecter. 

**Note**  
Dans ces instructions, nous supposons que vous exécutez Windows et l'application cliente de connexion au Bureau Windows. Pour plus d'informations, consultez [Connexion à votre instance Windows à l'aide du protocole RDP.](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/connecting_to_windows_instance.html) Vous devrez peut-être adapter ces instructions pour d'autres systèmes d'exploitation ou d'autres applications clientes de connexion RDP.

1. Connectez-vous à la console Amazon EC2 AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Dans le panneau de navigation, sous **Instances**, choisissez **Instances**. 

1. Accédez à votre instance Windows Server et choisissez-la dans la liste.

1. Choisissez **Se connecter**.

1. Choisissez **Get Password (Obtenir un mot de passe)**, puis choisissez **Choose File (Sélectionner un fichier)**.

1. **Accédez au fichier de paire de clés d'instance Amazon EC2 associé à l'instance Amazon EC2 de Windows Server et choisissez-le, puis choisissez Ouvrir.**

1. Choisissez **Déchiffrer le mot de passe**. Notez le mot de passe qui s'affiche. Vous en aurez besoin à l'étape 10.

1. Choisissez **Télécharger le fichier Bureau à distance**, puis ouvrez le fichier.

1. Si vous êtes invité à vous connecter alors que l'éditeur de la connexion à distance ne peut pas être identifié, continuez.

1. Saisissez le mot de passe que vous avez noté à l'étape 7, puis continuez. (Si votre application cliente de connexion RDP vous invite à fournir un nom utilisateur, tapez **Administrator**.)

1. Si vous êtes invité à vous connecter alors que l'identité de l'ordinateur distant ne peut pas être vérifiée, continuez. 

1. Une fois connecté, le bureau de l'instance Amazon EC2 exécutant Windows Server s'affiche.

1. Vous pouvez désormais vous déconnecter de l'instance Amazon EC2.
**Avertissement**  
N'arrêtez pas ni ne mettez hors service l'instance. Sinon, CodeDeploy impossible de le déployer.

## Ajoutez une règle entrante qui autorise le trafic HTTP vers votre instance Amazon EC2 de Windows Server
<a name="tutorials-windows-launch-instance-add-inbound-rule"></a>

L'étape suivante confirme que votre instance Amazon EC2 possède un port HTTP ouvert afin que vous puissiez voir la page Web déployée sur votre instance Amazon EC2 Windows Server dans un navigateur. 

1. Connectez-vous à la console Amazon EC2 AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Choisissez **Instances**, puis choisissez votre instance. 

1. Dans l'onglet **Description**, sous **Groupes de sécurité**, choisissez **Afficher les règles entrantes**. 

   Vous devriez voir une liste de règles dans votre groupe de sécurité, comme suit :

   ```
   Security Groups associated with i-1234567890abcdef0
    Ports     Protocol     Source     launch-wizard-N
    22        tcp          0.0.0.0/0          ✔
   ```

1.  Sous **Groupes de sécurité**, choisissez le groupe de sécurité pour votre instance Amazon EC2. Il pourrait être nommé **launch-wizard-*N***. Le ***N*** dans le nom est un numéro attribué à votre groupe de sécurité lorsque l'instance a été créée. 

    Choisissez l'onglet **Entrant**. Si le groupe de sécurité de votre instance est correctement configuré, vous devriez voir apparaître une règle avec les valeurs suivantes : 
   + **Type** : HTTP
   + **Protocole** : TCP
   + **Plage de ports** : 80
   + **Source** : 0.0.0,0/0

1.  Si aucune règle ne contient ces valeurs, utilisez les procédures décrites dans [Ajouter des règles à un groupe de sécurité](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#adding-security-group-rule) pour les ajouter à une nouvelle règle de sécurité. 

# Étape 2 : configurer votre contenu source à déployer sur l'instance Amazon EC2 de Windows Server
<a name="tutorials-windows-configure-content"></a>

Il est maintenant temps de configurer le contenu source de votre application afin de pouvoir le déployer sur l'instance Amazon EC2. Dans le cadre de ce didacticiel, vous allez déployer une seule page Web sur l'instance Amazon EC2 exécutant Windows Server, qui exécutera Internet Information Services (IIS) en tant que serveur Web. Cette page Web affichera un simple message « Bonjour tout le monde \$1 » message.

**Topics**
+ [Création de la page Web](#tutorials-windows-configure-content-download-code)
+ [Créez un script pour exécuter votre application](#tutorials-windows-configure-content-create-scripts)
+ [Ajouter un fichier de spécification d'application](#tutorials-windows-configure-content-add-appspec-file)

## Création de la page Web
<a name="tutorials-windows-configure-content-download-code"></a>

1. Créez un sous-répertoire (sous-dossier) nommé `HelloWorldApp` dans votre dossier `c:\temp`, puis basculez vers ce dossier.

   ```
   mkdir c:\temp\HelloWorldApp
   cd c:\temp\HelloWorldApp
   ```
**Note**  
Vous n'êtes pas tenu d'utiliser l'emplacement `c:\temp` ni le nom de sous-dossier `HelloWorldApp`. Si vous utilisez un autre emplacement ou nom de sous-dossier, veillez à l'utiliser tout au long de ce didacticiel.

1. Utilisez un éditeur de texte pour créer un fichier dans le dossier. Nommez le fichier `index.html`.

   ```
   notepad index.html
   ```

1. Ajoutez le code HTML suivant au fichier, puis enregistrez le fichier.

   ```
   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
   <html>
   <head>
     <title>Hello, World!</title>
     <style>
       body {
         color: #ffffff;
         background-color: #0188cc;
         font-family: Arial, sans-serif;  
         font-size:14px;
       }
     </style>
   </head>
   <body>
     <div align="center"><h1>Hello, World!</h1></div>
     <div align="center"><h2>You have successfully deployed an application using CodeDeploy</h2></div>
     <div align="center">
       <p>What to do next? Take a look through the <a href="https://aws.amazon.com/codedeploy">CodeDeploy Documentation</a>.</p>
     </div>
   </body>
   </html>
   ```

## Créez un script pour exécuter votre application
<a name="tutorials-windows-configure-content-create-scripts"></a>

Vous allez ensuite créer un script qui CodeDeploy sera utilisé pour configurer le serveur Web sur l'instance Amazon EC2 cible.

1. Dans le sous-dossier où le fichier `index.html` est enregistré, utilisez un éditeur de texte pour créer un autre fichier. Nommez le fichier `before-install.bat`.

   ```
   notepad before-install.bat
   ```

1. Ajoutez le code de script de commandes par lot suivant dans le fichier, puis enregistrez le fichier.

   ```
   REM Install Internet Information Server (IIS).
   c:\Windows\Sysnative\WindowsPowerShell\v1.0\powershell.exe -Command Import-Module -Name ServerManager
   c:\Windows\Sysnative\WindowsPowerShell\v1.0\powershell.exe -Command Install-WindowsFeature Web-Server
   ```

## Ajouter un fichier de spécification d'application
<a name="tutorials-windows-configure-content-add-appspec-file"></a>

Vous allez ensuite ajouter un fichier de spécification d'application (AppSpec fichier) en plus de la page Web et du fichier de script batch. Le AppSpec fichier est un fichier au format [YAML](http://www.yaml.org) utilisé pour : CodeDeploy 
+ mapper les fichiers sources figurant dans votre révision d'application vers leurs destinations sur l'instance ;
+ spécifier des scripts à exécuter sur l'instance au cours du déploiement.

Le AppSpec fichier doit être nommé`appspec.yml`. Il doit être placé dans le dossier racine du code source de l'application.

1. Dans le sous-dossier où les fichiers `index.html` et `before-install.bat` sont enregistrés, utilisez un éditeur de texte pour créer un autre fichier. Nommez le fichier `appspec.yml`.

   ```
   notepad appspec.yml
   ```

1. Ajoutez le code YAML suivant au fichier, puis enregistrez le fichier.

   ```
   version: 0.0
   os: windows
   files:
     - source: \index.html
       destination: c:\inetpub\wwwroot
   hooks:
     BeforeInstall:
       - location: \before-install.bat
         timeout: 900
   ```

CodeDeploy utilisera ce AppSpec fichier pour copier le `index.html` fichier du dossier racine du code source de l'application vers le `c:\inetpub\wwwroot` dossier de l'instance Amazon EC2 cible. Pendant le déploiement, CodeDeploy exécutera le script `before-install.bat` batch sur l'instance Amazon EC2 cible pendant l'événement du cycle de vie du **BeforeInstall** déploiement. Si l'exécution de ce script prend plus de 900 secondes (15 minutes), il CodeDeploy arrêtera le déploiement et marquera le déploiement sur l'instance Amazon EC2 comme ayant échoué.

Pour plus d'informations sur ces paramètres, consultez la rubrique [CodeDeploy AppSpec référence de fichier](reference-appspec-file.md).

**Important**  
Les emplacements et les nombres d'espaces entre les différents éléments de ce fichier sont importants. Si l'espacement est incorrect, cela CodeDeploy provoquera une erreur qui peut être difficile à déboguer. Pour de plus amples informations, veuillez consulter [AppSpec Espacement des fichiers](reference-appspec-file.md#reference-appspec-file-spacing).

# Étape 3 : Téléchargez votre message « Bonjour tout le monde \$1 » application pour Amazon S3
<a name="tutorials-windows-upload-application"></a>

Vous allez maintenant préparer et télécharger votre contenu source vers un emplacement à partir duquel CodeDeploy vous pourrez le déployer. Les instructions suivantes vous montrent comment configurer un compartiment Amazon S3, préparer les fichiers de révision de l'application pour le compartiment, regrouper les fichiers de révision, puis transférer la révision dans le compartiment.

**Note**  
Bien que cela ne soit pas abordé dans ce didacticiel, vous pouvez l'utiliser CodeDeploy pour déployer des applications depuis des GitHub référentiels vers des instances. Pour de plus amples informations, veuillez consulter [Intégration CodeDeploy avec GitHub](integrations-partners-github.md).

**Topics**
+ [Provisionner un compartiment Amazon S3](#tutorials-windows-upload-application-create-s3-bucket)
+ [Préparer les fichiers de l'application pour le bucket](#tutorials-windows-upload-application-prepare-application-files)
+ [Regroupez les fichiers de l'application dans un seul fichier d'archive et transférez le fichier d'archive](#tutorials-windows-upload-application-bundle-and-push-archive)

## Provisionner un compartiment Amazon S3
<a name="tutorials-windows-upload-application-create-s3-bucket"></a>

Créez un conteneur ou un *compartiment* de stockage dans Amazon S3 ou utilisez un compartiment existant. Assurez-vous que vous pouvez télécharger la révision dans le compartiment et que les instances Amazon EC2 utilisées dans les déploiements peuvent télécharger la révision depuis le compartiment.

Vous pouvez utiliser AWS CLI la console Amazon S3 ou Amazon S3 APIs pour créer un compartiment Amazon S3. Une fois que vous avez créé le compartiment, veillez à accorder des autorisations d'accès au compartiment et à votre utilisateur CodeDeploy.

**Note**  
Les noms de compartiment doivent être uniques sur Amazon S3 pour tous les AWS comptes. Si vous n'êtes pas en mesure d'utiliser **amzn-s3-demo-bucket**, essayez un autre nom de compartiment, tel que **amzn-s3-demo-bucket**, suivi d'un tiret et de vos initiales ou d'un autre identificateur unique. Veillez ensuite à substituer votre nom de compartiment à **amzn-s3-demo-bucket** chaque fois que vous le verrez tout au long de ce didacticiel.  
Le compartiment Amazon S3 doit être créé dans la même AWS région que celle dans laquelle vos instances Amazon EC2 cibles sont lancées. Par exemple, si vous créez le bucket dans la région USA Est (Virginie du Nord), vos instances Amazon EC2 cibles doivent être lancées dans la région USA Est (Virginie du Nord).

**Topics**
+ [Pour créer un compartiment Amazon S3 (CLI)](#tutorials-windows-upload-application-create-s3-bucket-cli)
+ [Pour créer un compartiment Amazon S3 (console)](#tutorials-windows-upload-application-create-s3-bucket-console)
+ [Donnez des autorisations au compartiment Amazon S3 et à votre AWS compte](#tutorials-windows-upload-application-create-s3-bucket-grant-permission)

### Pour créer un compartiment Amazon S3 (CLI)
<a name="tutorials-windows-upload-application-create-s3-bucket-cli"></a>

Appelez la **mb** commande pour créer un compartiment Amazon S3 nommé **amzn-s3-demo-bucket** :

```
aws s3 mb s3://amzn-s3-demo-bucket --region region
```

### Pour créer un compartiment Amazon S3 (console)
<a name="tutorials-windows-upload-application-create-s3-bucket-console"></a>

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans la console Amazon S3, choisissez **Create bucket**.

1. Dans la zone **Nom du compartiment**, saisissez un nom pour le compartiment.

1. Dans la liste**Région**, choisissez la région cible, puis **Créer**.

### Donnez des autorisations au compartiment Amazon S3 et à votre AWS compte
<a name="tutorials-windows-upload-application-create-s3-bucket-grant-permission"></a>

Vous devez disposer des autorisations nécessaires pour effectuer le téléchargement dans le compartiment Amazon S3. Vous pouvez spécifier ces autorisations par le biais d'une politique de compartiment Amazon S3. Par exemple, dans la politique de compartiment Amazon S3 suivante, l'utilisation du caractère générique (\$1) permet `111122223333` au AWS compte de télécharger des fichiers dans n'importe quel répertoire du compartiment Amazon S3 nommé `amzn-s3-demo-bucket` :

```
{
    "Statement": [
        {
            "Action": [
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Principal": {
                "AWS": [
                    "111122223333"
                ]
            }
        }
    ]
}
```

Pour consulter l'identifiant de votre AWS compte, consultez la section [Trouver votre identifiant de AWS compte](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html#FindingYourAWSId).

C'est le bon moment pour vérifier que le compartiment Amazon S3 autorisera les demandes de téléchargement provenant de chaque instance Amazon EC2 participante. Vous pouvez le spécifier par le biais d'une politique de compartiment Amazon S3. Par exemple, dans la politique de compartiment Amazon S3 suivante, l'utilisation du caractère générique (\$1) permet à toute instance Amazon EC2 associée à un profil d'instance IAM contenant l'`arn:aws:iam::444455556666:role/CodeDeployDemo`ARN de télécharger des fichiers depuis n'importe quel répertoire du compartiment Amazon S3 nommé : `amzn-s3-demo-bucket`

```
{
    "Statement": [
        {
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::444455556666:role/CodeDeployDemo"
                ]
            }
        }
    ]
}
```

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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html).

L'utilisateur CodeDeploy administratif que vous avez créé [Étape 1 : Configuration](getting-started-setting-up.md) doit également être autorisé à télécharger la révision dans le compartiment Amazon S3. Pour le spécifier, vous pouvez notamment utiliser une stratégie IAM, que vous ajoutez à l'ensemble d'autorisations de l'utilisateur, ou un rôle IAM (que vous autorisez l'utilisateur à assumer). La politique IAM suivante permet à l'utilisateur de télécharger des révisions n'importe où dans le compartiment Amazon S3 nommé `amzn-s3-demo-bucket` :

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	   
  "Statement":[
    {
      "Effect":"Allow",
      "Action":["s3:PutObject"],
      "Resource":"arn:aws:s3:::amzn-s3-demo-bucket/*"
    }
  ]
}
```

------

Pour plus d'informations sur la création d'une stratégie IAM, consultez la section [Création de politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dans le Guide de l'utilisateur *IAM*. Pour plus d'informations sur l'ajout d'une politique à un ensemble d'autorisations, voir [Création d'un ensemble d'autorisations](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtocreatepermissionset.html) dans le *Guide de AWS IAM Identity Center l'utilisateur*.

## Préparer les fichiers de l'application pour le bucket
<a name="tutorials-windows-upload-application-prepare-application-files"></a>

Assurez-vous que la page Web, le AppSpec fichier et le script sont organisés sur votre machine de développement comme suit :

```
c:\
  |-- temp\
        |--HelloWorldApp\
             |-- appspec.yml
             |-- before-install.bat
             |-- index.html
```

## Regroupez les fichiers de l'application dans un seul fichier d'archive et transférez le fichier d'archive
<a name="tutorials-windows-upload-application-bundle-and-push-archive"></a>

Groupez les fichiers en un fichier d'archive (appelé *révision* d'application).

**Note**  
Il est possible qu'il vous soit facturé le stockage des objets dans un compartiment et le transfert des révisions d'application vers et hors d'un compartiment. Pour plus d’informations, consultez [Tarification Amazon S3](https://aws.amazon.com/s3/pricing/). 

1. Sur la machine de développement, basculez vers le dossier dans lequel les fichiers sont stockés : 

   ```
   cd c:\temp\HelloWorldApp
   ```
**Note**  
Si vous ne basculez pas dans ce dossier, la création d'un bundle de fichiers commencera dans votre dossier actif. Par exemple, si votre dossier actif est `c:\temp` au lieu de `c:\temp\HelloWorldApp`, la création du bundle commencera avec les fichiers et les sous-dossiers figurant dans le dossier `c:\temp`, lequel peut inclure plus que le simple sous-dossier `HelloWorldApp`.

1. Appelez la **create-application** commande pour enregistrer une nouvelle application nommée **HelloWorld\$1App** avec CodeDeploy :

   ```
   aws deploy create-application --application-name HelloWorld_App
   ```

1. Appelez la commande CodeDeploy [push](https://docs.aws.amazon.com/cli/latest/reference/deploy/push.html) pour regrouper les fichiers, télécharger les révisions CodeDeploy sur Amazon S3 et enregistrer les informations relatives à la révision téléchargée, le tout en une seule action. 

   ```
   aws deploy push --application-name HelloWorld_App --s3-location s3://amzn-s3-demo-bucket/HelloWorld_App.zip --ignore-hidden-files
   ```

   Cette commande regroupe les fichiers du répertoire actuel (à l'exception des fichiers cachés) dans un seul fichier d'archive nommé`HelloWorld_App.zip`, télécharge la révision dans le **amzn-s3-demo-bucket** compartiment et enregistre les informations relatives à CodeDeploy la révision téléchargée.

# Étape 4 : Déployez votre application Hello World
<a name="tutorials-windows-deploy-application"></a>

Vous devez maintenant déployer l'exemple de révision de l'application Hello World que vous avez chargé sur Amazon S3. Vous utilisez la console AWS CLI ou la CodeDeploy console pour déployer la révision et suivre la progression du déploiement. Une fois que la révision d'application est déployée avec succès, vous vérifiez les résultats.

**Topics**
+ [Déployez la révision de votre application avec CodeDeploy](#tutorials-windows-deploy-application-create-deployment)
+ [Surveillez et résolvez les problèmes liés à votre déploiement](#tutorials-windows-deploy-application-monitor)
+ [Vérifiez votre déploiement](#tutorials-windows-deploy-application-verify)

## Déployez la révision de votre application avec CodeDeploy
<a name="tutorials-windows-deploy-application-create-deployment"></a>

 Vous pouvez déployer votre application via l'interface de ligne de commande ou la console. 

**Topics**
+ [Pour déployer votre révision d'application (interface CLI)](#tutorials-windows-deploy-application-create-deployment-cli)
+ [Pour déployer votre révision d'application (console)](#tutorials-windows-deploy-application-create-deployment-console)

### Pour déployer votre révision d'application (interface CLI)
<a name="tutorials-windows-deploy-application-create-deployment-cli"></a>

1. Tout d'abord, le déploiement a besoin d'un groupe de déploiement. Toutefois, avant de créer le groupe de déploiement, vous avez besoin d'un nom ARN de rôle de service. Un rôle de service est un rôle IAM qui autorise un service à agir en votre nom. Dans ce cas, le rôle de service donne CodeDeploy l'autorisation d'accéder à vos instances Amazon EC2 pour étendre (lire) leurs balises d'instance Amazon EC2.

   Vous devriez avoir déjà suivi les instructions de la rubrique [Création d'un rôle de service (CLI)](getting-started-create-service-role.md#getting-started-create-service-role-cli) pour créer un rôle de service. Pour obtenir le nom ARN du rôle de service, consultez la page [Obtenez l'ARN du rôle de service (CLI)](getting-started-create-service-role.md#getting-started-get-service-role-cli).

1. Maintenant que vous avez l'ARN, appelez la **create-deployment-group** commande pour créer un groupe de déploiement nommé**HelloWorld\$1DepGroup**, associé à l'application nommée**HelloWorld\$1App**, à l'aide de la balise d'instance Amazon EC2 **CodeDeployDemo** et du nom de la configuration de déploiement**CodeDeployDefault.OneAtATime**, avec l'ARN du rôle de service :

   ```
   aws deploy create-deployment-group --application-name HelloWorld_App --deployment-group-name HelloWorld_DepGroup --deployment-config-name CodeDeployDefault.OneAtATime --ec2-tag-filters Key=Name,Value=CodeDeployDemo,Type=KEY_AND_VALUE --service-role-arn serviceRoleARN
   ```
**Note**  
La [create-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html)commande permet de créer des déclencheurs qui entraînent l'envoi de notifications Amazon SNS aux abonnés du topic concernant des événements spécifiques liés aux déploiements et aux instances. La commande prend également en charge les options permettant d'annuler automatiquement les déploiements et de configurer des alarmes pour arrêter les déploiements lorsque les seuils de surveillance des CloudWatch alarmes d'Amazon sont atteints. Les commandes associées à ces actions ne sont pas incluses dans ce didacticiel.

1. Avant de créer un déploiement, l' CodeDeploy agent doit être installé sur les instances de votre groupe de déploiement. Vous pouvez installer l'agent à partir de la ligne de commande AWS Systems Manager avec la commande suivante :

   ```
   aws ssm create-association --name AWS-ConfigureAWSPackage --targets Key=tag:Name,Values=CodeDeployDemo --parameters action=Install,name=AWSCodeDeployAgent --schedule-expression "cron(0 2 ? * SUN *)" 
   ```

   Cette commande crée une association dans Systems Manager State Manager qui installera l' CodeDeploy agent puis tentera de le mettre à jour à 2h00 tous les dimanches matins. Pour plus d'informations sur l' CodeDeploy agent, consultez la section [Utilisation de l' CodeDeploy agent](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent.html). Pour plus d'informations sur Systems Manager, consultez [What is AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html).

1. Maintenant, appelez la commande **create-deployment** pour créer un déploiement associé à l'application nommée **HelloWorld\$1App**, à la configuration de déploiement nommée **CodeDeployDefault.OneAtATime** et au groupe de déploiement nommé **HelloWorld\$1DepGroup**, en utilisant la révision d'application nommée **HelloWorld\$1App.zip** dans le compartiment nommé **amzn-s3-demo-bucket** :

   ```
   aws deploy create-deployment --application-name HelloWorld_App --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name HelloWorld_DepGroup --s3-location bucket=amzn-s3-demo-bucket,bundleType=zip,key=HelloWorld_App.zip
   ```

### Pour déployer votre révision d'application (console)
<a name="tutorials-windows-deploy-application-create-deployment-console"></a>

1. Avant d'utiliser la CodeDeploy console pour déployer la révision de votre application, vous avez besoin d'un ARN de rôle de service. Un rôle de service est un rôle IAM qui autorise un service à agir en votre nom. Dans ce cas, le rôle de service donne CodeDeploy l'autorisation d'accéder à vos instances Amazon EC2 pour étendre (lire) leurs balises d'instance Amazon EC2.

   Vous devriez avoir déjà suivi les instructions de la rubrique [Création d'un rôle de service (console)](getting-started-create-service-role.md#getting-started-create-service-role-console) pour créer un rôle de service. Pour obtenir le nom ARN du rôle de service, consultez la page [Obtenir l'ARN du rôle de service (console)](getting-started-create-service-role.md#getting-started-get-service-role-console).

1. Maintenant que vous disposez de l'ARN, vous pouvez utiliser la CodeDeploy console pour déployer la révision de votre application.

   Connectez-vous à la CodeDeploy console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codedeploy.](https://console.aws.amazon.com/codedeploy)
**Note**  
Connectez-vous avec le même utilisateur que celui que vous avez configuré[Commencer avec CodeDeploy](getting-started-codedeploy.md).

1. Dans le volet de navigation, développez **Deploy**, puis choisissez **Applications**.

1. Choisissez **HelloWorld\$1App.**

1. Dans l'onglet **Groupes de déploiement**, choisissez **Créer un groupe de déploiement**.

1. Dans **Nom du groupe de déploiement**, saisissez **HelloWorld\$1DepGroup**.

1. Dans **Rôle de service**, choisissez le nom du rôle de service.

1. Dans **Type de déploiement**, choisissez **Sur place**.

1. Dans **Configuration de l'environnement**, sélectionnez les **instances Amazon EC2.**

1. Dans la **configuration de l'agent avec AWS Systems Manager**, conservez les valeurs par défaut.

1. Dans **Clé**, entrez **Name**.

1. Dans **Value (Valeur)**, entrez **CodeDeployDemo**.

1. Dans **Configuration du déploiement**, choisissez **CodeDeployDefault. OneAtATime**.

1. Dans **Équilibreur de charge**, désactivez **Activer l'équilibrage de charge**.

1. Choisissez **Créer un groupe de déploiement**.

1. Choisissez **Créer un déploiement**.

1. Dans **le groupe de déploiement**, choisissez **HelloWorld\$1 DepGroup**

1. Dans **Type de révision**, choisissez **Mon application est stockée dans Amazon S3**, puis dans Emplacement de **la révision, entrez l'emplacement** de l'exemple de révision de l'application Hello World que vous avez précédemment chargé sur Amazon S3. Pour obtenir cet emplacement :

   1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

   1. Dans la liste des buckets, choisissez **amzn-s3-demo-bucket (ou le nom du bucket dans lequel** vous avez chargé la révision de votre application). 

   1. Dans la liste des objets, choisissez **HelloWorld\$1App.zip**.

   1. Dans l’onglet **Overview (Présentation)**, choisissez **Copy path (Copier le chemin)**.

   1. Retournez à la CodeDeploy console, puis dans **Emplacement des révisions**, collez la valeur du champ **Lien**.

1. Pour **Revision file type (Type de fichier de révision)**, choisissez **.zip**. 

1. (Facultatif) Entrez un commentaire dans **Deployment description) Description du déploiement**.

1. Choisissez **Créer un déploiement**. Des informations sur votre déploiement nouvellement créé s'affichent dans la page **Deployments**.

## Surveillez et résolvez les problèmes liés à votre déploiement
<a name="tutorials-windows-deploy-application-monitor"></a>

Utilisez la console AWS CLI ou la console pour surveiller et résoudre les problèmes liés à votre déploiement.

**Topics**
+ [Pour surveiller et dépanner votre déploiement (interface CLI)](#tutorials-windows-deploy-application-monitor-cli)
+ [Pour surveiller et dépanner votre déploiement (console)](#tutorials-windows-deploy-application-monitor-console)

### Pour surveiller et dépanner votre déploiement (interface CLI)
<a name="tutorials-windows-deploy-application-monitor-cli"></a>

1. Obtenez l'ID du déploiement en appelant la commande **list-deployments** sur l'application nommée **HelloWorld\$1App** et le groupe de déploiement nommé **HelloWorld\$1DepGroup** :

   ```
   aws deploy list-deployments --application-name HelloWorld_App --deployment-group-name HelloWorld_DepGroup --query "deployments" --output text
   ```

1. Appelez la commande **get-deployment** avec l'ID du déploiement :

   ```
   aws deploy get-deployment --deployment-id deploymentID --query "deploymentInfo.status" --output text
   ```

1. La commande renvoie l'état général du déploiement. En cas de réussite, la valeur est `Succeeded`.

   Si l'état général est `Failed`, vous pouvez appeler des commandes telles que [list-deployment-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-instances.html) et [get-deployment-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-instance.html) pour résoudre les problèmes. Pour plus d'options de dépannage, consultez la page [Analyse des fichiers journaux pour enquêter sur des échecs de déploiement sur les instances](troubleshooting-ec2-instances.md#troubleshooting-deploy-failures).

### Pour surveiller et dépanner votre déploiement (console)
<a name="tutorials-windows-deploy-application-monitor-console"></a>

Sur la page **Déploiements** de la CodeDeploy console, vous pouvez surveiller l'état de votre déploiement dans la colonne **État**.

Pour obtenir plus d'informations sur votre déploiement, notamment si la valeur de la colonne **État**a une valeur différente de **Succeeded** :

1. Dans la table **Déploiements**, choisissez votre ID de déploiement. Une fois qu'un déploiement a échoué, un message décrivant la raison de l'échec s'affiche sur la page des détails du déploiement.

1. . Des informations supplémentaires sur les instances du déploiement sont affichées. Après l'échec d'un déploiement, vous pourrez peut-être déterminer sur quelles instances Amazon EC2 et à quelle étape le déploiement a échoué.

1. Si vous souhaitez effectuer davantage d'opérations de dépannage, vous pouvez utiliser une technique telle que celle exposée dans la rubrique [Afficher les détails de l'instance avec CodeDeploy](instances-view-details.md). Vous pouvez également analyser les fichiers journaux de déploiement sur une instance Amazon EC2. Pour de plus amples informations, veuillez consulter [Analyse des fichiers journaux pour enquêter sur des échecs de déploiement sur les instances](troubleshooting-ec2-instances.md#troubleshooting-deploy-failures).

## Vérifiez votre déploiement
<a name="tutorials-windows-deploy-application-verify"></a>

Une fois que votre déploiement a réussi, vérifiez que votre installation fonctionne. Utilisez l'adresse DNS publique de l'instance Amazon EC2 pour afficher la page Web dans un navigateur Web. (Pour obtenir la valeur du DNS public, dans la console Amazon EC2, choisissez l'instance Amazon EC2, puis dans l'onglet Description, recherchez **la** valeur **dans** Public DNS.)

Par exemple, si l'adresse DNS publique de votre instance Amazon EC2 est**ec2-01-234-567-890.compute-1.amazonaws.com**, vous devez utiliser l'URL suivante :

```
http://ec2-01-234-567-890.compute-1.amazonaws.com
```

En cas de succès, vous devez voir une page Web « Hello, World\$1 ».

# Étape 5 : Mettez à jour et redéployez votre message « Hello, world \$1 » vigie
<a name="tutorials-windows-update-and-redeploy-application"></a>

Maintenant que vous avez déployé avec succès la révision de votre application, sur la machine de développement, mettez à jour le code de la page Web, puis utilisez-le CodeDeploy pour redéployer le site. Après le redéploiement, vous devriez être en mesure de voir les modifications sur l'instance Amazon EC2.

**Topics**
+ [Modifier la page Web](#tutorials-windows-update-and-redeploy-application-modify-code)
+ [Redéployer le site](#tutorials-windows-update-and-redeploy-application-deploy-updates)

## Modifier la page Web
<a name="tutorials-windows-update-and-redeploy-application-modify-code"></a>

1. Accédez à votre sous-dossier `c:\temp\HelloWorldApp` et utilisez un éditeur de texte pour modifier le fichier `index.html` :

   ```
   cd c:\temp\HelloWorldApp
   notepad index.html
   ```

1. Révisez le contenu du fichier `index.html` pour modifier la couleur d'arrière-plan et une partie du texte sur la page web, puis enregistrez le fichier :

   ```
   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
   <html>
   <head>
     <title>Hello Again, World!</title>
     <style>
       body {
         color: #ffffff;
         background-color: #66cc00;
         font-family: Arial, sans-serif;  
         font-size:14px;
       }
     </style>
   </head>
   <body>
     <div align="center"><h1>Hello Again, World!</h1></div>
     <div align="center"><h2>You have successfully deployed a revision of an application using CodeDeploy</h2></div>
     <div align="center">
       <p>What to do next? Take a look through the <a href="https://aws.amazon.com/codedeploy">CodeDeploy Documentation</a>.</p>
     </div>
   </body>
   </html>
   ```

## Redéployer le site
<a name="tutorials-windows-update-and-redeploy-application-deploy-updates"></a>

Maintenant que vous avez modifié le code, utilisez Amazon S3 CodeDeploy pour redéployer la page Web.

Regroupez et chargez les modifications sur Amazon S3 comme décrit dans[Regroupez les fichiers de l'application dans un seul fichier d'archive et transférez le fichier d'archive](tutorials-windows-upload-application.md#tutorials-windows-upload-application-bundle-and-push-archive). (Lorsque vous suivez ces instructions, vous n'avez pas besoin de créer une nouvelle application.) Donnez à la révision la même clé qu'auparavant (**HelloWorld\$1App.zip**). Téléchargez-le dans le même compartiment Amazon S3 que vous avez créé précédemment (par exemple,**amzn-s3-demo-bucket**).

Utilisez la console AWS CLI ou la CodeDeploy console pour redéployer le site.

**Topics**
+ [Pour redéployer le site (interface CLI)](#tutorials-windows-update-and-redeploy-application-deploy-updates-cli)
+ [Pour redéployer le site (console)](#tutorials-windows-update-and-redeploy-application-deploy-updates-console)

### Pour redéployer le site (interface CLI)
<a name="tutorials-windows-update-and-redeploy-application-deploy-updates-cli"></a>

Appelez la commande **create-deployment** pour créer un déploiement basé sur la révision téléchargée, de nouveau en utilisant l'application nommée **HelloWorld\$1App**, la configuration de déploiement nommée **CodeDeployDefault.OneAtATime** et le groupe de déploiement nommé **HelloWorld\$1DepGroup** et la révision nommée **HelloWorld\$1App.zip** dans le compartiment nommé **amzn-s3-demo-bucket** :

```
 aws deploy create-deployment --application-name HelloWorld_App --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name HelloWorld_DepGroup --s3-location bucket=amzn-s3-demo-bucket,bundleType=zip,key=HelloWorld_App.zip
```

Vous pouvez vérifier l'état du nouveau déploiement, comme décrit dans la rubrique [Surveillez et résolvez les problèmes liés à votre déploiement](tutorials-windows-deploy-application.md#tutorials-windows-deploy-application-monitor).

Une fois le site CodeDeploy redéployé, revisitez-le dans votre navigateur Web pour vérifier que la couleur d'arrière-plan et le texte de la page Web ont été modifiés. (Vous devrez peut-être actualiser votre navigateur.) Si la couleur d'arrière-plan et le texte ont été modifiés, vous avez réussi la procédure. Vous avez modifié et redéployé votre site.

### Pour redéployer le site (console)
<a name="tutorials-windows-update-and-redeploy-application-deploy-updates-console"></a>

1. Connectez-vous à la CodeDeploy console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codedeploy.](https://console.aws.amazon.com/codedeploy)
**Note**  
Connectez-vous avec le même utilisateur que celui que vous avez configuré[Commencer avec CodeDeploy](getting-started-codedeploy.md).

1. Dans le volet de navigation , choisissez **Applications**.

1. Dans la liste des **applications**, choisissez **HelloWorld\$1App**.

1. Dans l'onglet **Déploiements**, choisissez **Créer un déploiement**.

   1. Dans la liste des **groupes de déploiement**, choisissez **HelloWorld\$1 DepGroup**.

   1.  Dans **Emplacement de la révision**, entrez le lien Amazon S3 correspondant à votre révision.

      Pour trouver la valeur du lien :

      1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

         Accédez à **amzn-s3-demo-bucket** et ouvrez-le, puis choisissez votre révision dans **HelloWorld\$1App.zip** la console Amazon S3.

      1. Si le volet **Propriétés** n'est pas visible dans la console Amazon S3, cliquez sur le bouton **Propriétés**.

      1. Dans le volet **Propriétés**, copiez la valeur du champ **Lien**.

      1. Retournez à la CodeDeploy console, puis collez le lien dans l'**emplacement de la révision**.

   1. Dans **Type de fichier de révision**, si un message indique que le type de fichier n'a pas pu être détecté, choisissez **.zip**.

   1. Laissez **Description du déploiement** vide.

   1. **Étendre les **remplacements des groupes de déploiement** Dans la liste **de configuration du déploiement**, sélectionnezCodeDeployDefault. OneAtATime**, puis choisissez **Create deployment**. 

      Vous pouvez vérifier l'état du déploiement comme décrit dans la rubrique [Surveillez et résolvez les problèmes liés à votre déploiement](tutorials-windows-deploy-application.md#tutorials-windows-deploy-application-monitor).

      Une fois le site CodeDeploy redéployé, revisitez-le dans votre navigateur Web pour vérifier que la couleur d'arrière-plan et le texte de la page Web ont été modifiés. (Vous devrez peut-être actualiser votre navigateur.) Si la couleur d'arrière-plan et le texte ont été modifiés, vous avez réussi la procédure. Vous avez modifié et redéployé votre site.

# Étape 6 : Nettoyez votre message « Bonjour tout le monde \$1 » application et ressources connexes
<a name="tutorials-windows-clean-up"></a>

Vous avez maintenant correctement mis à jour le message « Hello, World \$1 » codez et redéployez le site. Pour éviter des frais permanents pour les ressources que vous avez créées pour effectuer ce didacticiel, vous devez supprimer :
+ Toutes les CloudFormation piles (ou résiliez toute instance Amazon EC2, si vous les avez créées en dehors CloudFormation de).
+ Tous les compartiments Amazon S3.
+ l'application `HelloWorld_App` dans CodeDeploy ;
+ L'association AWS Systems Manager State Manager de l' CodeDeploy agent.

Vous pouvez utiliser les AWS CLI consoles Amazon S3, Amazon EC2 et les CodeDeploy consoles, ou AWS APIs pour effectuer le nettoyage. CloudFormation

**Topics**
+ [Pour nettoyer les ressources (interface CLI)](#tutorials-windows-clean-up-cli)
+ [Pour nettoyer les ressources (console)](#tutorials-windows-clean-up-console)
+ [Quelle est la prochaine étape ?](#tutorials-windows-clean-up-whats-next)

## Pour nettoyer les ressources (interface CLI)
<a name="tutorials-windows-clean-up-cli"></a>

1. Si vous avez utilisé la CloudFormation pile pour ce didacticiel, supprimez-la en appelant la **delete-stack** commande correspondant à la pile nommée**CodeDeployDemoStack**. Cela met fin à toutes les instances Amazon EC2 associées et supprime tous les rôles IAM associés créés à l'origine par la pile.

   ```
   aws cloudformation delete-stack --stack-name CodeDeployDemoStack
   ```

1. Pour supprimer le compartiment Amazon S3, appelez la **rm** commande en utilisant le **--recursive** commutateur correspondant au compartiment nommé**amzn-s3-demo-bucket**. Elle supprime le compartiment et tous les objets qui y figurent.

   ```
   aws s3 rm s3://amzn-s3-demo-bucket --recursive --region region
   ```

1. Pour supprimer l'`HelloWorld_App`application CodeDeploy, appelez la **delete-application** commande. Elle supprime tous les enregistrements de groupe de déploiement et les enregistrements de déploiement associés pour l'application.

   ```
   aws deploy delete-application --application-name HelloWorld_App
   ```

1. Pour supprimer l'association Systems Manager State Manager, appelez la **delete-association** commande.

   ```
   aws ssm delete-association --assocation-id association-id
   ```

   Vous pouvez l'obtenir *association-id* en appelant la **describe-association** commande.

   ```
   aws ssm describe-association --name AWS-ConfigureAWSPackage --targets Key=tag:Name,Values=CodeDeployDemo
   ```

1. Si vous n'avez pas utilisé la CloudFormation pile pour ce didacticiel, appelez la **terminate-instances** commande pour mettre fin aux instances Amazon EC2 que vous avez créées manuellement. Fournissez l'ID de l'instance Amazon EC2 à résilier.

   ```
   aws ec2 terminate-instances --instance-ids instanceId
   ```

## Pour nettoyer les ressources (console)
<a name="tutorials-windows-clean-up-console"></a>

Si vous avez utilisé notre CloudFormation modèle pour ce didacticiel, supprimez la CloudFormation pile associée.

1. Connectez-vous à la CloudFormation console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Dans la zone de recherche, tapez le nom de la CloudFormation pile (par exemple,**CodeDeployDemoStack**).

1. Cochez la case en regard du nom de la pile.

1. Dans le menu **Actions**, sélectionnez **Supprimer pile**. Cela supprime la pile, met fin à toutes les instances Amazon EC2 associées et supprime tous les rôles IAM associés.

Pour mettre fin aux instances Amazon EC2 que vous avez créées en dehors d'une CloudFormation pile :

1. Connectez-vous à la console Amazon EC2 AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Dans la zone **Instances**, choisissez **Instances**.

1. **Dans le champ de recherche, tapez le nom de l'instance Amazon EC2 que vous souhaitez résilier, puis appuyez sur Entrée.**

1. Choisissez l'instance Amazon EC2.

1. Choisissez **Actions**, pointez sur **État de l'instance**, puis choisissez **Terminer**. À l'invite, choisissez **Oui, résilier**. Répétez ces étapes pour toutes les instances Amazon EC2 supplémentaires.

Pour supprimer le compartiment Amazon S3, procédez comme suit :

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans la liste des compartiments, recherchez et choisissez le nom du compartiment Amazon S3 (par exemple,**amzn-s3-demo-bucket**).

1. Avant de pouvoir supprimer un compartiment, vous devez d'abord supprimer son contenu. Sélectionnez tous les fichiers figurant dans le compartiment, tels que **HelloWorld\$1App.zip**. Dans le menu **Actions**, sélectionnez **Delete**. Lorsque vous êtes invité à confirmer la suppression, choisissez **OK**. 

1. Une fois que le compartiment est vide, vous pouvez le supprimer. Dans la liste des compartiments, sélectionnez la ligne du compartiment (mais pas son nom). Choisissez **Supprimer le compartiment**, lorsque vous êtes invité à confirmer, puis **OK**. 

Pour supprimer l'`HelloWorld_App`application depuis CodeDeploy :

1. Connectez-vous à la CodeDeploy console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codedeploy.](https://console.aws.amazon.com/codedeploy)
**Note**  
Connectez-vous avec le même utilisateur que celui que vous avez configuré[Commencer avec CodeDeploy](getting-started-codedeploy.md).

1. Dans le volet de navigation, développez **Deploy**, puis choisissez **Applications**.

   

1. Sélectionnez **`HelloWorld_App`**.

1. Choisissez **Supprimer l'application**.

1. Lorsque vous y êtes invité, tapez **Delete**, puis choisissez **Supprimer**. 

Pour supprimer l'association Systems Manager State Manager, procédez comme suit :

1. Ouvrez la AWS Systems Manager console dans https://console.aws.amazon.com /systems-manager.

1. Dans le volet de navigation, sélectionnez **State Manager**.

1. Sélectionnez l'association que vous avez créée et choisissez **Delete (Supprimer)**.

## Quelle est la prochaine étape ?
<a name="tutorials-windows-clean-up-whats-next"></a>

Si vous êtes arrivé ici, vous avez terminé avec succès un déploiement avec CodeDeploy. Félicitations \$1

# Tutoriel : Déployer une application sur une instance locale avec CodeDeploy (Windows Server, Ubuntu Server ou Red Hat Enterprise Linux)
<a name="tutorials-on-premises-instance"></a>

Ce didacticiel vous aide à acquérir de l'expérience en vous CodeDeploy guidant dans le déploiement d'un exemple de révision d'application sur une seule instance locale, c'est-à-dire un appareil physique autre qu'une instance Amazon EC2, exécutant Windows Server, Ubuntu Server ou Red Hat Enterprise Linux (RHEL). Pour plus d'informations sur les instances locales et leur mode de fonctionnement CodeDeploy, consultez[Utilisation d'instances locales pour CodeDeploy](instances-on-premises.md).

Ce n'est pas ce que vous recherchez ?
+ Pour vous entraîner au déploiement sur une instance Amazon EC2 exécutant Amazon Linux ou RHEL, consultez. [Tutoriel : Déploiement WordPress sur une instance Amazon EC2 (Amazon Linux ou Red Hat Enterprise Linux et Linux, macOS ou Unix)](tutorials-wordpress.md)
+ Pour vous entraîner au déploiement sur une instance Amazon EC2 exécutant Windows Server, consultez. [Tutoriel : Déployez un message « Bonjour tout le monde \$1 » application avec CodeDeploy (Windows Server)](tutorials-windows.md)

**Topics**
+ [Conditions préalables](tutorials-on-premises-instance-prerequisites.md)
+ [Étape 1 : Configuration de l'instance sur site](tutorials-on-premises-instance-1-configure-instance.md)
+ [Étape 2 : Création d'un exemple de révision d'application](tutorials-on-premises-instance-2-create-sample-revision.md)
+ [Étape 3 : Regroupez et chargez la révision de votre application sur Amazon S3](tutorials-on-premises-instance-3-bundle-sample-revision.md)
+ [Étape 4 : Déployez la révision de votre application](tutorials-on-premises-instance-4-deploy-sample-revision.md)
+ [Étape 5 : vérifier votre déploiement](tutorials-on-premises-instance-5-verify-deployment.md)
+ [Étape 6 : nettoyer les ressources](tutorials-on-premises-instance-6-clean-up-resources.md)

# Conditions préalables
<a name="tutorials-on-premises-instance-prerequisites"></a>

Avant de commencer ce didacticiel, vous devez remplir les conditions requises, notamment la configuration d'un utilisateur[Commencer avec CodeDeploy](getting-started-codedeploy.md), l'installation ou la mise à niveau du AWS CLI, et la création d'un rôle de service. Il n'est pas nécessaire de créer un profil d'instance IAM comme décrit dans les conditions préalables. Les instances locales n'utilisent pas de profils d'instance IAM.

L'appareil physique que vous allez configurer comme instance sur site doit exécuter l'un des systèmes d'exploitation répertoriés dans [Systèmes d'exploitation pris en charge par l' CodeDeploy agent](codedeploy-agent.md#codedeploy-agent-supported-operating-systems).

# Étape 1 : Configuration de l'instance sur site
<a name="tutorials-on-premises-instance-1-configure-instance"></a>

Avant de pouvoir effectuer un déploiement sur votre instance sur site, vous devez la configurer. Suivez les instructions de [Utilisation d'instances locales pour CodeDeploy](instances-on-premises.md), puis revenez à cette page.

## Installation de l' CodeDeploy agent
<a name="tutorials-on-premises-instance-1-configure-instance-agent"></a>

Après avoir configuré votre instance locale, suivez les étapes relatives aux instances locales dans [Installer l' CodeDeploy agent](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install.html) et revenez à cette page.

# Étape 2 : Création d'un exemple de révision d'application
<a name="tutorials-on-premises-instance-2-create-sample-revision"></a>

Dans cette étape, vous créez un exemple de révision d'application à déployer sur votre instance sur site. 

Comme il est difficile de savoir quels logiciels et quelles fonctionnalités sont déjà installés (ou autorisés à être installés conformément aux politiques de votre organisation) sur votre instance locale, l'exemple de révision d'application que nous proposons ici utilise simplement des scripts batch (pour Windows Server) ou des scripts shell (pour Ubuntu Server et RHEL) pour écrire des fichiers texte sur un emplacement de votre instance locale. Un fichier est écrit pour chacun des événements du cycle de vie du CodeDeploy déploiement, notamment **Install **AfterInstall****, **ApplicationStart**, et **ValidateService**. Au cours de l'événement relatif au cycle de vie du **BeforeInstall**déploiement, un script sera exécuté pour supprimer les anciens fichiers écrits lors des déploiements précédents de cet exemple et créer un emplacement sur votre instance locale où écrire les nouveaux fichiers. 

**Note**  
Cet exemple de révision d'application peut ne pas être déployé si l'une des affirmations suivantes est vraie :  
L'utilisateur qui démarre l' CodeDeploy agent sur l'instance locale n'est pas autorisé à exécuter des scripts.
L'utilisateur n'est pas autorisé à créer ou à supprimer des dossiers dans les emplacements répertoriés dans les scripts.
L'utilisateur n'est pas autorisé à créer des fichiers texte dans les emplacements répertoriés dans les scripts.

**Note**  
Si vous avez configuré une instance Windows Server et que vous souhaitez déployer un autre exemple, vous pouvez utiliser celui présenté [Étape 2 : configurer votre contenu source à déployer sur l'instance Amazon EC2 de Windows Server](tutorials-windows-configure-content.md) dans le [Tutoriel : Déployez un message « Bonjour tout le monde \$1 » application avec CodeDeploy (Windows Server)](tutorials-windows.md) didacticiel.  
Si vous avez configuré une instance RHEL et que vous souhaitez déployer un autre exemple, vous pouvez utiliser celui présenté [Étape 2 : configurer votre contenu source à déployer sur l'instance Amazon EC2 Amazon Linux ou Red Hat Enterprise Linux](tutorials-wordpress-configure-content.md) dans le [Tutoriel : Déploiement WordPress sur une instance Amazon EC2 (Amazon Linux ou Red Hat Enterprise Linux et Linux, macOS ou Unix)](tutorials-wordpress.md) didacticiel.  
Il n'existe actuellement aucun autre exemple pour Ubuntu Server.

1. Sur votre machine de développement, créez un sous-répertoire (sous-dossier) nommé `CodeDeployDemo-OnPrem`, qui stockera les exemples de fichiers de révision d'application, puis basculez vers ce sous-dossier. Pour cet exemple, nous supposons que vous utiliserez le `c:\temp` dossier comme dossier racine pour Windows Server ou le `/tmp` dossier comme dossier racine pour Ubuntu Server et RHEL. Si vous utilisez un autre dossier, veillez à le substituer aux nôtres tout au long de ce didacticiel : 

   Pour Windows :

   ```
   mkdir c:\temp\CodeDeployDemo-OnPrem
   cd c:\temp\CodeDeployDemo-OnPrem
   ```

   Pour Linux, macOS ou Unix :

   ```
   mkdir /tmp/CodeDeployDemo-OnPrem
   cd /tmp/CodeDeployDemo-OnPrem
   ```

1. A la racine du sous-dossier `CodeDeployDemo-OnPrem`, utilisez un éditeur de texte pour créer deux fichiers nommés `appspec.yml` et `install.txt` :

   `appspec.yml`pour Windows Server :

   ```
   version: 0.0
   os: windows
   files:
     - source: .\install.txt
       destination: c:\temp\CodeDeployExample
   hooks:
     BeforeInstall:
       - location: .\scripts\before-install.bat
         timeout: 900
     AfterInstall:
       - location: .\scripts\after-install.bat     
         timeout: 900
     ApplicationStart:
       - location: .\scripts\application-start.bat  
         timeout: 900
     ValidateService:
       - location: .\scripts\validate-service.bat    
         timeout: 900
   ```

   `appspec.yml`pour Ubuntu Server et RHEL :

   ```
   version: 0.0
   os: linux
   files:
     - source: ./install.txt
       destination: /tmp/CodeDeployExample
   hooks:
     BeforeInstall:
       - location: ./scripts/before-install.sh
         timeout: 900
     AfterInstall:
       - location: ./scripts/after-install.sh
         timeout: 900
     ApplicationStart:
       - location: ./scripts/application-start.sh
         timeout: 900
     ValidateService:
       - location: ./scripts/validate-service.sh
         timeout: 900
   ```

   Pour plus d'informations sur AppSpec les fichiers, reportez-vous [Ajouter un fichier de spécification d'application à une révision pour CodeDeploy](application-revisions-appspec-file.md) aux sections et[CodeDeploy AppSpec référence de fichier](reference-appspec-file.md).

   `install.txt`:

   ```
   The Install deployment lifecycle event successfully completed.
   ```

1. À la racine du sous-dossier `CodeDeployDemo-OnPrem`, créez un sous-dossier `scripts`, puis accédez-y :

   Pour Windows :

   ```
   mkdir c:\temp\CodeDeployDemo-OnPrem\scripts
   cd c:\temp\CodeDeployDemo-OnPrem\scripts
   ```

   Pour Linux, macOS ou Unix :

   ```
   mkdir -p /tmp/CodeDeployDemo-OnPrem/scripts
   cd /tmp/CodeDeployDemo-OnPrem/scripts
   ```

1. À la racine du `scripts` sous-dossier, utilisez un éditeur de texte pour créer quatre fichiers nommés`before-install.bat`, `after-install.bat``application-start.bat`, et `validate-service.bat` pour Windows Server, ou, `before-install.sh` `after-install.sh``application-start.sh`, et `validate-service.sh` pour Ubuntu Server et RHEL :

   Pour Windows Server :

   `before-install.bat`:

   ```
   set FOLDER=%HOMEDRIVE%\temp\CodeDeployExample
   
   if exist %FOLDER% (
     rd /s /q "%FOLDER%"
   )
   
   mkdir %FOLDER%
   ```

   `after-install.bat`:

   ```
   cd %HOMEDRIVE%\temp\CodeDeployExample
   
   echo The AfterInstall deployment lifecycle event successfully completed. > after-install.txt
   ```

   `application-start.bat`:

   ```
   cd %HOMEDRIVE%\temp\CodeDeployExample
   
   echo The ApplicationStart deployment lifecycle event successfully completed. > application-start.txt
   ```

   `validate-service.bat`:

   ```
   cd %HOMEDRIVE%\temp\CodeDeployExample
   
   echo The ValidateService deployment lifecycle event successfully completed. > validate-service.txt
   ```

   Pour Ubuntu Server et RHEL :

   `before-install.sh`:

   ```
   #!/bin/bash
   export FOLDER=/tmp/CodeDeployExample
   
   if [ -d $FOLDER ]
   then
    rm -rf $FOLDER
   fi
   
   mkdir -p $FOLDER
   ```

   `after-install.sh`:

   ```
   #!/bin/bash
   cd /tmp/CodeDeployExample
   
   echo "The AfterInstall deployment lifecycle event successfully completed." > after-install.txt
   ```

   `application-start.sh`:

   ```
   #!/bin/bash
   cd /tmp/CodeDeployExample
   
   echo "The ApplicationStart deployment lifecycle event successfully completed." > application-start.txt
   ```

   `validate-service.sh`:

   ```
   #!/bin/bash
   cd /tmp/CodeDeployExample
   
   echo "The ValidateService deployment lifecycle event successfully completed." > validate-service.txt
   
   unset FOLDER
   ```

1. Pour Ubuntu Server et RHEL uniquement, assurez-vous que les quatre scripts shell disposent des autorisations d'exécution :

   ```
   chmod +x ./scripts/*
   ```

# Étape 3 : Regroupez et chargez la révision de votre application sur Amazon S3
<a name="tutorials-on-premises-instance-3-bundle-sample-revision"></a>

Avant de déployer la révision de votre application, vous devez regrouper les fichiers, puis télécharger le bundle de fichiers dans un compartiment Amazon S3. Suivez les instructions de [Créez une application avec CodeDeploy](applications-create.md) et [Transférer une révision CodeDeploy pour Amazon S3 (déploiements EC2/sur site uniquement)](application-revisions-push.md). (Bien que vous puissiez donner un nom quelconque à l'application et au groupe de déploiement, nous vous recommandons d'utiliser `CodeDeploy-OnPrem-App` pour le nom de l'application et `CodeDeploy-OnPrem-DG` pour le nom du groupe de déploiement.) Une fois que vous avez suivi ces instructions, revenez à cette page. 

**Note**  
Vous pouvez également télécharger le bundle de fichiers dans un GitHub référentiel et le déployer à partir de là. Pour de plus amples informations, veuillez consulter [Intégration CodeDeploy avec GitHub](integrations-partners-github.md).

# Étape 4 : Déployez la révision de votre application
<a name="tutorials-on-premises-instance-4-deploy-sample-revision"></a>

Après avoir chargé la révision de votre application dans un compartiment Amazon S3, essayez de la déployer sur votre instance sur site. Suivez les instructions de [Créez un déploiement avec CodeDeploy](deployments-create.md), puis revenez à cette page.

# Étape 5 : vérifier votre déploiement
<a name="tutorials-on-premises-instance-5-verify-deployment"></a>

Pour vérifier que le déploiement a réussi, suivez les instructions de [Afficher les détails CodeDeploy du déploiement](deployments-view-details.md), puis revenez à cette page.

Si le déploiement a réussi, vous trouverez quatre fichiers texte dans le `c:\temp\CodeDeployExample` dossier (pour Windows Server) ou `/tmp/CodeDeployExample` (pour Ubuntu Server et RHEL). 

Si le déploiement a échoué, suivez les étapes de dépannage de [Afficher les détails de l'instance avec CodeDeploy](instances-view-details.md) et [Résolution des problèmes d'instance](troubleshooting-ec2-instances.md). Réalisez toutes les corrections requises, regroupez et chargez votre révision d'application, puis réessayez d'effectuer le déploiement.

# Étape 6 : nettoyer les ressources
<a name="tutorials-on-premises-instance-6-clean-up-resources"></a>

Pour éviter des frais permanents pour les ressources que vous avez créées pour ce didacticiel, supprimez le compartiment Amazon S3 si vous ne l'utilisez plus. Vous pouvez également nettoyer les ressources associées, telles que les enregistrements de l'application et du groupe de déploiement dans CodeDeploy et dans l'instance locale.

Vous pouvez utiliser les consoles Amazon S3 AWS CLI ou une combinaison de celles-ci AWS CLI pour nettoyer les ressources. CodeDeploy 

## Nettoyer les ressources (CLI)
<a name="tutorials-on-premises-instance-6-clean-up-resources-cli"></a>

**Pour supprimer le compartiment Amazon S3**
+ Appelez la commande [rm](https://docs.aws.amazon.com/cli/latest/reference/s3/rm.html) avec le commutateur `--recursive` sur le compartiment (par exemple, `amzn-s3-demo-bucket`). Le compartiment et tous les objets figurant dans le compartiment sont supprimés. 

  ```
  aws s3 rm s3://your-bucket-name --recursive --region region
  ```

**Pour supprimer les enregistrements de l'application et du groupe de déploiement dans CodeDeploy**
+ Appelez la commande [delete-application](https://docs.aws.amazon.com/cli/latest/reference/deploy/delete-application.html) sur l'application (par exemple,`CodeDeploy-OnPrem-App`). Les enregistrements pour le déploiement et le groupe de déploiement sont supprimés. 

  ```
  aws deploy delete-application --application-name your-application-name
  ```<a name="tutorials-on-premises-instance-6-clean-up-resources-deregister-cli"></a>

**Pour désenregistrer l'instance locale et supprimer l'utilisateur IAM**
+ Appelez la commande de [désenregistrement](https://docs.aws.amazon.com/cli/latest/reference/deploy/deregister.html) par rapport à l'instance et à la région locales :

  ```
  aws deploy deregister --instance-name your-instance-name --delete-iam-user --region your-region
  ```
**Note**  
Si vous ne souhaitez pas supprimer l'utilisateur IAM associé à cette instance locale, utilisez plutôt l'`--no-delete-iam-user`option.

**Pour désinstaller l' CodeDeploy agent et supprimer le fichier de configuration de l'instance locale**
+ À partir de l'instance locale, appelez la commande de [désinstallation](https://docs.aws.amazon.com/cli/latest/reference/deploy/uninstall.html) :

  ```
  aws deploy uninstall
  ```

Vous avez maintenant terminé toutes les étapes de nettoyage des ressources utilisées pour ce didacticiel.

## Nettoyer les ressources (console)
<a name="tutorials-on-premises-instance-6-clean-up-resources-console"></a>

**Pour supprimer le compartiment Amazon S3**

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Choisissez l'icône à côté du compartiment que vous souhaitez supprimer (par exemple, `amzn-s3-demo-bucket`), mais ne choisissez pas le compartiment lui-même.

1. Choisissez **Actions**, puis **Supprimer**. 

1. Lorsque vous êtes invité à supprimer le compartiment, choisissez **OK**. 

**Pour supprimer les enregistrements de l'application et du groupe de déploiement dans CodeDeploy**

1. Connectez-vous à la CodeDeploy console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codedeploy.](https://console.aws.amazon.com/codedeploy)
**Note**  
Connectez-vous avec le même utilisateur que celui que vous avez configuré[Commencer avec CodeDeploy](getting-started-codedeploy.md).

1. Dans le volet de navigation, choisissez **Applications**.

1. Choisissez le nom de l'application à supprimer (par exemple, `CodeDeploy-OnPrem-App`), puis choisissez **Supprimer l'application**.

1. À l'invite, entrez le nom de l'application pour confirmer que vous souhaitez la supprimer, puis choisissez **Supprimer**. 

Vous ne pouvez pas utiliser la AWS CodeDeploy console pour désenregistrer l'instance locale ou désinstaller l'agent. CodeDeploy Suivez les instructions de la section [Pour désenregistrer l'instance locale et supprimer l'utilisateur IAM](#tutorials-on-premises-instance-6-clean-up-resources-deregister-cli).

# Tutoriel : CodeDeploy À utiliser pour déployer une application dans un groupe Auto Scaling
<a name="tutorials-auto-scaling-group"></a>

Dans ce didacticiel, vous allez utiliser CodeDeploy pour déployer une révision d'application dans un groupe Auto Scaling. Amazon EC2 Auto Scaling lance des instances Amazon EC2 selon des conditions prédéfinies, puis met fin à ces instances lorsqu'elles ne sont plus nécessaires. Amazon EC2 Auto Scaling peut CodeDeploy vous aider à évoluer en garantissant qu'il dispose toujours du nombre correct d'instances Amazon EC2 disponibles pour gérer la charge des déploiements. Pour plus d'informations sur l'intégration d'Amazon EC2 Auto Scaling CodeDeploy avec, [Intégration CodeDeploy à Amazon EC2 Auto Scaling](integrations-aws-auto-scaling.md) consultez.

**Topics**
+ [Conditions préalables](tutorials-auto-scaling-group-prerequisites.md)
+ [Étape 1 : Création et configuration du groupe Auto Scaling](tutorials-auto-scaling-group-create-auto-scaling-group.md)
+ [Étape 2 : Déployer l'application dans le groupe Auto Scaling](tutorials-auto-scaling-group-create-deployment.md)
+ [Étape 3 : Vérifiez vos résultats](tutorials-auto-scaling-group-verify.md)
+ [Étape 4 : augmenter le nombre d'instances Amazon EC2 dans le groupe Auto Scaling](tutorials-auto-scaling-group-scale-up.md)
+ [Étape 5 : Vérifiez à nouveau vos résultats](tutorials-auto-scaling-group-reverify.md)
+ [Étape 6 : Nettoyer](tutorials-auto-scaling-group-clean-up.md)

# Conditions préalables
<a name="tutorials-auto-scaling-group-prerequisites"></a>

Pour suivre ce tutoriel :
+ Effectuez toutes les étapes décrites[Commencer avec CodeDeploy](getting-started-codedeploy.md), y compris la configuration AWS CLI et la création d'un profil d'instance IAM (**CodeDeployDemo-EC2-Instance-Profile**) et d'un rôle de service (**CodeDeployDemo**). Un *rôle de service* est un type spécial de rôle IAM qui autorise un service à agir en votre nom.
+ Si vous créez votre groupe Auto Scaling avec un modèle de lancement, vous devez ajouter les autorisations suivantes :
  +  `ec2:RunInstances` 
  +  `ec2:CreateTags` 
  +  `iam:PassRole` 

  Pour plus d'informations[Étape 2 : créer un rôle de service](getting-started-create-service-role.md), consultez les sections [Création d'un modèle de lancement pour un groupe Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) et [prise en charge des modèles de lancement](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-launch-template-permissions.html) dans le guide de l'*utilisateur Amazon EC2 Auto Scaling*. 
+  Créez et utilisez une révision compatible avec une instance de serveur Ubuntu et CodeDeploy. Pour votre révision, vous pouvez effectuer l'une des opérations suivantes :
  + Créer et utiliser l'exemple de révision de l'[Étape 2 : Création d'un exemple de révision d'application](tutorials-on-premises-instance-2-create-sample-revision.md) du didacticiel [Tutoriel : Déployer une application sur une instance locale avec CodeDeploy (Windows Server, Ubuntu Server ou Red Hat Enterprise Linux)](tutorials-on-premises-instance.md). 
  + Créer vous-même une révision. Pour ce faire, consultez [Travailler avec les révisions d'applications pour CodeDeploy](application-revisions.md).
+ Créez un groupe de sécurité nommé **CodeDeployDemo-AS-SG** avec la **règle entrante** suivante :
  + Type : HTTP
  + Source : N'importe où

  Cela est nécessaire pour visualiser votre application et vérifier le succès du déploiement. Pour plus d'informations sur la création d'un groupe de sécurité, consultez la section [Création d'un groupe de sécurité](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#creating-security-group) dans le guide de l'*utilisateur Amazon EC2*.

 

# Étape 1 : Création et configuration du groupe Auto Scaling
<a name="tutorials-auto-scaling-group-create-auto-scaling-group"></a>

Au cours de cette étape, vous allez créer un groupe Auto Scaling contenant une seule instance Amazon EC2 Amazon Linux, RHEL ou Windows Server. Dans une étape ultérieure, vous demanderez à Amazon EC2 Auto Scaling d'ajouter une instance Amazon EC2 supplémentaire, CodeDeploy et vous y déploierez votre révision.

**Topics**
+ [Pour créer et configurer le groupe Auto Scaling (CLI)](#tutorials-auto-scaling-group-create-auto-scaling-group-cli)
+ [Pour créer et configurer le groupe Auto Scaling (console)](#tutorials-auto-scaling-group-create-auto-scaling-group-console)

## Pour créer et configurer le groupe Auto Scaling (CLI)
<a name="tutorials-auto-scaling-group-create-auto-scaling-group-cli"></a>

1. Appelez la **create-launch-template** commande pour créer un modèle de lancement Amazon EC2.

   Avant d'appeler cette commande, vous avez besoin de l'ID d'une AMI compatible avec ce didacticiel, représenté par l'espace réservé*image-id*. Vous avez également besoin du nom d'une paire de clés d'instance Amazon EC2 pour permettre l'accès à l'instance Amazon EC2, représentée par l'espace réservé. *key-name*

   Pour obtenir l'ID d'une image AMI qui fonctionne avec ce didacticiel :

   1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

   1. Dans le volet de navigation, sous **Instances**, choisissez **Instances**, puis choisissez **Lancer une instance**.

   1. Dans l'onglet **Démarrage rapide** de la page **Choisissez une image de machine Amazon**, notez l'ID de l'AMI à côté de l'**AMI Amazon Linux 2**, **Red Hat Enterprise Linux 7.1**, **Ubuntu Server 14.04 LTS** ou **Microsoft Windows Server 2012 R2**. 
**Note**  
Si vous avez une version personnalisée d'une image AMI compatible avec CodeDeploy choisissez-la ici au lieu de parcourir l'onglet **Démarrage rapide**. Pour plus d'informations sur l'utilisation d'une AMI personnalisée avec CodeDeploy Amazon EC2 Auto Scaling, [Utilisation d'une AMI personnalisée avec CodeDeploy Amazon EC2 Auto Scaling](integrations-aws-auto-scaling.md#integrations-aws-auto-scaling-custom-ami) consultez.

   Pour la paire de clés d'instance Amazon EC2, utilisez le nom de votre paire de clés d'instance Amazon EC2.

   Appelez la commande **create-launch-template**.

   Sur les machines Linux, macOS ou Unix locales :

   ```
   aws ec2 create-launch-template \
     --launch-template-name CodeDeployDemo-AS-Launch-Template \
     --launch-template-data file://config.json
   ```

   Le contenu du `config.json` fichier :

   ```
   { 
     "InstanceType":"t1.micro",
     "ImageId":"image-id",
     "IamInstanceProfile":{
       "Name":"CodeDeployDemo-EC2-Instance-Profile"
     },
     "KeyName":"key-name"
   }
   ```

   Sur les machines Windows locales :

   ```
   aws ec2 create-launch-template --launch-template-name CodeDeployDemo-AS-Launch-Template --launch-template-data file://config.json
   ```

   Le contenu du `config.json` fichier :

   ```
   { 
     "InstanceType":"t1.micro",
     "ImageId":"image-id",
     "IamInstanceProfile":{
       "Name":"CodeDeployDemo-EC2-Instance-Profile"
     },
     "KeyName":"key-name"
   }
   ```

   Ces commandes, associées au `config.json` fichier, créent un modèle de lancement Amazon EC2 nommé CodeDeployDemo-AS-Launch-Template d'après votre groupe Auto Scaling qui sera créé lors d'une étape suivante sur la base du type d'instance Amazon EC2 t1.micro. Sur la base de vos entrées pour `ImageId``IamInstanceProfile`, et`KeyName`, le modèle de lancement spécifie également l'ID AMI, le nom du profil d'instance associé au rôle IAM à transmettre aux instances lors du lancement et la paire de clés Amazon EC2 à utiliser lors de la connexion aux instances.

1.  Appelez la **create-auto-scaling-group** commande pour créer un groupe Auto Scaling. Vous aurez besoin du nom de l'une des zones de disponibilité dans l'une des régions répertoriées dans [Région et des points de terminaison](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region) dans la *Références générales AWS*, représentés par l'espace réservé*availability-zone*.
**Note**  
Pour afficher la liste des zones de disponibilité d'une région, appelez :   

   ```
   aws ec2 describe-availability-zones --region region-name
   ```
Par exemple, pour consulter la liste des zones de disponibilité dans la région ouest des États-Unis (Oregon), appelez :  

   ```
   aws ec2 describe-availability-zones --region us-west-2
   ```
Pour obtenir la liste des identifiants de noms de régions, consultez [Noms des compartiments du kit de ressources par région](resource-kit.md#resource-kit-bucket-names).

   Sur les machines Linux, macOS ou Unix locales :

   ```
   aws autoscaling create-auto-scaling-group \
     --auto-scaling-group-name CodeDeployDemo-AS-Group \
     --launch-template CodeDeployDemo-AS-Launch-Template,Version='$Latest' \
     --min-size 1 \
     --max-size 1 \
     --desired-capacity 1 \
     --availability-zones availability-zone \
     --tags Key=Name,Value=CodeDeployDemo,PropagateAtLaunch=true
   ```

   Sur les machines Windows locales :

   ```
   aws autoscaling create-auto-scaling-group --auto-scaling-group-name CodeDeployDemo-AS-Group --launch-template LaunchTemplateName=CodeDeployDemo-AS-Launch-Template,Version="$Latest" --min-size 1 --max-size 1 --desired-capacity 1 --availability-zones availability-zone --tags Key=Name,Value=CodeDeployDemo,PropagateAtLaunch=true
   ```

   Ces commandes créent un groupe Auto Scaling nommé d'**CodeDeployDemo-AS-Group**après le modèle de lancement Amazon EC2 nommé. **CodeDeployDemo-AS-Launch-Template** Ce groupe Auto Scaling ne possède qu'une seule instance Amazon EC2 et il est créé dans la zone de disponibilité spécifiée. Chaque instance de ce groupe Auto Scaling aura le tag`Name=CodeDeployDemo`. La balise sera utilisée lors de l'installation ultérieure de l' CodeDeploy agent.

1. Appelez la commande **describe-auto-scaling-groups** sur **CodeDeployDemo-AS-Group** :

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names CodeDeployDemo-AS-Group --query "AutoScalingGroups[0].Instances[*].[HealthStatus, LifecycleState]" --output text
   ```

   Ne continuez pas tant que les valeurs retournées n'affichent pas `Healthy` et `InService`.

1.  L' CodeDeploy agent doit être installé sur les instances de votre groupe Auto Scaling pour être utilisé dans CodeDeploy les déploiements. Installez l' CodeDeploy agent en appelant la **create-association** commande depuis AWS Systems Manager les balises ajoutées lors de la création du groupe Auto Scaling. 

   ```
   aws ssm create-association \
     --name AWS-ConfigureAWSPackage \
     --targets Key=tag:Name,Values=CodeDeployDemo \
      --parameters action=Install, name=AWSCodeDeployAgent \
     --schedule-expression "cron(0 2 ? * SUN *)"
   ```

   Cette commande crée une association dans Systems Manager State Manager qui installera l' CodeDeploy agent sur toutes les instances du groupe Auto Scaling, puis tentera de le mettre à jour à 2 h tous les dimanches matins. Pour plus d'informations sur l' CodeDeploy agent, consultez la section [Utilisation de l' CodeDeploy agent](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent.html). Pour plus d'informations sur Systems Manager, consultez [What is AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html).

## Pour créer et configurer le groupe Auto Scaling (console)
<a name="tutorials-auto-scaling-group-create-auto-scaling-group-console"></a>

1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Dans la barre de navigation globale, assurez-vous que l'une des régions répertoriées dans [Région et points de terminaison](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region) dans le *Références générales AWS*est sélectionnée. Les ressources Amazon EC2 Auto Scaling sont liées à la région que vous spécifiez CodeDeploy et ne sont prises en charge que dans certaines régions.

1. Dans la barre de navigation, sous **Instances**, choisissez **Launch Templates**.

1. Choisissez **Créer un modèle de lancement**.

1. Dans la boîte de dialogue **Nom et description du modèle** de **lancement, pour Nom du modèle** de lancement, entrez**CodeDeployDemo-AS-Launch-Template**. Conservez les valeurs par défaut pour les autres champs.

1. Dans la boîte de dialogue **Amazon machine image (AMI)**, cliquez sur le menu déroulant sous **AMI**, choisissez une AMI compatible avec ce didacticiel :

   1. Dans l'onglet **Quick Start** de la liste déroulante **AMI**, sélectionnez l'une des options suivantes : **Amazon Linux 2 AMI**, **Red Hat Enterprise Linux 7.1**, **Ubuntu Server 14.04 LTS** ou **Microsoft Windows Server 2012 R2**. 
**Note**  
Si vous avez une version personnalisée d'une image AMI compatible avec CodeDeploy choisissez-la ici au lieu de parcourir l'onglet **Démarrage rapide**. Pour plus d'informations sur l'utilisation d'une AMI personnalisée avec CodeDeploy Amazon EC2 Auto Scaling, [Utilisation d'une AMI personnalisée avec CodeDeploy Amazon EC2 Auto Scaling](integrations-aws-auto-scaling.md#integrations-aws-auto-scaling-custom-ami) consultez.

1. Dans **Type d'instance**, sélectionnez le menu déroulant et choisissez **t1.micro**. Vous pouvez utiliser la barre de recherche pour le trouver plus rapidement.

1. Dans la boîte de dialogue **Key pair (login)**, sélectionnez **Choisir une paire de clés existante**. Dans la liste déroulante **Sélectionnez une paire de clés**, sélectionnez la paire de clés d'instance Amazon EC2 que vous avez créée ou utilisée lors des étapes précédentes.

1. Dans la boîte de dialogue **Paramètres réseau**, choisissez **Virtual Public Cloud (VPC**).

   Dans le menu déroulant **Groupes de sécurité**, choisissez le groupe de sécurité que vous avez créé dans la [section des prérequis du didacticiel](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorials-auto-scaling-group-prerequisites.html) ()**CodeDeployDemo-AS-SG**.

1. Développez la boîte de dialogue **Détails avancés**. Dans la liste déroulante du **profil d'instance IAM**, sélectionnez le rôle IAM que vous avez créé précédemment (**CodeDeployDemo-EC2-Instance-Profile**) sous Profil d'instance **IAM**.

   Conservez le reste des valeurs par défaut.

1. Choisissez **Créer un modèle de lancement**.

1. Dans la boîte de dialogue **Next steps**, choisissez **Create Auto Scaling group**.

1. Sur la page **Choisir un modèle de lancement ou de configuration**, saisissez le **nom du groupe Auto Scaling****CodeDeployDemo-AS-Group**.

1. Dans la boîte de dialogue **Modèle** de lancement, votre modèle de lancement (**CodeDeployDemo-AS-Launch-Template**) doit être renseigné. Sinon, sélectionnez-le dans le menu déroulant. Conservez les valeurs par défaut et choisissez **Next**. 

1. Sur la **page Choisir les options de lancement de l'instance**, dans la section **Réseau**, pour **VPC, choisissez le VPC** par défaut. Ensuite, pour les **zones de disponibilité et les sous-réseaux**, choisissez un sous-réseau par défaut. Vous devez créer un VPC si vous ne pouvez pas choisir la valeur par défaut. Pour plus d'informations, consultez [Getting started with Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-getting-started.html).

1. Dans la section **Instance type requirements** (Exigences relatives au type d'instance), utilisez le paramètre par défaut pour simplifier cette étape. (Ne remplacez pas le modèle de lancement.) Pour ce didacticiel, vous lancerez uniquement des instances à la demande en utilisant le type d'instance spécifié dans votre modèle de lancement.

1. Choisissez **Next** (Suivant) pour accéder à la page **Configurer les options avancées**.

1. Conservez les valeurs par défaut et choisissez **Next**.

1. Sur la page **Configurer la taille du groupe et les politiques de dimensionnement**, conservez les valeurs de **taille de groupe** par défaut de 1. Choisissez **Suivant**.

1. Ignorez l'étape de configuration des notifications et choisissez **Next**.

1. Sur la page **Ajouter des balises**, ajoutez une balise à utiliser ultérieurement lors de l'installation de l' CodeDeploy agent. Choisissez **Ajouter une balise**.

   1. Dans **Clé**, entrez **Name**.

   1. Dans **Value (Valeur)**, entrez **CodeDeployDemo**.

   Choisissez **Suivant**.

1. Passez en revue les informations de votre groupe Auto Scaling sur la page de **révision**, puis choisissez **Create Auto Scaling group**.

1. Dans la barre de navigation, avec **Auto Scaling Groups** sélectionné**CodeDeployDemo-AS-Group**, choisissez, puis choisissez l'onglet **Instance Management**. Ne poursuivez pas tant que la valeur de n'**InService**apparaît pas dans la colonne **Lifecycle** et que la valeur de **Healthy** n'apparaît pas dans la colonne **Health Status**.

1. Installez l' CodeDeploy agent en suivant les étapes décrites dans [Installer l' CodeDeploy agent](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install.html) et en utilisant les balises d'`Name=CodeDeployDemo`instance.

# Étape 2 : Déployer l'application dans le groupe Auto Scaling
<a name="tutorials-auto-scaling-group-create-deployment"></a>

Au cours de cette étape, vous allez déployer la révision sur l'instance Amazon EC2 unique du groupe Auto Scaling.

**Topics**
+ [Pour créer le déploiement (interface CLI)](#tutorials-auto-scaling-group-create-deployment-cli)
+ [Pour créer le déploiement (console)](#tutorials-auto-scaling-group-create-deployment-console)

## Pour créer le déploiement (interface CLI)
<a name="tutorials-auto-scaling-group-create-deployment-cli"></a>

1. Appelez la commande **create-application** pour créer une application nommée **SimpleDemoApp** :

   ```
   aws deploy create-application --application-name SimpleDemoApp
   ```

1. Vous devriez avoir déjà créé un rôle de service en suivant les instructions de la rubrique [Étape 2 : créer un rôle de service pour CodeDeploy](getting-started-create-service-role.md). Le rôle de service donnera CodeDeploy l'autorisation d'accéder à vos instances Amazon EC2 pour développer (lire) leurs balises. Vous avez besoin du nom ARN du rôle de service. Afin d'obtenir le nom ARN du rôle de service, suivez les instructions de la rubrique [Obtenez l'ARN du rôle de service (CLI)](getting-started-create-service-role.md#getting-started-get-service-role-cli).

1. Maintenant que vous disposez d'un ARN de rôle de service, appelez la **create-deployment-group** commande pour créer un groupe de déploiement nommé**SimpleDemoDG**, associé à l'application nommée**SimpleDemoApp**, en utilisant le nom du groupe Auto Scaling **CodeDeployDemo-AS-Group** et le nom de la configuration de déploiement**CodeDeployDefault.OneAtATime**, avec l'ARN du rôle de service spécifié.
**Note**  
La [create-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html)commande permet de créer des déclencheurs qui entraînent l'envoi de notifications Amazon SNS aux abonnés du topic concernant des événements spécifiques liés aux déploiements et aux instances. La commande prend également en charge des options permettant d'annuler automatiquement les déploiements et de configurer des alarmes pour arrêter les déploiements lorsque les seuils de surveillance des CloudWatch alarmes d'Amazon sont atteints. Les commandes associées à ces actions ne sont pas incluses dans ce didacticiel.

   Sur les machines Linux, macOS ou Unix locales :

   ```
   aws deploy create-deployment-group \
     --application-name SimpleDemoApp \
     --auto-scaling-groups CodeDeployDemo-AS-Group \
     --deployment-group-name SimpleDemoDG \
     --deployment-config-name CodeDeployDefault.OneAtATime \
     --service-role-arn service-role-arn
   ```

   Sur les machines Windows locales :

   ```
   aws deploy create-deployment-group --application-name SimpleDemoApp --auto-scaling-groups CodeDeployDemo-AS-Group --deployment-group-name SimpleDemoDG --deployment-config-name CodeDeployDefault.OneAtATime --service-role-arn service-role-arn
   ```

1. Appelez la commande **create-deployment** pour créer un déploiement associé à l'application nommée **SimpleDemoApp**, à la configuration de déploiement nommée **CodeDeployDefault.OneAtATime**, au groupe de déploiement nommé **SimpleDemoDG**, en utilisant la révision à l'emplacement spécifié.

   **Pour les instances Amazon Linux et RHEL Amazon EC2, appels depuis des machines Linux, macOS ou Unix locales**

    

   ```
   aws deploy create-deployment \
     --application-name SimpleDemoApp \
     --deployment-config-name CodeDeployDefault.OneAtATime \
     --deployment-group-name SimpleDemoDG \
     --s3-location bucket=bucket-name,bundleType=zip,key=samples/latest/SampleApp_Linux.zip
   ```

   *bucket-name*est le nom du compartiment Amazon S3 qui contient les fichiers du kit de CodeDeploy ressources pour votre région. Par exemple, pour la région USA Est (Ohio), remplacez *bucket-name* par`aws-codedeploy-us-east-2`. Pour obtenir la liste des noms de compartiments, consultez[Noms des compartiments du kit de ressources par région](resource-kit.md#resource-kit-bucket-names).

   **Pour les instances Amazon Linux et RHEL Amazon EC2, appels depuis des machines Windows locales**

    

   ```
   aws deploy create-deployment --application-name SimpleDemoApp --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name SimpleDemoDG --s3-location bucket=bucket-name,bundleType=zip,key=samples/latest/SampleApp_Linux.zip
   ```

   *bucket-name*est le nom du compartiment Amazon S3 qui contient les fichiers du kit de CodeDeploy ressources pour votre région. Par exemple, pour la région USA Est (Ohio), remplacez *bucket-name* par`aws-codedeploy-us-east-2`. Pour obtenir la liste des noms de compartiments, consultez[Noms des compartiments du kit de ressources par région](resource-kit.md#resource-kit-bucket-names).

   **Pour les instances Amazon EC2 de Windows Server, appels depuis des machines Linux, macOS ou Unix locales**

    

   ```
   aws deploy create-deployment \
     --application-name SimpleDemoApp \
     --deployment-config-name CodeDeployDefault.OneAtATime \
     --deployment-group-name SimpleDemoDG \
     --s3-location bucket=bucket-name,bundleType=zip,key=samples/latest/SampleApp_Windows.zip
   ```

   *bucket-name*est le nom du compartiment Amazon S3 qui contient les fichiers du kit de CodeDeploy ressources pour votre région. Par exemple, pour la région USA Est (Ohio), remplacez *bucket-name* par`aws-codedeploy-us-east-2`. Pour obtenir la liste des noms de compartiments, consultez[Noms des compartiments du kit de ressources par région](resource-kit.md#resource-kit-bucket-names).

   **Pour les instances Amazon EC2 de Windows Server, appel depuis des machines Windows locales**

   ```
   aws deploy create-deployment --application-name SimpleDemoApp --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name SimpleDemoDG --s3-location bucket=bucket-name,bundleType=zip,key=samples/latest/SampleApp_Windows.zip
   ```

   *bucket-name*est le nom du compartiment Amazon S3 qui contient les fichiers du kit de CodeDeploy ressources pour votre région. Par exemple, pour la région USA Est (Ohio), remplacez *bucket-name* par`aws-codedeploy-us-east-2`. Pour obtenir la liste des noms de compartiments, consultez[Noms des compartiments du kit de ressources par région](resource-kit.md#resource-kit-bucket-names).
**Note**  
Actuellement, CodeDeploy ne fournit pas d'exemple de révision à déployer sur les instances Amazon EC2 du serveur Ubuntu. Pour créer une révision par vous-même, consultez [Travailler avec les révisions d'applications pour CodeDeploy](application-revisions.md).

1. Appelez la commande **get-deployment** pour vous assurer que le déploiement a réussi.

   Avant d'appeler cette commande, vous avez besoin de l'ID du déploiement, qui doit avoir été renvoyé par l'appel à la commande **create-deployment**. Si vous avez besoin d'obtenir l'ID de déploiement à nouveau, appelez la commande **list-deployments** sur l'application nommée **SimpleDemoApp** et le groupe de déploiement nommé **SimpleDemoDG** :

   ```
   aws deploy list-deployments --application-name SimpleDemoApp --deployment-group-name SimpleDemoDG --query "deployments" --output text
   ```

   Maintenant, appelez la commande **get-deployment**, en utilisant l'ID du déploiement :

   ```
   aws deploy get-deployment --deployment-id deployment-id --query "deploymentInfo.status" --output text
   ```

   Ne continuez pas tant que la valeur `Succeeded` n'est pas retournée.

## Pour créer le déploiement (console)
<a name="tutorials-auto-scaling-group-create-deployment-console"></a>

1. Vous devriez avoir déjà créé un rôle de service en suivant les instructions de la rubrique [Étape 2 : créer un rôle de service pour CodeDeploy](getting-started-create-service-role.md). Le rôle de service donnera CodeDeploy l'autorisation d'accéder à vos instances pour développer (lire) leurs balises. Avant d'utiliser la CodeDeploy console pour déployer la révision de votre application, vous aurez besoin de l'ARN du rôle de service. Afin d'obtenir le nom ARN du rôle de service, suivez les instructions de la rubrique [Obtenir l'ARN du rôle de service (console)](getting-started-create-service-role.md#getting-started-get-service-role-console). 

1. Maintenant que vous disposez de l'ARN du rôle de service, vous pouvez utiliser la CodeDeploy console pour déployer la révision de votre application.

   Connectez-vous à la CodeDeploy console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codedeploy.](https://console.aws.amazon.com/codedeploy)
**Note**  
Connectez-vous avec le même utilisateur que celui que vous avez configuré[Commencer avec CodeDeploy](getting-started-codedeploy.md).

1. Dans le volet de navigation, développez **Deploy**, puis choisissez **Applications**.

1. Choisissez **Créer une application**.

1. Choisissez **Application personnalisée**.

1. Dans **Nom de l'application**, saisissez **SimpleDemoApp**.

1. Dans **Plateforme de calcul**, choisissez **EC2/Solutions sur site**.

1. Choisissez **Créer une application**.

1. Dans l'onglet **Groupes de déploiement**, choisissez **Créer un groupe de déploiement**.

1. Dans **Nom du groupe de déploiement**, saisissez **SimpleDemoDG**.

1. Dans **Rôle de service**, choisissez le nom du rôle de service .

1. Dans **Type de déploiement**, choisissez **Sur place**.

1. Dans **Configuration de l'environnement**, sélectionnez **les groupes Auto Scaling**, puis choisissez**CodeDeployDemo-AS-Group**.

1. Dans **Configuration du déploiement**, choisissez **CodeDeployDefault. OneAtATime**.

1. Désactivez **Activer l'équilibrage de charge**.

1. Choisissez **Créer un groupe de déploiement**. 

1. Sur la page du groupe de déploiement, choisissez **Créer un déploiement**.

1. Dans **Type de révision**, choisissez **Mon application est stockée dans Amazon S3**. 

1. Dans **Emplacement de la révision**, entrez l'emplacement de l'exemple d'application pour votre système d'exploitation et votre région.

   **Pour les instances Amazon Linux et RHEL Amazon EC2**  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/tutorials-auto-scaling-group-create-deployment.html)

   **Pour les instances Amazon EC2 de Windows Server**  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/tutorials-auto-scaling-group-create-deployment.html)

    **Pour les instances Amazon EC2 du serveur Ubuntu**

   Entrez l'emplacement de la révision personnalisée de votre application stockée dans Amazon S3.

1. Laissez **Description du déploiement** vide.

1. Développez **Avancé**.

1. Choisissez **Créer un déploiement**. 
**Note**  
Si **Échec** s'affiche au lieu de **Réussi**, vous voudrez peut-être essayer certaines techniques de la rubrique [Surveillez et résolvez les problèmes liés à votre déploiement](tutorials-wordpress-deploy-application.md#tutorials-wordpress-deploy-application-monitor) (en utilisant le nom d'application **SimpleDemoApp** et le nom de groupe de déploiement **SimpleDemoDG**).

# Étape 3 : Vérifiez vos résultats
<a name="tutorials-auto-scaling-group-verify"></a>

Au cours de cette étape, vous allez vérifier que la **SimpleDemoApp** révision a CodeDeploy été installée sur l'unique instance Amazon EC2 du groupe Auto Scaling.

**Topics**
+ [Pour vérifier les résultats (interface CLI)](#tutorials-auto-scaling-group-verify-cli)
+ [Pour vérifier les résultats (console)](#tutorials-auto-scaling-group-verify-console)

## Pour vérifier les résultats (interface CLI)
<a name="tutorials-auto-scaling-group-verify-cli"></a>

Tout d'abord, vous aurez besoin du DNS public de l'instance Amazon EC2.

Utilisez le AWS CLI pour obtenir le DNS public de l'instance Amazon EC2 dans le groupe Auto Scaling en appelant la **describe-instances** commande. 

Avant d'appeler cette commande, vous aurez besoin de l'ID de l'instance Amazon EC2. Pour obtenir l'ID, appelez la **describe-auto-scaling-groups** sur **CodeDeployDemo-AS-Group** comme précédemment :

```
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names CodeDeployDemo-AS-Group --query "AutoScalingGroups[0].Instances[*].InstanceId" --output text
```

Maintenant, appelez la commande **describe-instances** :

```
aws ec2 describe-instances --instance-id instance-id --query "Reservations[0].Instances[0].PublicDnsName" --output text
```

La valeur renvoyée est le DNS public de l'instance Amazon EC2.

À l'aide d'un navigateur Web, affichez la SimpleDemoApp révision déployée sur cette instance Amazon EC2, à l'aide d'une URL comme celle-ci :

```
http://ec2-01-234-567-890.compute-1.amazonaws.com
```

Si vous voyez la page de félicitations, cela signifie que vous avez réussi CodeDeploy à déployer une révision sur une seule instance Amazon EC2 dans un groupe Auto Scaling \$1

Vous allez ensuite ajouter une instance Amazon EC2 au groupe Auto Scaling. Une fois qu'Amazon EC2 Auto Scaling aura ajouté l' CodeDeploy instance Amazon EC2, votre révision sera déployée sur la nouvelle instance.

## Pour vérifier les résultats (console)
<a name="tutorials-auto-scaling-group-verify-console"></a>

Tout d'abord, vous aurez besoin du DNS public de l'instance Amazon EC2.

Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

Dans le volet de navigation Amazon EC2, sous **Auto Scaling**, choisissez **Auto Scaling Groups**, puis choisissez l'**CodeDeployDemo-AS-Group**entrée.

**Dans l'onglet Instances**, choisissez l'ID d'instance Amazon EC2 dans la liste.

Sur la page **Instances**, dans l'onglet **Description**, notez la valeur **DNS public**. Elle doit se présenter comme suit : **ec2-01-234-567-890.compute-1.amazonaws.com**

À l'aide d'un navigateur Web, affichez la SimpleDemoApp révision déployée sur cette instance Amazon EC2, à l'aide d'une URL comme celle-ci :

```
http://ec2-01-234-567-890.compute-1.amazonaws.com
```

Si vous voyez la page de félicitations, cela signifie que vous avez réussi CodeDeploy à déployer une révision sur une seule instance Amazon EC2 dans un groupe Auto Scaling \$1

Ensuite, vous ajoutez une instance Amazon EC2 au groupe Auto Scaling. Une fois qu'Amazon EC2 Auto Scaling aura ajouté l' CodeDeploy instance Amazon EC2, votre révision sera déployée sur la nouvelle instance Amazon EC2.

# Étape 4 : augmenter le nombre d'instances Amazon EC2 dans le groupe Auto Scaling
<a name="tutorials-auto-scaling-group-scale-up"></a>

Au cours de cette étape, vous demandez au groupe Auto Scaling de créer une instance Amazon EC2 supplémentaire. Une fois qu'Amazon EC2 Auto Scaling a créé l'instance CodeDeploy , y déploie votre révision.

**Topics**
+ [Pour augmenter le nombre d'instances Amazon EC2 dans le groupe Auto Scaling (CLI)](#tutorials-auto-scaling-group-scale-up-cli)
+ [Pour augmenter le nombre d'instances Amazon EC2 dans le groupe de déploiement (console)](#tutorials-auto-scaling-group-scale-up-console)

## Pour augmenter le nombre d'instances Amazon EC2 dans le groupe Auto Scaling (CLI)
<a name="tutorials-auto-scaling-group-scale-up-cli"></a>

1. Appelez la **update-auto-scaling-group** commande pour augmenter le nombre d'instances Amazon EC2 dans le groupe Auto Scaling nommé **CodeDeployDemo-AS-Group** de un à deux.

   Sur les machines Linux, macOS ou Unix locales :

   ```
   aws autoscaling update-auto-scaling-group \
     --auto-scaling-group-name CodeDeployDemo-AS-Group \
     --min-size 2 \
     --max-size 2 \
     --desired-capacity 2
   ```

   Sur les machines Windows locales :

   ```
   aws autoscaling update-auto-scaling-group --auto-scaling-group-name CodeDeployDemo-AS-Group --min-size 2 --max-size 2 --desired-capacity 2
   ```

1. Assurez-vous que le groupe Auto Scaling dispose désormais de deux instances Amazon EC2. Appelez la commande **describe-auto-scaling-groups** sur **CodeDeployDemo-AS-Group** :

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names CodeDeployDemo-AS-Group --query "AutoScalingGroups[0].Instances[*].[HealthStatus, LifecycleState]" --output text
   ```

   Ne continuez pas tant que les deux valeurs retournées n'affichent pas `Healthy` et `InService`.

## Pour augmenter le nombre d'instances Amazon EC2 dans le groupe de déploiement (console)
<a name="tutorials-auto-scaling-group-scale-up-console"></a>

1. Dans la barre de navigation d'Amazon EC2, sous **Auto Scaling**, choisissez **Auto Scaling Groups**, puis choisissez. **CodeDeployDemo-AS-Group**

1. Sélectionnez **Actions**, puis **Edit** (Modifier).

1. Dans l'onglet **Détails**, dans les zones **Souhaitée**, **Min** et **Max**, tapez **2**, puis choisissez **Enregistrer**.

1. Choisissez l'onglet **Instances**. La nouvelle instance Amazon EC2 doit apparaître dans la liste. (Si l'instance n'apparaît pas, vous pouvez être amené à choisir le bouton **Actualiser** plusieurs fois.) Ne poursuivez pas tant que la valeur de n'**InService**apparaît pas dans la colonne **Lifecycle** et que la valeur de **Healthy** n'apparaît pas dans la colonne **Health Status**.

# Étape 5 : Vérifiez à nouveau vos résultats
<a name="tutorials-auto-scaling-group-reverify"></a>

Au cours de cette étape, vous allez vérifier si la SimpleDemoApp révision a CodeDeploy été installée sur la nouvelle instance du groupe Auto Scaling.

**Topics**
+ [Pour vérifier les résultats de déploiement automatique (interface CLI)](#tutorials-auto-scaling-group-reverify-cli)
+ [Pour vérifier les résultats de déploiement automatique (console)](#tutorials-auto-scaling-group-reverify-console)

## Pour vérifier les résultats de déploiement automatique (interface CLI)
<a name="tutorials-auto-scaling-group-reverify-cli"></a>

1. Avant d'appeler la commande **get-deployment**, vous avez besoin de l'ID du déploiement automatique. Pour obtenir l'ID, appelez la commande **list-deployments** sur le l'application nommée **SimpleDemoApp** et le groupe de déploiement nommé **SimpleDemoDG** :

   ```
   aws deploy list-deployments --application-name SimpleDemoApp --deployment-group-name SimpleDemoDG --query "deployments" --output text
   ```

   Il devrait y avoir deux déploiements IDs. Utilisez celui que vous n'avez pas encore utilisé dans un appel à la commande **get-deployment** :

   ```
   aws deploy get-deployment --deployment-id deployment-id --query "deploymentInfo.[status, creator]" --output text
   ```

   Outre l'état du déploiement, vous devriez le voir `autoScaling` dans le résultat de la commande. (`autoScaling`signifie qu'Amazon EC2 Auto Scaling a créé le déploiement.) 

   Ne continuez pas tant que l'état du déploiement n'affiche pas `Succeeded`.

1. Avant d'appeler la **describe-instances** commande, vous aurez besoin de l'ID de la nouvelle instance Amazon EC2. Pour obtenir cet ID, effectuez un autre appel de la commande **describe-auto-scaling-groups** sur **CodeDeployDemo-AS-Group** :

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names CodeDeployDemo-AS-Group --query "AutoScalingGroups[0].Instances[*].InstanceId" --output text
   ```

   Maintenant, appelez la commande **describe-instances** :

   ```
   aws ec2 describe-instances --instance-id instance-id --query "Reservations[0].Instances[0].PublicDnsName" --output text
   ```

   Dans le résultat de la **describe-instances** commande, notez le DNS public de la nouvelle instance Amazon EC2.

1. À l'aide d'un navigateur Web, affichez la `SimpleDemoApp` révision déployée sur cette instance Amazon EC2, à l'aide d'une URL comme celle-ci :

   ```
   http://ec2-01-234-567-890.compute-1.amazonaws.com
   ```

   Si la page de félicitations apparaît, cela signifie que vous avez CodeDeploy l'habitude de déployer une révision d'une instance Amazon EC2 agrandie dans un groupe Auto Scaling \$1

## Pour vérifier les résultats de déploiement automatique (console)
<a name="tutorials-auto-scaling-group-reverify-console"></a>

1. Connectez-vous à la CodeDeploy console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codedeploy.](https://console.aws.amazon.com/codedeploy)
**Note**  
Connectez-vous avec le même utilisateur que celui que vous avez configuré[Commencer avec CodeDeploy](getting-started-codedeploy.md).

1. Dans le volet de navigation, développez **Deploy**, puis choisissez **Deployments.**

   

1. Choisissez l'ID de déploiement du déploiement créé par Amazon EC2 Auto Scaling.

   .

1.  La page **Déploiement** affiche les informations sur le déploiement. Normalement, vous devez créer un déploiement vous-même, mais Amazon EC2 Auto Scaling en a créé un en votre nom pour déployer votre révision sur la nouvelle instance Amazon EC2.

1. Une fois que la mention **Réussi** est affichée en haut de la page, vérifiez les résultats sur l'instance. Tout d'abord, vous devez obtenir le DNS public de l'instance :

1. Dans le volet de navigation Amazon EC2, sous **Auto Scaling**, choisissez **Auto Scaling Groups**, puis choisissez l'**CodeDeployDemo-AS-Group**entrée.

1. **Dans l'onglet Instances**, choisissez l'ID de la nouvelle instance Amazon EC2.

1. Sur la page **Instances**, dans l'onglet **Description**, notez la valeur **DNS public**. Elle doit se présenter comme suit : **ec2-01-234-567-890.compute-1.amazonaws.com**

Affichez la révision `SimpleDemoApp` déployée sur l'instance à l'aide d'une URL similaire à la suivante :

```
http://ec2-01-234-567-890.compute-1.amazonaws.com
```

Si la page de félicitations apparaît, cela signifie que vous avez CodeDeploy l'habitude de déployer une révision d'une instance Amazon EC2 agrandie dans un groupe Auto Scaling \$1

# Étape 6 : Nettoyer
<a name="tutorials-auto-scaling-group-clean-up"></a>

Au cours de cette étape, vous allez supprimer le groupe Auto Scaling afin d'éviter des frais permanents pour les ressources que vous avez utilisées au cours de ce didacticiel. Vous pouvez éventuellement supprimer les enregistrements des composants de configuration et de CodeDeploy déploiement d'Auto Scaling.

**Topics**
+ [Pour nettoyer les ressources (interface CLI)](#tutorials-auto-scaling-group-clean-up-cli)
+ [Pour nettoyer les ressources (console)](#tutorials-auto-scaling-group-clean-up-console)

## Pour nettoyer les ressources (interface CLI)
<a name="tutorials-auto-scaling-group-clean-up-cli"></a>

1. Supprimez le groupe Auto Scaling en appelant la **delete-auto-scaling-group** commande against**CodeDeployDemo-AS-Group**. Cela va également résilier les instances Amazon EC2. 

   ```
   aws autoscaling delete-auto-scaling-group --auto-scaling-group-name CodeDeployDemo-AS-Group --force-delete
   ```

1. Supprimez éventuellement le modèle de lancement Auto Scaling en appelant la **delete-launch-template** commande correspondant à la configuration de lancement nommée **CodeDeployDemo-AS-Launch-Template** :

   ```
   aws ec2 delete-launch-template --launch-template-name CodeDeployDemo-AS-Launch-Template
   ```

1. Vous pouvez éventuellement supprimer l'application CodeDeploy en appelant la **delete-application** commande correspondant à l'application nommée**SimpleDemoApp**. Cela supprime également tous les enregistrements de révision, de groupe de déploiement et de déploiement associés. 

   ```
   aws deploy delete-application --application-name SimpleDemoApp
   ```

1. Pour supprimer l'association Systems Manager State Manager, appelez la **delete-association** commande.

   ```
   aws ssm delete-association --assocation-id association-id
   ```

   Vous pouvez l'obtenir *association-id* en appelant la **describe-association** commande.

   ```
   aws ssm describe-association --name AWS-ConfigureAWSPackage --targets Key=tag:Name,Values=CodeDeployDemo
   ```

## Pour nettoyer les ressources (console)
<a name="tutorials-auto-scaling-group-clean-up-console"></a>

Pour supprimer le groupe Auto Scaling, qui met également fin aux instances Amazon EC2 :

1. 

   Connectez-vous à la console Amazon EC2 AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Dans le volet de navigation Amazon EC2, sous **Auto Scaling**, choisissez **Auto Scaling Groups**, puis choisissez l'**CodeDeployDemo-AS-Group**entrée.

1. Choisissez **Actions**, **Supprimer**, puis **Oui, supprimer**.

(Facultatif) Pour supprimer le modèle de lancement :

1.  Dans la barre de navigation, sous **Auto Scaling**, choisissez **Launch Configurations**, puis choisissez**CodeDeployDemo-AS-Launch-Template**.

1. Choisissez **Actions**, **Supprimer la configuration de lancement**, puis **Oui, supprimer**.

1. Vous pouvez éventuellement supprimer l'application de CodeDeploy. Cela supprime également tous les enregistrements de révision, de groupe de déploiement et de déploiement associés. Ouvrez la CodeDeploy console à l'adresse [https://console.aws.amazon.com/codedeploy.](https://console.aws.amazon.com/codedeploy)

1. Connectez-vous à la CodeDeploy console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codedeploy.](https://console.aws.amazon.com/codedeploy)
**Note**  
Connectez-vous avec le même utilisateur que celui que vous avez configuré[Commencer avec CodeDeploy](getting-started-codedeploy.md).

   Dans le volet de navigation, développez **Deploy**, puis choisissez **Applications**.

   

1. Dans la liste des applications, choisissez **SimpleDemoApp**.

1. Sur la page **Détails de l'application**, choisissez **Supprimer l'application**.

1. Lorsque vous y êtes invité, tapez **Delete**, puis choisissez **Supprimer**. 

Pour supprimer l'association Systems Manager State Manager, procédez comme suit :

1. Ouvrez la AWS Systems Manager console dans https://console.aws.amazon.com /systems-manager.

1. Dans le volet de navigation, sélectionnez **State Manager**.

1. Sélectionnez l'association que vous avez créée et choisissez **Delete (Supprimer)**.

# Tutoriel : CodeDeploy À utiliser pour déployer une application à partir de GitHub
<a name="tutorials-github"></a>

Dans ce didacticiel, vous pouvez CodeDeploy déployer un exemple de révision GitHub d'application depuis une seule instance Amazon EC2 exécutant Amazon Linux, une seule instance Red Hat Enterprise Linux (RHEL) ou une seule instance Windows Server. Pour plus d'informations sur GitHub l'intégration avec CodeDeploy, consultez[Intégration CodeDeploy avec GitHub](integrations-partners-github.md).

**Note**  
Vous pouvez également l'utiliser CodeDeploy pour déployer une révision d'application depuis GitHub une instance de serveur Ubuntu. Vous pouvez utiliser l'exemple de révision décrit [Étape 2 : Création d'un exemple de révision d'application](tutorials-on-premises-instance-2-create-sample-revision.md) dans[Tutoriel : Déployer une application sur une instance locale avec CodeDeploy (Windows Server, Ubuntu Server ou Red Hat Enterprise Linux)](tutorials-on-premises-instance.md), ou vous pouvez créer une révision compatible avec une instance de serveur Ubuntu et CodeDeploy. Pour créer votre propre révision, consultez les pages [Planifier une révision pour CodeDeploy](application-revisions-plan.md) et [Ajouter un fichier de spécification d'application à une révision pour CodeDeploy](application-revisions-appspec-file.md).

**Topics**
+ [Conditions préalables](tutorials-github-prerequisites.md)
+ [Étape 1 : créer un GitHub compte](tutorials-github-create-github-account.md)
+ [Étape 2 : Création d'un GitHub référentiel](tutorials-github-create-github-repository.md)
+ [Étape 3 : télécharger un exemple d'application dans votre GitHub référentiel](tutorials-github-upload-sample-revision.md)
+ [Étape 4 : provisionner une instance](tutorials-github-provision-instance.md)
+ [Étape 5 : Création d'une application et d'un groupe de déploiement](tutorials-github-create-application.md)
+ [Étape 6 : Déployer l'application sur l'instance](tutorials-github-deploy-application.md)
+ [Étape 7 : Surveiller et vérifier le déploiement](tutorials-github-verify.md)
+ [Étape 8 : nettoyer](tutorials-github-clean-up.md)

# Conditions préalables
<a name="tutorials-github-prerequisites"></a>

Avant de commencer ce didacticiel, procédez comme suit :
+ Installez Git sur votre machine locale. Pour installer Git, consultez la section [Téléchargements de Git](http://git-scm.com/downloads).
+ Suivez les étapes de la rubrique [Commencer avec CodeDeploy](getting-started-codedeploy.md), y compris l'installation et la configuration de l' AWS CLI. Cela est particulièrement important si vous souhaitez utiliser le AWS CLI pour déployer une révision depuis GitHub l'instance.

# Étape 1 : créer un GitHub compte
<a name="tutorials-github-create-github-account"></a>

Vous aurez besoin d'un GitHub compte pour créer un GitHub dépôt dans lequel la révision sera stockée. Si vous avez déjà un GitHub compte, passez directement à[Étape 2 : Création d'un GitHub référentiel](tutorials-github-create-github-repository.md).

1. Accédez à [https://github.com/join](https://github.com).

1. Tapez un nom d'utilisateur, votre adresse e-mail et un mot de passe.

1. Choisissez **S'inscrire pour GitHub**, puis suivez les instructions.

# Étape 2 : Création d'un GitHub référentiel
<a name="tutorials-github-create-github-repository"></a>

Vous aurez besoin d'un GitHub dépôt pour stocker la révision.

Si vous possédez déjà un GitHub dépôt, veillez à le remplacer par son nom **CodeDeployGitHubDemo** tout au long de ce didacticiel, puis passez à[Étape 3 : télécharger un exemple d'application dans votre GitHub référentiel](tutorials-github-upload-sample-revision.md). 

1. Sur la [page d'GitHub accueil](https://github.com/dashboard), effectuez l'une des opérations suivantes :
   + Dans **Your repositories**, choisissez **New repository**.
   + Dans la barre de navigation, choisissez **Create new** (**\$1**), puis **New repository**.

1. Sur la page **Create a new repository**, procédez comme suit :
   + Dans la zone de texte **Nom du référentiel**, entrez **CodeDeployGitHubDemo**.
   + Sélectionnez **Public**.
**Note**  
La sélection de l'option par défaut **Public** signifie que tout le monde peut voir ce référentiel. Vous pouvez sélectionner l'option **Private** pour limiter les personnes autorisées à voir et à valider le référentiel. 
   + Décochez la case **Initialize this repository with a README**. Vous allez créer un fichier `README.md` manuellement à la place, à l'étape suivante.
   + Choisissez **Créer un référentiel**.

1. Suivez les instructions pour que votre type d'ordinateur local puisse utiliser la ligne de commande pour créer le référentiel.
**Note**  
Si vous avez activé l'authentification à deux facteurs GitHub, assurez-vous de saisir votre jeton d'accès personnel au lieu de votre mot de passe de GitHub connexion si vous y êtes invité. Pour plus d'informations, consultez la section [Fourniture de votre code d'authentification 2FA](https://help.github.com/articles/providing-your-2fa-authentication-code/).

**Sur les machines Linux, macOS ou Unix locales :**

1. Depuis le terminal, exécutez les commandes suivantes, une par une, où se *user-name* trouve votre nom GitHub d'utilisateur :

   ```
   mkdir /tmp/CodeDeployGitHubDemo
   ```

   ```
   cd /tmp/CodeDeployGitHubDemo
   ```

   ```
   touch README.md
   ```

   ```
   git init
   ```

   ```
   git add README.md
   ```

   ```
   git commit -m "My first commit"
   ```

   ```
   git remote add origin https://github.com/user-name/CodeDeployGitHubDemo.git
   ```

   ```
   git push -u origin master
   ```

1. Laissez le terminal ouvert à l'emplacement `/tmp/CodeDeployGitHubDemo`.

**Sur les machines Windows locales :**

1. A partir d'une invite de commandes exécutée avec des autorisations d'administrateur, exécutez les commandes suivantes, l'une après l'autre :

   ```
   mkdir c:\temp\CodeDeployGitHubDemo
   ```

   ```
   cd c:\temp\CodeDeployGitHubDemo
   ```

   ```
   notepad README.md
   ```

1. Dans le Bloc-notes, enregistrez le fichier `README.md`. Fermez le Bloc-notes. Exécutez les commandes suivantes, une par une, en indiquant *user-name* votre nom GitHub d'utilisateur :

   ```
   git init
   ```

   ```
   git add README.md
   ```

   ```
   git commit -m "My first commit"
   ```

   ```
   git remote add origin https://github.com/user-name/CodeDeployGitHubDemo.git
   ```

   ```
   git push -u origin master
   ```

1. Laissez l'invite de commandes ouverte à l'emplacement `c:\temp\CodeDeployGitHubDemo`.

# Étape 3 : télécharger un exemple d'application dans votre GitHub référentiel
<a name="tutorials-github-upload-sample-revision"></a>

Au cours de cette étape, vous allez copier un exemple de révision depuis un compartiment Amazon S3 public vers votre GitHub référentiel. (Pour plus de simplicité, les exemples de révisions fournis pour ce didacticiel sont des pages web uniques.)

**Note**  
Si vous utilisez l'une de vos révisions à la place de notre exemple de révision, votre révision doit :   
suivre les instructions des rubriques [Planifier une révision pour CodeDeploy](application-revisions-plan.md) et [Ajouter un fichier de spécification d'application à une révision pour CodeDeploy](application-revisions-appspec-file.md) ;
utiliser le type d'instance correspondant ;
Soyez accessible depuis votre GitHub tableau de bord.
Si votre révision répond à ces exigences, passez à l'[Étape 5 : Création d'une application et d'un groupe de déploiement](tutorials-github-create-application.md).  
Si vous déployez sur une instance Ubuntu Server, vous devrez télécharger dans votre GitHub référentiel une révision compatible avec une instance Ubuntu Server et CodeDeploy. Pour plus d’informations, consultez [Planifier une révision pour CodeDeploy](application-revisions-plan.md) et [Ajouter un fichier de spécification d'application à une révision pour CodeDeploy](application-revisions-appspec-file.md).

**Topics**
+ [Envoyer un exemple de révision depuis une machine Linux, macOS ou Unix locale](#tutorials-github-upload-sample-revision-unixes)
+ [Transmission de type push d'un exemple de révision à partir d'une machine Windows locale](#tutorials-github-upload-sample-revision-windows)

## Envoyer un exemple de révision depuis une machine Linux, macOS ou Unix locale
<a name="tutorials-github-upload-sample-revision-unixes"></a>

Le terminal étant toujours ouvert, par exemple à l'emplacement `/tmp/CodeDeployGitHubDemo`, exécutez les commandes suivantes l'une après l'autre : 

**Note**  
Si vous prévoyez de le déployer sur une instance Windows Server, `SampleApp_Windows.zip` remplacez-le par `SampleApp_Linux.zip` dans les commandes.

```
(Amazon S3 copy command)
```

```
unzip SampleApp_Linux.zip
```

```
rm SampleApp_Linux.zip
```

 

```
git add .
```

```
git commit -m "Added sample app"
```

```
git push
```

Où se *(Amazon S3 copy command)* trouve l'un des éléments suivants : 
+ `aws s3 cp s3://aws-codedeploy-us-east-2/samples/latest/SampleApp_Linux.zip . --region us-east-2`pour la région de l'est des États-Unis (Ohio)
+ `aws s3 cp s3://aws-codedeploy-us-east-1/samples/latest/SampleApp_Linux.zip . --region us-east-1`pour la région de l'est des États-Unis (Virginie du Nord)
+ `aws s3 cp s3://aws-codedeploy-us-west-1/samples/latest/SampleApp_Linux.zip . --region us-west-1` pour la région USA Ouest (Californie du Nord)
+ `aws s3 cp s3://aws-codedeploy-us-west-2/samples/latest/SampleApp_Linux.zip . --region us-west-2`pour la région de l'ouest des États-Unis (Oregon)
+ `aws s3 cp s3://aws-codedeploy-ca-central-1/samples/latest/SampleApp_Linux.zip . --region ca-central-1`pour la région du Canada (Centre)
+ `aws s3 cp s3://aws-codedeploy-eu-west-1/samples/latest/SampleApp_Linux.zip . --region eu-west-1`pour la région Europe (Irlande) 
+ `aws s3 cp s3://aws-codedeploy-eu-west-2/samples/latest/SampleApp_Linux.zip . --region eu-west-2`pour la région Europe (Londres) 
+ `aws s3 cp s3://aws-codedeploy-eu-west-3/samples/latest/SampleApp_Linux.zip . --region eu-west-3`pour la région Europe (Paris) 
+ `aws s3 cp s3://aws-codedeploy-eu-central-1/samples/latest/SampleApp_Linux.zip . --region eu-central-1`pour la région Europe (Francfort)
+ `aws s3 cp s3://aws-codedeploy-il-central-1/samples/latest/SampleApp_Linux.zip . --region il-central-1`pour la région d'Israël (Tel Aviv)
+ `aws s3 cp s3://aws-codedeploy-ap-east-1/samples/latest/SampleApp_Linux.zip . --region ap-east-1`pour la région Asie-Pacifique (Hong Kong)
+ `aws s3 cp s3://aws-codedeploy-ap-northeast-1/samples/latest/SampleApp_Linux.zip . --region ap-northeast-1`pour la région Asie-Pacifique (Tokyo)
+ `aws s3 cp s3://aws-codedeploy-ap-northeast-2/samples/latest/SampleApp_Linux.zip . --region ap-northeast-2`pour la région Asie-Pacifique (Séoul)
+ `aws s3 cp s3://aws-codedeploy-ap-southeast-1/samples/latest/SampleApp_Linux.zip . --region ap-southeast-1`pour la région Asie-Pacifique (Singapour)
+ `aws s3 cp s3://aws-codedeploy-ap-southeast-2/samples/latest/SampleApp_Linux.zip . --region ap-southeast-2`pour la région Asie-Pacifique (Sydney)
+ `aws s3 cp s3://aws-codedeploy-ap-southeast-4/samples/latest/SampleApp_Linux.zip . --region ap-southeast-4`pour la région Asie-Pacifique (Melbourne)
+ `aws s3 cp s3://aws-codedeploy-ap-south-1/samples/latest/SampleApp_Linux.zip . --region ap-south-1`pour la région Asie-Pacifique (Mumbai)
+ `aws s3 cp s3://aws-codedeploy-sa-east-1/samples/latest/SampleApp_Linux.zip . --region sa-east-1`pour la région Amérique du Sud (São Paulo)

## Transmission de type push d'un exemple de révision à partir d'une machine Windows locale
<a name="tutorials-github-upload-sample-revision-windows"></a>

 L'invite de commande étant toujours ouvert, par exemple à l'emplacement `c:\temp\CodeDeployGitHubDemo`, exécutez les commandes suivantes l'une après l'autre :

**Note**  
Si vous prévoyez de déployer sur une instance Amazon Linux ou RHEL, remplacez-la par `SampleApp_Windows.zip` in dans `SampleApp_Linux.zip` les commandes.

```
(Amazon S3 copy command)
```

Décompressez le contenu du fichier zip `the` directement dans le répertoire local (par exemple `c:\temp\CodeDeployGitHubDemo`), et non dans un nouveau sous-répertoire.

```
git add .
```

```
git commit -m "Added sample app"
```

```
git push
```

Où se *(Amazon S3 copy command)* trouve l'un des éléments suivants : 
+ `aws s3 cp s3://aws-codedeploy-us-east-2/samples/latest/SampleApp_Windows.zip . --region us-east-2`pour la région de l'est des États-Unis (Ohio)
+ `aws s3 cp s3://aws-codedeploy-us-east-1/samples/latest/SampleApp_Windows.zip . --region us-east-1`pour la région de l'est des États-Unis (Virginie du Nord)
+ `aws s3 cp s3://aws-codedeploy-us-west-1/samples/latest/SampleApp_Windows.zip . --region us-west-1` pour la région USA Ouest (Californie du Nord)
+ `aws s3 cp s3://aws-codedeploy-us-west-2/samples/latest/SampleApp_Windows.zip . --region us-west-2`pour la région de l'ouest des États-Unis (Oregon)
+ `aws s3 cp s3://aws-codedeploy-ca-central-1/samples/latest/SampleApp_Windows.zip . --region ca-central-1`pour la région du Canada (Centre)
+ `aws s3 cp s3://aws-codedeploy-eu-west-1/samples/latest/SampleApp_Windows.zip . --region eu-west-1`pour la région Europe (Irlande)
+ `aws s3 cp s3://aws-codedeploy-eu-west-2/samples/latest/SampleApp_Windows.zip . --region eu-west-2`pour la région Europe (Londres)
+ `aws s3 cp s3://aws-codedeploy-eu-west-3/samples/latest/SampleApp_Windows.zip . --region eu-west-3`pour la région Europe (Paris)
+ `aws s3 cp s3://aws-codedeploy-eu-central-1/samples/latest/SampleApp_Windows.zip . --region eu-central-1`pour la région Europe (Francfort)
+ `aws s3 cp s3://aws-codedeploy-il-central-1/samples/latest/SampleApp_Windows.zip . --region il-central-1`pour la région d'Israël (Tel Aviv)
+ `aws s3 cp s3://aws-codedeploy-ap-east-1/samples/latest/SampleApp_Windows.zip . --region ap-east-1`pour la région Asie-Pacifique (Hong Kong)
+ `aws s3 cp s3://aws-codedeploy-ap-northeast-1/samples/latest/SampleApp_Windows.zip . --region ap-northeast-1`pour la région Asie-Pacifique (Tokyo)
+ `aws s3 cp s3://aws-codedeploy-ap-northeast-2/samples/latest/SampleApp_Windows.zip . --region ap-northeast-2`pour la région Asie-Pacifique (Séoul)
+ `aws s3 cp s3://aws-codedeploy-ap-southeast-1/samples/latest/SampleApp_Windows.zip . --region ap-southeast-1`pour la région Asie-Pacifique (Singapour)
+ `aws s3 cp s3://aws-codedeploy-ap-southeast-2/samples/latest/SampleApp_Windows.zip . --region ap-southeast-2`pour la région Asie-Pacifique (Sydney)
+ `aws s3 cp s3://aws-codedeploy-ap-southeast-4/samples/latest/SampleApp_Windows.zip . --region ap-southeast-4`pour la région Asie-Pacifique (Melbourne)
+ `aws s3 cp s3://aws-codedeploy-ap-south-1/samples/latest/SampleApp_Windows.zip . --region ap-south-1`pour la région Asie-Pacifique (Mumbai)
+ `aws s3 cp s3://aws-codedeploy-sa-east-1/samples/latest/SampleApp_Windows.zip . --region sa-east-1`pour la région Amérique du Sud (São Paulo)

Pour transférer votre propre révision vers une instance du serveur Ubuntu, copiez-la dans votre dépôt local, puis appelez le système suivant :

```
git add .
git commit -m "Added Ubuntu app"
git push
```

# Étape 4 : provisionner une instance
<a name="tutorials-github-provision-instance"></a>

Au cours de cette étape, vous allez créer ou configurer l'instance sur laquelle vous allez déployer l'exemple d'application. Vous pouvez effectuer un déploiement sur une instance Amazon EC2 ou une instance sur site qui exécute l'un des systèmes d'exploitation pris en charge par. CodeDeploy Pour plus d'informations, consultez [Systèmes d'exploitation pris en charge par l' CodeDeploy agent](codedeploy-agent.md#codedeploy-agent-supported-operating-systems). (Si une instance est déjà configurée pour être utilisée dans CodeDeploy des déploiements, passez à l'étape suivante.)

**Pour provisionner une instance**

1. Suivez les instructions [Lancer une instance Amazon EC2 (console)](instances-ec2-create.md#instances-ec2-create-console) pour provisionner une instance.

1. Lorsque vous lancez l'instance, n'oubliez pas de spécifier une balise sur la page **Ajouter des balises**. Pour plus de détails sur la façon de spécifier la balise, consultez[Lancer une instance Amazon EC2 (console)](instances-ec2-create.md#instances-ec2-create-console).

**Pour vérifier que l' CodeDeploy agent est en cours d'exécution sur l'instance**
+ Suivez les instructions [Vérifiez que l' CodeDeploy agent est en cours d'exécution](codedeploy-agent-operations-verify.md) pour vérifier que l'agent est en cours d'exécution.

Après avoir correctement provisionné l'instance et vérifié que l' CodeDeploy agent est en cours d'exécution, passez à l'étape suivante.

# Étape 5 : Création d'une application et d'un groupe de déploiement
<a name="tutorials-github-create-application"></a>

Au cours de cette étape, vous allez utiliser la CodeDeploy console ou le AWS CLI pour créer une application et un groupe de déploiement à utiliser pour déployer l'exemple de révision depuis votre GitHub référentiel.



## Création d'une application et d'un groupe de déploiement (console)
<a name="tutorials-github-create-application-console"></a>

1. Connectez-vous à la CodeDeploy console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codedeploy.](https://console.aws.amazon.com/codedeploy)
**Note**  
Connectez-vous avec le même utilisateur que celui que vous avez configuré[Commencer avec CodeDeploy](getting-started-codedeploy.md).

1. Dans le volet de navigation, développez **Deploy**, puis choisissez **Applications**.

   

1. Choisissez **Créer une application**, puis sélectionnez **Application personnalisée**.

1. Dans **Nom de l'application**, saisissez **CodeDeployGitHubDemo-App**.

1. Dans **Plateforme informatique**, choisissez **EC2/Sur site**.

1. Choisissez **Créer une application**.

1. Dans l'onglet **Groupes de déploiement**, choisissez **Créer un groupe de déploiement**.

1. Dans **Nom du groupe de déploiement**, saisissez **CodeDeployGitHubDemo-DepGrp**.

1. Dans **Rôle de service**, choisissez le nom du rôle de CodeDeploy service que vous avez créé dans [Créer un rôle de service pour CodeDeploy](getting-started-create-service-role.md).

1. Dans **Type de déploiement**, choisissez **Sur place**.

1. Dans **Configuration de l'environnement**, en fonction du type d'instance que vous utilisez, choisissez les instances **Amazon EC2 ou les instances** **sur** site. Dans les zones **Clé** et **Valeur**, entrez la clé et la valeur de la balise d'instance qui a été appliquée à votre instance à l'[Étape 4 : provisionner une instance](tutorials-github-provision-instance.md).

1. Dans **Configuration du déploiement**, choisissez **CodeDeployDefault. AllatOnce**.

1. Dans **Équilibreur de charge**, désactivez **Activer l'équilibrage de charge**.

1. Développez **Avancé**.

1. Dans **Alarmes**, sélectionnez **Ignorer les alarmes**.

1. Choisissez **Créer un groupe de déploiement** et passez à l'étape suivante. 

## Création d'une application et d'un groupe de déploiement (interface de ligne de commande)
<a name="tutorials-github-create-application-cli"></a>

1. Appelez la commande **create-application** pour créer une application dans CodeDeploy nommée `CodeDeployGitHubDemo-App` :

   ```
   aws deploy create-application --application-name CodeDeployGitHubDemo-App
   ```

1. Appelez la commande **create-deployment-group** pour créer un groupe de déploiement nommé `CodeDeployGitHubDemo-DepGrp` :
   + Si vous effectuez un déploiement sur une instance Amazon EC2, *ec2-tag-key* la clé de balise d'instance Amazon EC2 qui a été appliquée à votre instance Amazon EC2 dans le cadre de. [Étape 4 : provisionner une instance](tutorials-github-provision-instance.md)
   + Si vous effectuez un déploiement sur une instance Amazon EC2, *ec2-tag-value* la valeur de balise d'instance Amazon EC2 qui a été appliquée à votre instance Amazon EC2 dans le cadre de. [Étape 4 : provisionner une instance](tutorials-github-provision-instance.md)
   + Si vous effectuez un déploiement sur une instance locale, *on-premises-tag-key* la clé de balise d'instance locale qui a été appliquée à votre instance sur site fait-elle partie de. [Étape 4 : provisionner une instance](tutorials-github-provision-instance.md)
   + Si vous effectuez un déploiement sur une instance locale, *on-premises-tag-value* la valeur de balise d'instance locale qui a été appliquée à votre instance sur site fait-elle partie de. [Étape 4 : provisionner une instance](tutorials-github-provision-instance.md)
   + *service-role-arn*est l'ARN du rôle de service que vous avez créé dans [Créer un rôle de service pour CodeDeploy](getting-started-create-service-role.md). (Suivez les instructions de [Obtenez l'ARN du rôle de service (CLI)](getting-started-create-service-role.md#getting-started-get-service-role-cli) pour trouver le nom ARN du rôle de service.)

   ```
   aws deploy create-deployment-group --application-name CodeDeployGitHubDemo-App --ec2-tag-filters Key=ec2-tag-key,Type=KEY_AND_VALUE,Value=ec2-tag-value --on-premises-tag-filters Key=on-premises-tag-key,Type=KEY_AND_VALUE,Value=on-premises-tag-value --deployment-group-name CodeDeployGitHubDemo-DepGrp --service-role-arn service-role-arn
   ```
**Note**  
La [create-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html)commande permet de créer des déclencheurs qui entraînent l'envoi de notifications Amazon SNS aux abonnés du topic concernant des événements spécifiques liés aux déploiements et aux instances. La commande prend également en charge des options permettant d'annuler automatiquement les déploiements et de configurer des alarmes pour arrêter les déploiements lorsque les seuils de surveillance des CloudWatch alarmes d'Amazon sont atteints. Les commandes associées à ces actions ne sont pas incluses dans ce didacticiel.

# Étape 6 : Déployer l'application sur l'instance
<a name="tutorials-github-deploy-application"></a>

Au cours de cette étape, vous devez utiliser la CodeDeploy console ou le AWS CLI pour déployer l'exemple de révision de votre GitHub référentiel vers votre instance. 



## Pour déployer la révision (console)
<a name="tutorials-github-deploy-application-console"></a>

1. Sur la page **Détails du groupe de déploiement**, choisissez **Créer un déploiement**.

1. Dans **Groupe de déploiement**, choisissez **`CodeDeployGitHubDemo-DepGrp`**.

1. Dans **Type de révision**, sélectionnez **GitHub**.

1. Dans **Connect to GitHub**, effectuez l'une des opérations suivantes :
   + Pour créer une connexion entre CodeDeploy les applications et un GitHub compte, déconnectez-vous GitHub dans un onglet de navigateur Web distinct. Dans le **GitHub compte**, entrez un nom pour identifier cette connexion, puis choisissez **Connect to GitHub**. La page Web vous invite CodeDeploy à autoriser l'interaction avec GitHub l'application nommée`CodeDeployGitHubDemo-App`. Passez à l'étape 5.
   + Pour utiliser une connexion que vous avez déjà créée, dans le **GitHubcompte**, sélectionnez son nom, puis choisissez **Connect to GitHub**. Passez à l'étape 7.
   + Pour créer une connexion à un autre GitHub compte, déconnectez-vous GitHub dans un onglet de navigateur Web distinct. Choisissez **Se connecter à un autre GitHub compte**, puis sélectionnez **Connect to GitHub**. Passez à l'étape 5.

1. Suivez les instructions de la page **de connexion** pour vous connecter avec votre GitHub compte.

1. Sur la page **Authorize application**, choisissez **Authorize application**. 

1. Sur la page CodeDeploy **Créer un déploiement**, dans **Nom du référentiel**, entrez le nom GitHub d'utilisateur que vous avez utilisé pour vous connecter, suivi d'une barre oblique (`/`), suivi du nom du référentiel dans lequel vous avez envoyé la révision de votre application (par exemple,***my-github-user-name*/CodeDeployGitHubDemo**).

   Si vous n'êtes pas sûr de la valeur à entrer ou si vous souhaitez spécifier un autre référentiel :

   1. Dans un onglet de navigateur Web distinct, accédez à votre [GitHub tableau de bord](https://github.com/dashboard).

   1. Dans **Your repositories**, placez le pointeur de la souris sur le nom du référentiel cible. Une infobulle apparaît, affichant le nom de l' GitHub utilisateur ou de l'organisation, suivi d'une barre oblique (`/`), puis du nom du référentiel. Entrez cette valeur dans la zone **Nom du référentiel**.
**Note**  
Si le nom du référentiel cible n'apparaît pas dans **Vos référentiels**, utilisez la GitHub zone de **recherche** pour trouver le référentiel cible et le nom de GitHub l'utilisateur ou de l'organisation.

1. Dans le champ **ID de validation**, entrez l'ID du commit associé au transfert de la révision de votre application vers GitHub.

   Si vous n'êtes pas sûr de la valeur à entrer :

   1. Dans un onglet de navigateur Web distinct, accédez à votre [GitHub tableau de bord](https://github.com/dashboard).

   1. Dans **Your repositories**, choisissez **CodeDeployGitHubDemo**.

   1. Dans la liste des validations, recherchez et copiez l'ID de validation associé au push de la révision de votre application vers GitHub. Cet ID contient généralement 40 caractères et se compose de lettres et de chiffres. (N'utilisez pas la version courte de l'ID de validation, qui correspond généralement aux 10 premiers caractères de la version longue.)

   1. Collez l'ID de validation dans la zone **ID de validation**.

1. Choisissez **Déployer** et passez à l'étape suivante. 

## Pour déployer la révision (interface de ligne de commande)
<a name="tutorials-github-deploy-application-cli"></a>

Avant de pouvoir appeler une AWS CLI commande qui interagit GitHub (telle que la **create-deployment** commande que vous appellerez ensuite), vous devez CodeDeploy autoriser l'utilisation de votre compte GitHub utilisateur GitHub pour interagir avec l'`CodeDeployGitHubDemo-App`application. Actuellement, vous devez utiliser la console CodeDeploy pour ce faire.

1. Connectez-vous à la CodeDeploy console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codedeploy.](https://console.aws.amazon.com/codedeploy)
**Note**  
Connectez-vous avec le même utilisateur que celui que vous avez configuré[Commencer avec CodeDeploy](getting-started-codedeploy.md).

1. Dans le volet de navigation, développez **Deploy**, puis choisissez **Applications**.

   

1. Choisissez **CodeDeployGitHubDemo-App**.

1. Sur l'onglet **Déploiements**, choisissez **Créer un déploiement**.
**Note**  
Vous n'allez pas créer un nouveau déploiement. C'est actuellement le seul moyen de donner CodeDeploy l'autorisation d'interagir avec vous GitHub au nom de votre compte GitHub utilisateur.

1. Dans **le groupe de déploiement**, choisissez **CodeDeployGitHubDemo- DepGrp**.

1. Dans **Type de révision**, sélectionnez **GitHub**.

1. Dans **Connect to GitHub**, effectuez l'une des opérations suivantes :
   + Pour créer une connexion entre CodeDeploy les applications et un GitHub compte, déconnectez-vous GitHub dans un onglet de navigateur Web distinct. Dans le **GitHub compte**, tapez un nom pour identifier cette connexion, puis choisissez **Connect to GitHub**. La page Web vous invite CodeDeploy à autoriser l'interaction avec GitHub l'application nommée`CodeDeployGitHubDemo-App`. Passez à l'étape 8.
   + Pour utiliser une connexion que vous avez déjà créée, dans le **GitHubcompte**, sélectionnez son nom, puis choisissez **Connect to GitHub**. Passez à l'étape 10.
   + Pour créer une connexion à un autre GitHub compte, déconnectez-vous GitHub dans un onglet de navigateur Web distinct. Choisissez **Se connecter à un autre GitHub compte**, puis sélectionnez **Connect to GitHub**. Passez à l'étape 8.

1. Suivez les instructions de la page de connexion pour **vous connecter à** l'aide de votre nom GitHub d'utilisateur ou de votre adresse e-mail et de votre mot de passe.

1. Sur la page **Authorize application**, choisissez **Authorize application**. 

1. Sur la page CodeDeploy **Créer un déploiement**, choisissez **Annuler**.

1. Appelez la **create-deployment** commande pour déployer la révision de votre GitHub référentiel vers l'instance, où :
   + *repository*est le nom de votre GitHub compte, suivi d'une barre oblique (`/`), suivi du nom de votre dépôt (`CodeDeployGitHubDemo`), par exemple,. `MyGitHubUserName/CodeDeployGitHubDemo`

     Si vous n'êtes pas sûr de la valeur à utiliser ou si vous souhaitez spécifier un autre référentiel :

     1. Dans un onglet de navigateur Web distinct, accédez à votre [GitHub tableau de bord](https://github.com/dashboard).

     1. Dans **Your repositories**, placez le pointeur de la souris sur le nom du référentiel cible. Une infobulle apparaît, affichant le nom de l' GitHub utilisateur ou de l'organisation, suivi d'une barre oblique (`/`), puis du nom du référentiel. Il s'agit de la valeur à utiliser.
**Note**  
Si le nom du référentiel cible n'apparaît pas dans **Vos référentiels**, utilisez la GitHub zone de **recherche** pour trouver le référentiel cible et le nom de GitHub l'utilisateur ou de l'organisation correspondant.
   + *commit-id*est le commit associé à la version de la révision de l'application que vous avez envoyée à votre dépôt (par exemple,`f835159a...528eb76f`). 

     Si vous n'êtes pas sûr de la valeur à utiliser :

     1. Dans un onglet de navigateur Web distinct, accédez à votre [GitHub tableau de bord](https://github.com/dashboard).

     1. Dans **Your repositories**, choisissez **CodeDeployGitHubDemo**.

     1. Dans la liste des validations, trouvez l'ID de validation associé au push de la révision de votre application vers GitHub. Cet ID contient généralement 40 caractères et se compose de lettres et de chiffres. (N'utilisez pas la version courte de l'ID de validation, qui correspond généralement aux 10 premiers caractères de la version longue.) Utilisez cette valeur.

   Si vous travaillez sur une machine Linux, macOS ou Unix locale :

   ```
   aws deploy create-deployment \
     --application-name CodeDeployGitHubDemo-App \
     --deployment-config-name CodeDeployDefault.OneAtATime \
     --deployment-group-name CodeDeployGitHubDemo-DepGrp \
     --description "My GitHub deployment demo" \
     --github-location repository=repository,commitId=commit-id
   ```

   Si vous travaillez sur une machine Windows locale :

   ```
   aws deploy create-deployment --application-name CodeDeployGitHubDemo-App --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name CodeDeployGitHubDemo-DepGrp --description "My GitHub deployment demo" --github-location repository=repository,commitId=commit-id
   ```

# Étape 7 : Surveiller et vérifier le déploiement
<a name="tutorials-github-verify"></a>

Au cours de cette étape, vous allez utiliser la CodeDeploy console ou le AWS CLI pour vérifier le succès du déploiement. Vous devez utiliser votre navigateur web pour afficher la page web déployée sur l'instance que vous avez créée ou configurée.

**Note**  
Si vous effectuez un déploiement sur une instance Ubuntu Server, utilisez votre propre stratégie de test pour déterminer si la révision déployée fonctionne comme prévu sur l'instance, puis passez à l'étape suivante.

**Pour surveiller et vérifier le déploiement (console)**

1. Dans le volet de navigation, développez **Deploy**, puis choisissez **Deployments.**

   

1. **Dans la liste des déploiements, recherchez la ligne avec une valeur d'**application** de **CodeDeployGitHubDemo-App** et une valeur de **groupe de déploiement** de CodeDeployGitHubDemo -. DepGrp** Si ni **Succeeded (Réussi)**, ni **Failed (Échec)** ne figure dans la colonne **Statut**, choisissez le bouton **Actualiser** régulièrement.

1. Si **Failed (Échec)** s'affiche dans la colonne **Statut**, suivez les instructions de [Afficher les détails de l'instance (console)](instances-view-details.md#instances-view-details-console) pour dépanner le déploiement.

1. Si **Succeeded (Réussi)** s'affiche dans la colonne **Statut**, vous pouvez maintenant vérifier le déploiement via votre navigateur Web. Notre exemple de révision déploie une page Web unique sur l'instance. Si vous effectuez un déploiement sur une instance Amazon EC2, dans votre navigateur Web, accédez à `http://public-dns` l'instance (par exemple,`http://ec2-01-234-567-890.compute-1.amazonaws.com`).

1. Si vous pouvez voir la page Web, vous avez réussi la procédure. Maintenant que vous avez réussi AWS CodeDeploy à déployer une révision depuis GitHub, vous pouvez passer à[Étape 8 : nettoyer](tutorials-github-clean-up.md).

**Pour surveiller et vérifier le déploiement (interface de ligne de commande)**

1. Appelez la commande **list-deployments** pour obtenir l'ID de déploiement de l'application nommée `CodeDeployGitHubDemo-App` et le groupe de déploiement nommé `CodeDeployGitHubDemo-DepGrp` :

   ```
   aws deploy list-deployments --application-name CodeDeployGitHubDemo-App --deployment-group-name CodeDeployGitHubDemo-DepGrp --query "deployments" --output text
   ```

1. Appelez la commande **get-deployment**, en fournissant l'ID du déploiement qui figure dans la sortie de la commande **list-deployments** :

   ```
   aws deploy get-deployment --deployment-id deployment-id --query "deploymentInfo.[status, creator]" --output text
   ```

1. Si **Failed (Échec)** est renvoyé, suivez les instructions de [Afficher les détails de l'instance (console)](instances-view-details.md#instances-view-details-console) pour dépanner le déploiement.

1. Si **Succeeded (Réussi)** est renvoyé, vous pouvez maintenant essayer de vérifier le déploiement par le biais de votre navigateur Web. Notre exemple de révision correspond à une page Web unique déployée sur l'instance. Si vous effectuez un déploiement sur une instance Amazon EC2, vous pouvez consulter cette page dans votre navigateur Web en accédant à `http://public-dns` l'instance Amazon EC2 (par exemple,). `http://ec2-01-234-567-890.compute-1.amazonaws.com`

1. Si vous pouvez voir la page Web, vous avez réussi la procédure. Vous avez utilisé avec succès AWS CodeDeploy le déploiement à partir de votre GitHub référentiel.

# Étape 8 : nettoyer
<a name="tutorials-github-clean-up"></a>

Pour éviter des frais supplémentaires pour les ressources que vous avez utilisées au cours de ce didacticiel, vous devez mettre fin à l'instance Amazon EC2 et aux ressources associées. Éventuellement, vous pouvez supprimer les enregistrements des composants de déploiement CodeDeploy associés à ce didacticiel. Si vous utilisiez un GitHub dépôt uniquement pour ce didacticiel, vous pouvez également le supprimer maintenant.

## Pour supprimer une CloudFormation pile (si vous avez utilisé le CloudFormation modèle pour créer une instance Amazon EC2)
<a name="tutorials-github-clean-up-cloudformation-template"></a>

1. Connectez-vous à la CloudFormation console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Dans la colonne **Piles**, choisissez la pile commençant par `CodeDeploySampleStack`.

1. Sélectionnez **Delete (Supprimer)**.

1. À l'invite, choisissez **Supprimer la pile**. L'instance Amazon EC2 ainsi que le profil d'instance IAM et le rôle de service associés sont supprimés.

## Pour annuler l'inscription et nettoyer manuellement une instance sur site (si vous avez mis en service une instance sur site)
<a name="tutorials-github-clean-up-on-premises-instance"></a>

1. Utilisez la commande AWS CLI pour appeler la commande de [désenregistrement](https://docs.aws.amazon.com/cli/latest/reference/deploy/deregister.html) sur l'instance locale représentée ici par *your-instance-name* et la région associée par : *your-region*

   ```
   aws deploy deregister --instance-name your-instance-name --no-delete-iam-user --region your-region
   ```

1. À partir de l'instance locale, appelez la commande de [désinstallation](https://docs.aws.amazon.com/cli/latest/reference/deploy/uninstall.html) :

   ```
   aws deploy uninstall
   ```

## Pour mettre fin manuellement à une instance Amazon EC2 (si vous avez lancé manuellement une instance Amazon EC2)
<a name="tutorials-github-clean-up-ec2-instance"></a>

1. Connectez-vous à la console Amazon EC2 AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Dans le panneau de navigation, sous **Instances**, choisissez **Instances**.

1. Cochez la case à côté de l'instance Amazon EC2 que vous souhaitez résilier. Dans le menu **Actions**, pointez sur **État de l'instance**, puis choisissez **Terminer**.

1. À l'invite, choisissez **Oui, résilier**. 

## Pour supprimer les enregistrements des composants de CodeDeploy déploiement
<a name="tutorials-github-clean-up-codedeploy-records"></a>

1. Connectez-vous à la CodeDeploy console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codedeploy.](https://console.aws.amazon.com/codedeploy)
**Note**  
Connectez-vous avec le même utilisateur que celui que vous avez configuré[Commencer avec CodeDeploy](getting-started-codedeploy.md).

1. Dans le volet de navigation, développez **Deploy**, puis choisissez **Applications**.

   

1. Choisissez **CodeDeployGitHubDemo-App**.

1. Choisissez **Supprimer l'application**.

1. Lorsque vous y êtes invité, tapez **Delete**, puis choisissez **Supprimer**. 

## Pour supprimer votre GitHub dépôt
<a name="tutorials-github-clean-up-github-repository"></a>

Consultez [la section Suppression d'un dépôt](https://help.github.com/articles/deleting-a-repository/) dans [GitHub l'aide](https://help.github.com).

# Tutoriel : Déployer une application dans Amazon ECS
<a name="tutorial-ecs-deployment"></a>

 Dans ce didacticiel, vous apprendrez à déployer une application dans Amazon ECS à l'aide de CodeDeploy. Vous commencez par une application que vous avez déjà créée et déployée dans Amazon ECS. La première étape consiste à mettre à jour votre application en modifiant son fichier de définition de tâche avec une nouvelle balise. Ensuite, vous devez CodeDeploy déployer la mise à jour. Au cours du déploiement, CodeDeploy installe votre mise à jour dans un nouvel ensemble de tâches de remplacement. Il déplace ensuite le trafic de production de la version d'origine de votre application Amazon ECS, qui se trouve dans son ensemble de tâches d'origine, vers la version mise à jour dans l'ensemble de tâches de remplacement.

 Lors d'un déploiement Amazon ECS, CodeDeploy utilise un équilibreur de charge configuré avec deux groupes cibles et un écouteur de trafic de production. Le schéma suivant montre comment l'équilibreur de charge, l'écouteur de production, les groupes cibles et votre application Amazon ECS sont liés avant le début du déploiement. Ce didacticiel utilise un équilibreur de charge Application Load Balancer. Vous pouvez également utiliser un Network Load Balancer. 

![\[L'Application Load Balancer ou Network Load Balancer, un écouteur de production, deux groupes cibles, un ensemble de tâches et un service Amazon ECS.\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/images/codedeploy-ecs-deployment-with-no-test-listener-step-1.png)


 Après un déploiement réussi, l'écouteur de trafic de production transmet le trafic à votre nouvel ensemble de tâches de remplacement et l'ensemble de tâches d'origine est résilié. Le schéma suivant montre comment vos ressources sont liées après un déploiement réussi. Pour de plus amples informations, veuillez consulter [Que se passe-t-il lors d'un déploiement d'Amazon ECS](deployment-steps-ecs.md#deployment-steps-what-happens). 

![\[Application Load Balancer ou Network Load Balancer, un écouteur de production, deux groupes cibles et un ensemble de tâches de remplacement.\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/images/codedeploy-ecs-deployment-with-no-test-listener-step-5.png)


Pour plus d'informations sur la façon d'utiliser le AWS CLI pour déployer une application dans Amazon ECS, consultez [Tutoriel : Création d'un service à l'aide d'un blue/green déploiement](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-blue-green.html). Pour plus d'informations sur la façon de CodePipeline détecter et de déployer automatiquement les modifications apportées à un service Amazon ECS avec CodeDeploy, consultez [Tutoriel : Création d'un pipeline avec une source Amazon ECR et ECS-to-CodeDeploy déploiement](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-ecs-ecr-codedeploy.html). 

Une fois ce didacticiel terminé, vous pouvez utiliser l' CodeDeploy application et le groupe de déploiement que vous avez créés pour ajouter un test de validation de déploiement[Tutoriel : Déployer un service Amazon ECS avec un test de validation](tutorial-ecs-deployment-with-hooks.md). 

**Topics**
+ [Conditions préalables](tutorial-ecs-prereqs.md)
+ [Étape 1 : mettez à jour votre application Amazon ECS](tutorial-ecs-update-the-ecs-application.md)
+ [Étape 2 : Création du AppSpec fichier](tutorial-ecs-create-appspec-file.md)
+ [Étape 3 : utiliser la CodeDeploy console pour déployer votre application](tutorial-ecs-deployment-deploy.md)
+ [Étape 4 : nettoyer](tutorial-ecs-clean-up.md)

# Conditions préalables
<a name="tutorial-ecs-prereqs"></a>

Pour effectuer ce didacticiel, vous devez d'abord :
+  Effectuer les étapes 2 et 3 de [Commencer avec CodeDeploy](getting-started-codedeploy.md). 
+  Créez un Application Load Balancer configuré avec deux groupes cibles et un écouteur. Pour plus d'informations sur la création d'un équilibreur de charge à l'aide de la console, consultez [Configuration d'un équilibreur de charge, de groupes cibles et d'écouteurs pour les déploiements CodeDeploy Amazon ECS](deployment-groups-create-load-balancer-for-ecs.md). Pour plus d'informations sur la création d'un équilibreur de charge à l'aide de AWS CLI, consultez [Étape 1 : Création d'un équilibreur de charge d'application](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-blue-green.html#create-blue-green-loadbalancer) dans le guide de l'utilisateur d'*Amazon Elastic Container Service*. Lorsque vous créez votre équilibreur de charge, notez les informations suivantes pour ce didacticiel : 
  +  Nom de votre équilibreur de charge. 
  +  Noms de vos groupes cibles. 
  +  Port utilisé par l'écouteur de votre équilibreur de charge. 
+  Créez un cluster et un service Amazon ECS. Pour plus d'informations, consultez les étapes 2, 3 et 4 de la section [Tutoriel : Création d'un service à l'aide d'un blue/green déploiement](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-blue-green.html) dans le *guide de l'utilisateur d'Amazon Elastic Container Service*. Notez les informations suivantes pour ce didacticiel : 
  +  Le nom de votre cluster Amazon ECS. 
  +  L'ARN de la définition de tâche utilisée par votre service Amazon ECS. 
  +  Le nom du conteneur utilisé par votre service Amazon ECS. 
+  Créez un compartiment Amazon S3 pour votre AppSpec fichier. 

# Étape 1 : mettez à jour votre application Amazon ECS
<a name="tutorial-ecs-update-the-ecs-application"></a>

 Dans cette section, vous mettez à jour votre application Amazon ECS avec une nouvelle révision de sa définition de tâche. La révision mise à jour ajoute une nouvelle paire clé/balise. Dans[Étape 3 : utiliser la CodeDeploy console pour déployer votre application](tutorial-ecs-deployment-deploy.md), vous déployez la version mise à jour de votre application Amazon ECS. 

**Pour mettre à jour votre définition de tâche**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1.  Dans le panneau de navigation, sélectionnez **Task Definitions** (Définition des tâches). 

1. Choisissez la définition de tâche utilisée par votre service Amazon ECS.

1. Sélectionnez la révision de définition de tâche, puis choisissez **Créer une nouvelle révision**, **Créer une nouvelle révision**.

1.  Pour ce didacticiel, effectuez une petite mise à jour de la définition de tâche en ajoutant une balise. Au bas de la page, sous **Balises**, créez une nouvelle balise en saisissant une nouvelle paire clé/valeur. 

1.  Choisissez **Créer**. 

   Le numéro de révision de votre définition de tâche est incrémenté d'une unité. 

1.  Choisissez l’onglet **JSON**. Notez ce qui suit, car vous aurez besoin de ces informations à l'étape suivante. 
   +  La valeur de `taskDefinitionArn`. Son format est `arn:aws:ecs:aws-region:account-id:task-definition/task-definition-family:task-definition-revision`. Il s'agit de l'ARN de votre définition de tâche mise à jour. 
   +  Dans l'élément `containerDefinitions`, la valeur de `name`. Il s'agit du nom de votre conteneur. 
   +  Dans l'élément `portMappings`, la valeur de `containerPort`. Il s'agit du port de votre conteneur. 

# Étape 2 : Création du AppSpec fichier
<a name="tutorial-ecs-create-appspec-file"></a>

 Dans cette section, vous créez votre AppSpec fichier et vous le chargez dans le compartiment Amazon S3 que vous avez créé dans la [Conditions préalables](tutorial-ecs-prereqs.md) section. Le AppSpec fichier pour un déploiement Amazon ECS indique la définition de votre tâche, le nom du conteneur et le port du conteneur. Pour plus d’informations, consultez [AppSpec Exemple de fichier pour un déploiement Amazon ECS](reference-appspec-file-example.md#appspec-file-example-ecs) et [AppSpec section « ressources » pour les déploiements Amazon ECS](reference-appspec-file-structure-resources.md#reference-appspec-file-structure-resources-ecs). 

**Pour créer votre AppSpec dossier**

1.  Si vous souhaitez créer votre AppSpec fichier en utilisant YAML, créez un fichier nommé`appspec.yml`. Si vous souhaitez créer votre AppSpec fichier à l'aide de JSON, créez un fichier nommé`appspec.json`. 

1.  Choisissez l'onglet approprié, selon que vous utilisez YAML ou JSON pour votre AppSpec fichier, et copiez son contenu dans le AppSpec fichier que vous venez de créer. Pour la propriété `TaskDefinition`, utilisez l'ARN de définition de tâche que vous avez noté dans la section [Étape 1 : mettez à jour votre application Amazon ECS](tutorial-ecs-update-the-ecs-application.md). 

------
#### [ JSON AppSpec ]

   ```
   {
     "version": 0.0,
     "Resources": [
       {
         "TargetService": {
           "Type": "AWS::ECS::Service",
           "Properties": {
             "TaskDefinition": "arn:aws:ecs:aws-region-id:aws-account-id:task-definition/ecs-demo-task-definition:revision-number",
             "LoadBalancerInfo": {
               "ContainerName": "your-container-name",
               "ContainerPort": your-container-port
             }
           }
         }
       }
     ]
   }
   ```

------
#### [ YAML AppSpec ]

   ```
   version: 0.0
   Resources:
     - TargetService:
         Type: AWS::ECS::Service
         Properties:
           TaskDefinition: "arn:aws:ecs:aws-region-id:aws-account-id:task-definition/ecs-demo-task-definition:revision-number"
           LoadBalancerInfo:
             ContainerName: "your-container-name"
             ContainerPort: your-container-port
   ```

------
**Note**  
 Votre ensemble de tâches de remplacement hérite du sous-réseau, du groupe de sécurité, de la version de la plateforme et des valeurs IP publiques attribuées de votre ensemble de tâches d'origine. Vous pouvez remplacer ces valeurs pour votre ensemble de tâches de remplacement en définissant leurs propriétés facultatives dans votre AppSpec fichier. Pour plus d’informations, consultez [AppSpec section « ressources » pour les déploiements Amazon ECS](reference-appspec-file-structure-resources.md#reference-appspec-file-structure-resources-ecs) et [AppSpec Exemple de fichier pour un déploiement Amazon ECS](reference-appspec-file-example.md#appspec-file-example-ecs). 

1.  Importez votre AppSpec fichier dans le compartiment S3 que vous avez créé comme condition préalable à ce didacticiel. 

# Étape 3 : utiliser la CodeDeploy console pour déployer votre application
<a name="tutorial-ecs-deployment-deploy"></a>

 Dans cette section, vous allez créer une CodeDeploy application et un groupe de déploiement pour déployer votre application mise à jour dans Amazon ECS. Pendant le déploiement, CodeDeploy déplace le trafic de production de votre application vers sa nouvelle version dans un nouvel ensemble de tâches de remplacement. Pour effectuer cette étape, vous avez besoin des éléments suivants : 
+  Le nom de votre cluster Amazon ECS. 
+  Le nom de votre service Amazon ECS. 
+  Le nom de votre Application Load Balancer. 
+  Votre port d'écoute de production. 
+  Noms de vos groupes cibles. 
+  Nom du compartiment S3 que vous avez créé. 

**Pour créer une CodeDeploy application**

1. Connectez-vous à la CodeDeploy console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codedeploy/](https://console.aws.amazon.com/codedeploy/).

1. Choisissez **Créer une application**.

1. Dans **Nom de l'application**, saisissez **ecs-demo-codedeploy-app**.

1. Dans **Plateforme de calcul**, choisissez **Amazon ECS**.

1. Choisissez **Créer une application**.

**Pour créer un groupe CodeDeploy de déploiement**

1. Dans l'onglet **Groupes de déploiement** de la page de votre application, choisissez **Créer un groupe de déploiement**.

1. Dans **Nom du groupe de déploiement**, saisissez **ecs-demo-dg**.

1. Dans **Rôle de service**, choisissez un rôle de service qui accorde CodeDeploy l'accès à Amazon ECS. Pour de plus amples informations, veuillez consulter [Gestion des identités et des accès pour AWS CodeDeploy](security-iam.md).

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

1. Dans **Équilibreurs de charge**, choisissez le nom de l'équilibreur de charge qui achemine le trafic vers votre service Amazon ECS.

1. 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 (par exemple, **HTTP :** 80). Ce didacticiel n'inclut pas d'écouteur de test facultatif. Par conséquent, ne choisissez pas de port dans **Port d'écoute de test**. 

1. À partir de **Nom du groupe cible 1** et **Nom du groupe cible 2**, choisissez deux groupes cibles différents 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. Peu importe lequel est utilisé pour le groupe cible 1 et lequel est utilisé pour le groupe cible 2.

1. Choisissez **Réacheminer le trafic immédiatement**.

1. Pour **Original revision termination (Résiliation de la révision d'origine)**, choisissez 0 jour, 0 heure et 5 minutes. Cela vous permet de voir votre déploiement se terminer plus rapidement que si vous utilisez la valeur par défaut (1 heure).  
![\[Section de configuration de l'environnement de la CodeDeploy console.\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/images/ecs-demo-create-acd-dg.png)

1. Choisissez **Créer un groupe de déploiement**.

**Pour déployer votre application Amazon ECS**

1. Sur la page de la console de votre groupe de déploiement, choisissez **Créer un déploiement**.

1.  Pour **le groupe de déploiement**, choisissez **ecs-demo-dg**. 

1.  Pour **Type de révision**, choisissez **Mon application est stockée dans Amazon S3**. Dans **Emplacement de la révision**, entrez le nom de votre compartiment S3. 

1.  Pour **Type de fichier de révision**, choisissez **.json** ou **.yaml**, selon le cas. 

1.  (Facultatif) Dans la zone **Description du déploiement**, entrez une description de votre déploiement. 

1. Choisissez **Créer un déploiement**.

1.  Dans **Deployment status (Statut du déploiement)**, vous pouvez surveiller votre déploiement. Une fois que 100 % du trafic de production est acheminé vers l'ensemble de tâches de remplacement et avant l'expiration du délai d'attente de cinq minutes, vous pouvez choisir **Terminer le jeu de tâches d'origine pour mettre fin immédiatement à l'ensemble** de tâches d'origine. Si vous ne choisissez pas **Terminate original task set (Résilier l'ensemble de tâches d'origine)**, l'ensemble de tâches d'origine est résilié après l'expiration du délai d'attente de cinq minutes que vous avez spécifié.  
![\[La section sur l'état du déploiement de la CodeDeploy console.\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/images/ecs-tutorial-deployment-status-without-test-listener.png)

# Étape 4 : nettoyer
<a name="tutorial-ecs-clean-up"></a>

 Le didacticiel suivant, [Tutoriel : Déployer un service Amazon ECS avec un test de validation](tutorial-ecs-deployment-with-hooks.md), repose sur ce didacticiel et utilise l'application CodeDeploy et le groupe de déploiement que vous avez créés. Si vous souhaitez suivre les étapes de ce didacticiel, ignorez cette étape et ne supprimez pas les ressources que vous avez créées. 

**Note**  
 Les CodeDeploy ressources que vous avez créées ne sont pas facturées sur votre AWS compte. 

Les noms des ressources utilisés dans ces étapes sont ceux suggérés dans ce didacticiel (par exemple, **ecs-demo-codedeploy-app** pour le nom de votre CodeDeploy application). Si vous avez utilisé d'autres noms, veillez à les utiliser lors du nettoyage. 

1. Utilisez la [delete-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/delete-deployment-group.html)commande pour supprimer le groupe CodeDeploy de déploiement.

   ```
   aws deploy delete-deployment-group --application-name ecs-demo-codedeploy-app --deployment-group-name ecs-demo-dg --region aws-region-id
   ```

1. Utilisez la commande [delete-application](https://docs.aws.amazon.com/cli/latest/reference/deploy/delete-application.html) pour supprimer l' CodeDeploy application.

   ```
   aws deploy delete-application --application-name ecs-demo-codedeploy-app --region aws-region-id
   ```

# Tutoriel : Déployer un service Amazon ECS avec un test de validation
<a name="tutorial-ecs-deployment-with-hooks"></a>

 Dans ce didacticiel, vous apprendrez à utiliser une fonction Lambda pour valider une partie du déploiement d'une application Amazon ECS mise à jour. Ce didacticiel utilise l' CodeDeploy application, CodeDeploy le groupe de déploiement et l'application Amazon ECS que vous avez utilisés[Tutoriel : Déployer une application dans Amazon ECS](tutorial-ecs-deployment.md). Suivez ce didacticiel avant de commencer celui-ci.

 Pour ajouter un test de validation, vous devez d'abord implémenter le test dans une fonction Lambda. Ensuite, dans votre AppSpec fichier de déploiement, vous spécifiez la fonction Lambda pour le hook du cycle de vie que vous souhaitez tester. Si un test de validation échoue, le déploiement s'arrête, est annulé et marqué comme ayant échoué. Si le test réussit, le déploiement se poursuit jusqu'au prochain hook ou événement de cycle de vie de déploiement. 

 Lors d'un déploiement Amazon ECS avec tests de validation, CodeDeploy utilise un équilibreur de charge configuré avec deux groupes cibles : un écouteur de trafic de production et un écouteur de trafic de test. Le schéma suivant montre comment l'équilibreur de charge, les écouteurs de production et de test, les groupes cibles et votre application Amazon ECS sont liés avant le début du déploiement. Ce didacticiel utilise un équilibreur de charge Application Load Balancer. Vous pouvez également utiliser un Network Load Balancer. 

![\[Les connexions entre l'Application Load Balancer ou le Network Load Balancer, les écouteurs, les groupes cibles, l'ensemble de tâches et le service Amazon ECS.\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/images/codedeploy-ecs-deployment-step-1.png)


 Lors d'un déploiement d'Amazon ECS, il existe cinq points de cycle de vie à tester. Ce didacticiel implémente un test au cours du troisième hook de déploiement du cycle de vie, `AfterAllowTestTraffic`. Pour de plus amples informations, veuillez consulter [Liste des hooks d'événements liés au cycle de vie pour un déploiement d'Amazon ECS](reference-appspec-file-structure-hooks.md#reference-appspec-file-structure-hooks-list-ecs). Après un déploiement réussi, l'écouteur de trafic de production transmet le trafic à votre nouvel ensemble de tâches de remplacement et l'ensemble de tâches d'origine est résilié. Le schéma suivant montre comment vos ressources sont liées après un déploiement réussi. Pour de plus amples informations, veuillez consulter [Que se passe-t-il lors d'un déploiement d'Amazon ECS](deployment-steps-ecs.md#deployment-steps-what-happens). 

![\[Les connexions entre l'Application Load Balancer ou le Network Load Balancer, les écouteurs, les groupes cibles et l'ensemble de tâches de remplacement après un déploiement.\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/images/codedeploy-ecs-deployment-step-6.png)


**Note**  
L'exécution de ce didacticiel peut entraîner des frais sur votre AWS compte. Cela inclut les frais éventuels pour CodeDeploy AWS Lambda, et CloudWatch. Pour plus d'informations, consultez les [AWS CodeDeploy sections AWS Lambda Tarification](https://aws.amazon.com/codedeploy/pricing/)[, Tarification](https://aws.amazon.com/lambda/pricing/) et [ CloudWatch Tarification Amazon](https://aws.amazon.com/cloudwatch/pricing/).

**Topics**
+ [Conditions préalables](tutorial-ecs-with-hooks-prereqs.md)
+ [Étape 1 : créer un écouteur de test](tutorial-ecs-with-hooks-create-second-listener.md)
+ [Étape 2 : mettez à jour votre application Amazon ECS](tutorial-ecs-with-hooks-update-the-ecs-application.md)
+ [Étape 3 : Création d'une fonction Lambda Lifecycle Hook](tutorial-ecs-with-hooks-create-hooks.md)
+ [Étape 4 : mettez à jour votre AppSpec fichier](tutorial-ecs-with-hooks-create-appspec-file.md)
+ [Étape 5 : utiliser la CodeDeploy console pour déployer votre service Amazon ECS](tutorial-ecs-with-hooks-deployment.md)
+ [Étape 6 : Afficher la sortie de votre fonction Lambda hook dans Logs CloudWatch](tutorial-ecs-with-hooks-view-cw-logs.md)
+ [Étape 7 : nettoyer](tutoria-ecs-with-hooks-clean-up.md)

# Conditions préalables
<a name="tutorial-ecs-with-hooks-prereqs"></a>

Pour réussir ce didacticiel, vous devez d'abord :
+  Respecter les conditions préalables énoncées dans [Conditions préalables](tutorial-ecs-prereqs.md) pour [Tutoriel : Déployer une application dans Amazon ECS](tutorial-ecs-deployment.md). 
+  Suivez les étapes de [Tutoriel : Déployer une application dans Amazon ECS](tutorial-ecs-deployment.md). Prenez en compte les informations suivantes : 
  +  Nom de votre équilibreur de charge. 
  +  Noms de vos groupes cibles. 
  +  Port utilisé par l'écouteur de votre équilibreur de charge. 
  +  ARN de votre équilibreur de charge. Vous l'utilisez pour créer un nouvel écouteur. 
  +  ARN de l'un de vos groupes cibles. Vous l'utilisez pour créer un nouvel écouteur. 
  +  L' CodeDeploy application et le groupe de déploiement que vous créez. 
  +  Le AppSpec fichier que vous créez et qui est utilisé par votre CodeDeploy déploiement. Vous allez modifier ce fichier dans ce didacticiel. 

# Étape 1 : créer un écouteur de test
<a name="tutorial-ecs-with-hooks-create-second-listener"></a>

 Un déploiement Amazon ECS avec des tests de validation nécessite un deuxième écouteur. Cet écouteur est utilisé pour acheminer le trafic de test vers votre application Amazon ECS mise à jour dans le cadre d'un ensemble de tâches de remplacement. Vos tests de validation s'exécutent sur le trafic de test. 

 L'écouteur de votre trafic de test peut utiliser l'un ou l'autre de vos groupes cibles. Utilisez la AWS CLI commande [create-listener](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-listener.html) pour créer un deuxième écouteur avec une règle par défaut qui transmet le trafic de test vers le port 8080. Utilisez l'ARN de votre équilibreur de charge et l'ARN de l'un de vos groupes cibles.

```
aws elbv2 create-listener --load-balancer-arn your-load-balancer-arn \
--protocol HTTP --port 8080 \
--default-actions Type=forward,TargetGroupArn=your-target-group-arn --region your-aws-region
```

# Étape 2 : mettez à jour votre application Amazon ECS
<a name="tutorial-ecs-with-hooks-update-the-ecs-application"></a>

 Dans cette section, vous allez mettre à jour votre application Amazon ECS afin d'utiliser une nouvelle version de sa définition de tâche. Vous créez la nouvelle révision et y ajoutez une mise à jour mineure en ajoutant une balise. 

**Pour mettre à jour votre définition de tâche**

1. Ouvrez la console Amazon ECS Classic à l'adresse [https://console.aws.amazon.com/ecs/](https://console.aws.amazon.com/ecs/).

1.  Dans le panneau de navigation, sélectionnez **Task Definitions** (Définition des tâches). 

1.  Cochez la case correspondant à la définition de tâche utilisée par votre service Amazon ECS.

1.  Choisissez **Créer une révision**. 

1.  Effectuez une petite mise à jour de la définition de tâche en ajoutant une balise. En bas de la page, dans **Balises**, créez une nouvelle balise en entrant une nouvelle paire clé/valeur. 

1.  Choisissez **Créer**. Vous devriez voir que le numéro de révision de votre définition de tâche a été incrémenté de un. 

1.  Choisissez l’onglet **JSON**. Notez la valeur de `taskDefinitionArn`. Son format est `arn:aws:ecs:aws-region: account-id:task-definition/task-definition-family: task-definition-revision`. Il s'agit de l'ARN de votre définition de tâche mise à jour. 

# Étape 3 : Création d'une fonction Lambda Lifecycle Hook
<a name="tutorial-ecs-with-hooks-create-hooks"></a>

Dans cette section, vous implémentez une fonction Lambda pour le hook de votre déploiement Amazon ECS. `AfterAllowTestTraffic` La fonction Lambda exécute un test de validation avant l'installation de l'application Amazon ECS mise à jour. Pour ce didacticiel, la fonction Lambda est renvoyée. `Succeeded` Lors d'un déploiement réel, les tests de validation renvoient `Succeeded` ou `Failed`, en fonction du résultat du test de validation. Lors d'un déploiement réel, vous pouvez également implémenter une fonction de test Lambda pour un ou plusieurs autres hooks d'événements du cycle de vie du déploiement d'Amazon ECS (`BeforeInstall`, `AfterInstall``BeforeAllowTraffic`, et`AfterAllowTraffic`). Pour de plus amples informations, veuillez consulter [Liste des hooks d'événements liés au cycle de vie pour un déploiement d'Amazon ECS](reference-appspec-file-structure-hooks.md#reference-appspec-file-structure-hooks-list-ecs).

 Un rôle IAM est requis pour créer votre fonction Lambda. Le rôle accorde à la fonction Lambda l'autorisation d'écrire dans CloudWatch Logs et de définir l'état d'un hook du CodeDeploy cycle de vie. 

**Pour créer un rôle IAM**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Sélectionnez **Rôles** dans le volet de navigation, puis **Créer un rôle**.

1.  Créez un rôle avec les propriétés suivantes : 
   +  **Entité de confiance** : **AWS Lambda**. 
   +  **Autorisations** : **AWSLambdaBasicExecutionRole**. Cela donne à votre fonction Lambda l'autorisation d'écrire dans Logs. CloudWatch 
   +  **Nom de rôle** : **`lambda-cli-hook-role`**. 

   Pour plus d'informations, consultez la section [Création d'un rôle AWS Lambda d'exécution](https://docs.aws.amazon.com/lambda/latest/dg/with-userapp.html#with-userapp-walkthrough-custom-events-create-iam-role). 

1.  Attachez l'autorisation `codedeploy:PutLifecycleEventHookExecutionStatus` au rôle que vous avez créé. Cela donne à vos fonctions Lambda l'autorisation de définir le statut d'un hook de CodeDeploy cycle de vie lors d'un déploiement. Pour plus d'informations, consultez la section [Ajout d'autorisations d'identité IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console) dans le Guide de l'*Gestion des identités et des accès AWS utilisateur et [PutLifecycleEventHookExecutionStatus](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_PutLifecycleEventHookExecutionStatus.html)dans le Guide* de *référence des CodeDeploy API*. 

**Pour créer une fonction Lambda de type `AfterAllowTestTraffic` hook**

1.  Créez un fichier nommé `AfterAllowTestTraffic.js` avec les contenus suivants. 

   ```
   'use strict';
    
    const AWS = require('aws-sdk');
    const codedeploy = new AWS.CodeDeploy({apiVersion: '2014-10-06'});
    
    exports.handler = (event, context, callback) => {
    
    	console.log("Entering AfterAllowTestTraffic hook.");
    	
    	// Read the DeploymentId and LifecycleEventHookExecutionId from the event payload
     var deploymentId = event.DeploymentId;
    	var lifecycleEventHookExecutionId = event.LifecycleEventHookExecutionId;
    	var validationTestResult = "Failed";
    	
    	// Perform AfterAllowTestTraffic validation tests here. Set the test result 
    	// to "Succeeded" for this tutorial.
    	console.log("This is where AfterAllowTestTraffic validation tests happen.")
    	validationTestResult = "Succeeded";
    	
    	// Complete the AfterAllowTestTraffic hook by sending CodeDeploy the validation status
    	var params = {
    		deploymentId: deploymentId,
    		lifecycleEventHookExecutionId: lifecycleEventHookExecutionId,
    		status: validationTestResult // status can be 'Succeeded' or 'Failed'
    	};
    	
    	// Pass CodeDeploy the prepared validation test results.
    	codedeploy.putLifecycleEventHookExecutionStatus(params, function(err, data) {
    		if (err) {
    			// Validation failed.
    			console.log('AfterAllowTestTraffic validation tests failed');
    			console.log(err, err.stack);
    			callback("CodeDeploy Status update failed");
    		} else {
    			// Validation succeeded.
    			console.log("AfterAllowTestTraffic validation tests succeeded");
    			callback(null, "AfterAllowTestTraffic validation tests succeeded");
    		}
    	});
    }
   ```

1.  Créez un package de déploiement Lambda. 

   ```
   zip AfterAllowTestTraffic.zip AfterAllowTestTraffic.js 
   ```

1.  Utilisez la `create-function` commande pour créer une fonction Lambda pour votre `AfterAllowTestTraffic` hook. 

   ```
   aws lambda create-function --function-name AfterAllowTestTraffic \
          --zip-file fileb://AfterAllowTestTraffic.zip \
          --handler AfterAllowTestTraffic.handler \
          --runtime nodejs10.x \
          --role arn:aws:iam::aws-account-id:role/lambda-cli-hook-role
   ```

1.  Notez l'ARN de votre fonction Lambda dans la `create-function` réponse. Vous utilisez cet ARN lorsque vous mettez à jour le AppSpec fichier de votre CodeDeploy déploiement à l'étape suivante. 

# Étape 4 : mettez à jour votre AppSpec fichier
<a name="tutorial-ecs-with-hooks-create-appspec-file"></a>

 Dans cette section, vous mettez à jour votre AppSpec fichier avec une `Hooks` section. Dans `Hooks` cette section, vous spécifiez une fonction Lambda pour le hook du `AfterAllowTestTraffic` cycle de vie. 

**Pour mettre à jour votre AppSpec dossier**

1.  Ouvrez le AppSpec fichier que vous avez créé dans [Étape 2 : Création du AppSpec fichier](tutorial-ecs-create-appspec-file.md) le[Tutoriel : Déployer une application dans Amazon ECS](tutorial-ecs-deployment.md). 

1.  Mettez à jour la propriété `TaskDefinition` avec l'ARN de définition de tâche que vous avez noté dans [Étape 2 : mettez à jour votre application Amazon ECS](tutorial-ecs-with-hooks-update-the-ecs-application.md). 

1. Copiez et collez la `Hooks` section dans votre AppSpec fichier. Mettez ensuite à jour l'ARN `AfterAllowTestTraffic` avec l'ARN de la fonction Lambda que vous avez noté dans. [Étape 3 : Création d'une fonction Lambda Lifecycle Hook](tutorial-ecs-with-hooks-create-hooks.md) 

------
#### [ JSON AppSpec ]

   ```
   {
     "version": 0.0,
     "Resources": [
       {
         "TargetService": {
           "Type": "AWS::ECS::Service",
           "Properties": {
             "TaskDefinition": "arn:aws:ecs:aws-region-id:aws-account-id::task-definition/ecs-demo-task-definition:revision-number",
             "LoadBalancerInfo": {
               "ContainerName": "sample-website",
               "ContainerPort": 80
             }
           }
         }
       }
     ],
     "Hooks": [
       {
         "AfterAllowTestTraffic": "arn:aws:lambda:aws-region-id:aws-account-id:function:AfterAllowTestTraffic"
       }
     ]
   }
   ```

------
#### [ YAML AppSpec ]

   ```
   version: 0.0
   Resources:
     - TargetService:
         Type: AWS::ECS::Service
         Properties:
           TaskDefinition: "arn:aws:ecs:aws-region-id:aws-account-id::task-definition/ecs-demo-task-definition:revision-number"
           LoadBalancerInfo:
             ContainerName: "sample-website"
             ContainerPort: 80
   Hooks:
     - AfterAllowTestTraffic: "arn:aws:lambda:aws-region-id:aws-account-id:function:AfterAllowTestTraffic"
   ```

------

1.  Enregistrez votre AppSpec fichier et chargez-le dans son compartiment S3. 

# Étape 5 : utiliser la CodeDeploy console pour déployer votre service Amazon ECS
<a name="tutorial-ecs-with-hooks-deployment"></a>

 Dans cette section, vous mettez à jour votre groupe de déploiement en spécifiant le port de votre écouteur de test. Il s'agit de l'écouteur que vous avez créé dans [Étape 1 : créer un écouteur de test](tutorial-ecs-with-hooks-create-second-listener.md). Pendant le déploiement, CodeDeploy exécute votre test de validation au cours du hook de cycle de vie de déploiement `AfterAllowTestTraffic` en utilisant le trafic de test transmis à votre ensemble de tâches de remplacement à l'aide de l'écouteur de test. Comme votre test de validation renvoie le résultat `Succeeded`, le déploiement se poursuit avec l'événement de cycle de vie de déploiement suivant. Dans un scénario réel, votre fonction de test renvoie `Succeeded` ou `Failed`. 

**Pour ajouter un écouteur de test à votre groupe de déploiement**

1. Connectez-vous à la CodeDeploy console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/codedeploy/](https://console.aws.amazon.com/codedeploy/).

1. Dans le volet de navigation, choisissez **Applications**. 

1. Choisissez l'application que vous avez créée dans [Tutoriel : Déployer une application dans Amazon ECS](tutorial-ecs-deployment.md). Si vous avez utilisé le nom suggéré, il s'agit de **ecs-demo-codedeploy-app**.

1. Dans **Groupes de déploiement**, choisissez le groupe de déploiement que vous avez créé dans [Tutoriel : Déployer une application dans Amazon ECS](tutorial-ecs-deployment.md). Si vous avez utilisé le nom suggéré, il s'agit de **ecs-demo-dg**.

1.  Choisissez **Modifier**. 

1. Dans **Port d'écoute de test**, choisissez le port et le protocole de l'écouteur de test que vous avez créé précédemment dans ce didacticiel. Il doit s'agir de **HTTP : 8080**. 

1.  Sélectionnez **Enregistrer les modifications**. 

**Pour déployer votre application Amazon ECS**

1. Sur la page de la console de votre groupe de déploiement, choisissez **Créer un déploiement**.

1.  Pour **le groupe de déploiement**, choisissez **ecs-demo-dg**. 

1.  Pour **Type de révision**, choisissez **Mon application est stockée dans Amazon S3**. Dans **Emplacement de la révision**, entrez le nom de votre compartiment et de votre AppSpec fichier S3 (par exemple,**s3://my-s3-bucket/appspec.json**). 

1.  Pour **Type de fichier de révision**, choisissez **.json** ou **.yaml** selon le cas. 

1.  (Facultatif) Dans la zone **Description du déploiement**, entrez une description de votre déploiement. 

1. Choisissez **Créer un déploiement**.

 Vous pouvez surveiller votre déploiement dans **Deployment status (Statut du déploiement)**. Une fois que 100 % du trafic de production est acheminé vers l'ensemble de tâches de remplacement, vous pouvez choisir **Terminer le jeu de tâches d'origine** pour mettre fin immédiatement à l'ensemble de tâches d'origine. Si vous ne choisissez pas **Terminate original task set (Résilier l'ensemble de tâches d'origine)**, l'ensemble de tâches d'origine est résilié après la durée que vous avez spécifiée lorsque vous avez créé votre groupe de déploiement. 

![\[La section sur l'état du déploiement de la CodeDeploy console.\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/images/ecs-tutorial-deployment-status-with-test-listener.png)


# Étape 6 : Afficher la sortie de votre fonction Lambda hook dans Logs CloudWatch
<a name="tutorial-ecs-with-hooks-view-cw-logs"></a>

 Si votre CodeDeploy déploiement est réussi, les tests de validation de vos fonctions de hook Lambda sont également réussis. Vous pouvez le confirmer en consultant le journal de la fonction hook dans CloudWatch Logs. 

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1.  Dans le volet de navigation, choisissez **Logs (Journaux)**. Vous devriez voir un nouveau groupe de journaux pour la fonction de crochet Lambda que vous avez spécifiée dans votre AppSpec fichier.   
![\[Le nouveau groupe de journaux dans la CloudWatch console.\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/images/ecs-demo-cw-logs.png)

1.  Choisissez le nouveau groupe de journaux. Cela devrait être**/aws/lambda/AfterAllowTestTrafficHook**. 

1.  Choisissez le flux de journaux. Si vous voyez plusieurs flux de journaux, choisissez celui dont la date et l'heure sont les plus récentes sous **Heure du dernier événement**. 

1.  Développez les événements du flux du journal pour confirmer que votre fonction Lambda Hook a écrit des messages de réussite dans le journal. Ce qui suit montre que la fonction de crochet `AfterAllowTraffic` Lambda a réussi.   
![\[Les événements du journal indiquant le AfterAllowTraffic hook.\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/images/ecs-demo-cw-log-events.png)

# Étape 7 : nettoyer
<a name="tutoria-ecs-with-hooks-clean-up"></a>

 Lorsque vous avez terminé ce didacticiel, nettoyez les ressources qui lui sont associées afin d'éviter la facturation de frais pour des ressources que vous n'utilisez pas. Les noms des ressources utilisés dans cette étape sont ceux proposés dans ce didacticiel (par exemple, **ecs-demo-codedeploy-app** pour le nom de votre CodeDeploy application). Si vous avez utilisé d'autres noms, veillez à les utiliser lors du nettoyage. 

**Pour nettoyer les ressources du didacticiel**

1. Utilisez la [delete-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/delete-deployment-group.html)commande pour supprimer le groupe CodeDeploy de déploiement.

   ```
   aws deploy delete-deployment-group --application-name ecs-demo-deployment-group --deployment-group-name ecs-demo-dg --region aws-region-id
   ```

1. Utilisez la commande [delete-application](https://docs.aws.amazon.com/cli/latest/reference/deploy/delete-application.html) pour supprimer l' CodeDeploy application.

   ```
   aws deploy delete-application --application-name ecs-demo-deployment-group --region aws-region-id
   ```

1. Utilisez la commande [delete-function](https://docs.aws.amazon.com/cli/latest/reference/lambda/delete-function.html) pour supprimer votre fonction de crochet Lambda.

   ```
   aws lambda delete-function --function-name AfterAllowTestTraffic
   ```

1. Utilisez la [delete-log-group](https://docs.aws.amazon.com/cli/latest/reference/logs/delete-log-group.html)commande pour supprimer votre groupe de CloudWatch journaux.

   ```
   aws logs delete-log-group --log-group-name /aws/lambda/AfterAllowTestTraffic
   ```

# Tutoriel : Déployer une fonction Lambda mise à jour avec CodeDeploy et le modèle d'application AWS sans serveur
<a name="tutorial-lambda-sam"></a>

AWS SAM est un framework open source permettant de créer des applications sans serveur. Il transforme et étend la syntaxe YAML d'un AWS SAM modèle en CloudFormation syntaxe permettant de créer des applications sans serveur, telles qu'une fonction Lambda. Pour plus d'informations, voir [Qu'est-ce que le modèle d'application AWS sans serveur](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) ? 

 Dans ce didacticiel, vous allez utiliser AWS SAM pour créer une solution qui effectue les opérations suivantes : 
+  Crée votre fonction Lambda. 
+  Crée votre CodeDeploy application et votre groupe de déploiement. 
+  Crée deux fonctions Lambda qui exécutent des tests de validation du déploiement pendant les hooks CodeDeploy du cycle de vie. 
+  Détecte la mise à jour de votre fonction Lambda. La mise à jour de la fonction Lambda déclenche un déploiement CodeDeploy qui déplace progressivement le trafic de production de la version d'origine de votre fonction Lambda vers la version mise à jour. 

**Note**  
Ce didacticiel nécessite que vous créiez des ressources qui peuvent entraîner des frais sur votre compte AWS . Cela inclut les frais éventuels pour CodeDeploy, Amazon CloudWatch, et AWS Lambda. Pour plus d'informations, consultez les [CodeDeploy sections Tarification](https://aws.amazon.com/codedeploy/pricing/), [ CloudWatch Tarification Amazon](https://aws.amazon.com/cloudwatch/pricing/) et [AWS Lambda Tarification](https://aws.amazon.com/lambda/pricing/).

**Topics**
+ [Conditions préalables](tutorial-lambda-sam-prereqs.md)
+ [Étape 1 : configurer votre infrastructure](tutorial-lambda-sam-setup-infrastructure.md)
+ [Étape 2 : mise à jour de la fonction Lambda](tutorial-lambda-sam-update-function.md)
+ [Étape 3 : Déploiement de la fonction Lambda mise à jour](tutorial-lambda-sam-deploy-update.md)
+ [Étape 4 : Afficher les résultats de votre déploiement](tutorial-lambda-sam-deploy-view-results.md)
+ [Étape 5 : nettoyer](tutorial-lambda-clean-up.md)

# Conditions préalables
<a name="tutorial-lambda-sam-prereqs"></a>

Pour effectuer ce didacticiel, vous devez d'abord :
+  Suivez les étapes de [Commencer avec CodeDeploy](getting-started-codedeploy.md). 
+  Installez la AWS Serverless Application Model CLI. Pour plus d'informations, consultez la section [Installation de la CLI AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html). 
+  Créez un compartiment S3. AWS SAM télécharge les artefacts référencés dans votre [modèle AWS SAM](https://docs.aws.amazon.com/en_us/codedeploy/latest/userguide/tutorial-lambda-sam-template.html) dans ce compartiment. 

# Étape 1 : configurer votre infrastructure
<a name="tutorial-lambda-sam-setup-infrastructure"></a>

 Cette rubrique explique comment créer des fichiers AWS SAM pour votre AWS SAM modèle et vos fonctions Lambda. Ensuite, vous utilisez les `deploy` commandes AWS SAM `package` et pour générer les composants de votre infrastructure. Lorsque votre infrastructure est prête, vous disposez d'une CodeDeploy application et d'un groupe de déploiement, de la fonction Lambda à mettre à jour et à déployer, et de deux fonctions Lambda contenant des tests de validation exécutés lorsque vous déployez la fonction Lambda. Lorsque vous avez terminé, vous pouvez l'utiliser CloudFormation pour afficher vos composants dans la console Lambda ou AWS CLI pour tester votre fonction Lambda. 

**Topics**
+ [Créez vos fichiers](tutorial-lambda-create-files.md)
+ [Package de l'application AWS SAM](tutorial-lambda-sam-package.md)
+ [Déployer l'application AWS SAM](tutorial-lambda-sam-deploy.md)
+ [(Facultatif) inspectez et testez votre infrastructure](tutorial-lambda-sam-confirm-components.md)

# Créez vos fichiers
<a name="tutorial-lambda-create-files"></a>

 Pour créer votre infrastructure, vous devez créer les fichiers suivants : 
+ `template.yml`
+ `myDateTimeFunction.js`
+ `beforeAllowTraffic.js`
+ `afterAllowTraffic.js`

**Topics**
+ [Créez votre modèle AWS SAM](tutorial-lambda-sam-template.md)
+ [Créez un fichier pour votre fonction Lambda](tutorial-lambda-sam-create-lambda-function.md)
+ [Créez un fichier pour votre fonction BeforeAllowTraffic Lambda](tutorial-lambda-sam-create-lambda-before-traffic.md)
+ [Créez un fichier pour votre fonction AfterAllowTraffic Lambda](tutorial-lambda-sam-create-lambda-after-traffic.md)

# Créez votre modèle AWS SAM
<a name="tutorial-lambda-sam-template"></a>

Créez un fichier modèle AWS SAM qui spécifie les composants de votre infrastructure.

**Pour créer votre modèle AWS SAM**

1.  Créez un répertoire nommé `SAM-Tutorial`. 

1.  Dans votre répertoire `SAM-Tutorial`, créez un fichier nommé `template.yml`. 

1.  Copiez le code YAML suivant dans `template.yml`. Il s'agit de votre modèle AWS SAM . 

   ```
   AWSTemplateFormatVersion : '2010-09-09'
   Transform: AWS::Serverless-2016-10-31
   Description: A sample SAM template for deploying Lambda functions.
   
   Resources:
   # Details about the myDateTimeFunction Lambda function
     myDateTimeFunction:
       Type: AWS::Serverless::Function
       Properties:
         Handler: myDateTimeFunction.handler
         Runtime: nodejs18.x
   # Instructs your myDateTimeFunction is published to an alias named "live".      
         AutoPublishAlias: live
   # Grants this function permission to call lambda:InvokeFunction
         Policies:
           - Version: "2012-10-17"		 	 	 
             Statement: 
             - Effect: "Allow"
               Action: 
                 - "lambda:InvokeFunction"
               Resource: '*'
         DeploymentPreference:
   # Specifies the deployment configuration      
             Type: Linear10PercentEvery1Minute
   # Specifies Lambda functions for deployment lifecycle hooks
             Hooks:
               PreTraffic: !Ref beforeAllowTraffic
               PostTraffic: !Ref afterAllowTraffic
               
   # Specifies the BeforeAllowTraffic lifecycle hook Lambda function
     beforeAllowTraffic:
       Type: AWS::Serverless::Function
       Properties:
         Handler: beforeAllowTraffic.handler
         Policies:
           - Version: "2012-10-17"		 	 	 
   # Grants this function permission to call codedeploy:PutLifecycleEventHookExecutionStatus        
             Statement: 
             - Effect: "Allow"
               Action: 
                 - "codedeploy:PutLifecycleEventHookExecutionStatus"
               Resource:
                 !Sub 'arn:aws:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${ServerlessDeploymentApplication}/*'
           - Version: "2012-10-17"		 	 	 
   # Grants this function permission to call lambda:InvokeFunction        
             Statement: 
             - Effect: "Allow"
               Action: 
                 - "lambda:InvokeFunction"
               Resource: !Ref myDateTimeFunction.Version
         Runtime: nodejs18.x
   # Specifies the name of the Lambda hook function      
         FunctionName: 'CodeDeployHook_beforeAllowTraffic'
         DeploymentPreference:
           Enabled: false
         Timeout: 5
         Environment:
           Variables:
             NewVersion: !Ref myDateTimeFunction.Version
             
   # Specifies the AfterAllowTraffic lifecycle hook Lambda function
     afterAllowTraffic:
       Type: AWS::Serverless::Function
       Properties:
         Handler: afterAllowTraffic.handler
         Policies:
           - Version: "2012-10-17"		 	 	 
             Statement: 
   # Grants this function permission to call codedeploy:PutLifecycleEventHookExecutionStatus         
             - Effect: "Allow"
               Action: 
                 - "codedeploy:PutLifecycleEventHookExecutionStatus"
               Resource:
                 !Sub 'arn:aws:codedeploy:${AWS::Region}:${AWS::AccountId}:deploymentgroup:${ServerlessDeploymentApplication}/*'
           - Version: "2012-10-17"		 	 	 
             Statement: 
   # Grants this function permission to call lambda:InvokeFunction          
             - Effect: "Allow"
               Action: 
                 - "lambda:InvokeFunction"
               Resource: !Ref myDateTimeFunction.Version
         Runtime: nodejs18.x
   # Specifies the name of the Lambda hook function      
         FunctionName: 'CodeDeployHook_afterAllowTraffic'
         DeploymentPreference:
           Enabled: false
         Timeout: 5
         Environment:
           Variables:
             NewVersion: !Ref myDateTimeFunction.Version
   ```

Ce modèle spécifie les éléments suivants. Pour plus d'informations, consultez la section [Concepts des AWS SAM modèles](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-basics.html).

**Une fonction Lambda appelée `myDateTimeFunction`**  
 Lorsque cette fonction Lambda est publiée, la `AutoPublishAlias` ligne du modèle la lie à un alias nommé. `live` Plus loin dans ce didacticiel, une mise à jour de cette fonction déclenche un déploiement AWS CodeDeploy qui déplace progressivement le trafic de production de la version d'origine vers la version mise à jour. 

**Deux fonctions de validation du déploiement Lambda**  
 Les fonctions Lambda suivantes sont exécutées pendant les hooks CodeDeploy du cycle de vie. Ces fonctions contiennent du code qui valide le déploiement de la fonction `myDateTimeFunction` mise à jour. Le résultat des tests de validation est transmis à CodeDeploy à l'aide de sa méthode d'API `PutLifecycleEventHookExecutionStatus`. Si un test de validation échoue, le déploiement échoue et est annulé.   
+  `CodeDeployHook_beforeAllowTraffic` s'exécute pendant le hook `BeforeAllowTraffic`. 
+  `CodeDeployHook_afterAllowTraffic` s'exécute pendant le hook `AfterAllowTraffic`. 
Le nom des deux fonctions commence par `CodeDeployHook_`. Le `CodeDeployRoleForLambda` rôle autorise les appels à la `invoke` méthode Lambda uniquement dans les fonctions Lambda dont le nom commence par ce préfixe. Pour plus d'informations, veuillez consulter les sections [AppSpec section « hooks » pour un déploiement AWS Lambda](reference-appspec-file-structure-hooks.md#appspec-hooks-lambda) et [PutLifecycleEventHookExecutionStatus](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_PutLifecycleEventHookExecutionStatus.html) (français non garanti) de la *Référence d'API CodeDeploy *. 

**Détection automatique d'une fonction Lambda mise à jour**  
 Le terme `AutoPublishAlias` indique au cadre de détecter quand la fonction `myDateTimeFunction` change, puis de la déployer à l'aide de l'alias `live`. 

**Une configuration de déploiement**  
 La configuration de déploiement détermine la vitesse à laquelle votre CodeDeploy application déplace le trafic de la version d'origine de la fonction Lambda vers la nouvelle version. Ce modèle spécifie la configuration de déploiement prédéfinie `Linear10PercentEvery1Minute`.   
 Vous ne pouvez pas spécifier de configuration de déploiement personnalisée dans un modèle AWS SAM. Pour de plus amples informations, veuillez consulter [Créez une configuration de déploiement avec CodeDeploy](deployment-configurations-create.md).

**Fonctions de hook de cycle de vie de déploiement**  
 La section `Hooks` spécifie les fonctions à exécuter pendant les hooks d'événement de cycle de vie. `PreTraffic` spécifie la fonction qui s'exécute pendant le hook `BeforeAllowTraffic`. `PostTraffic` spécifie la fonction qui s'exécute pendant le hook `AfterAllowTraffic`. 

**Autorisations permettant à Lambda d'appeler une autre fonction Lambda**  
 L'`lambda:InvokeFunction`autorisation spécifiée accorde au rôle utilisé par l'application AWS SAM l'autorisation d'appeler une fonction Lambda. Cela est nécessaire lorsque les `CodeDeployHook_afterAllowTraffic` fonctions `CodeDeployHook_beforeAllowTraffic` et invoquent la fonction Lambda déployée lors des tests de validation. 

# Créez un fichier pour votre fonction Lambda
<a name="tutorial-lambda-sam-create-lambda-function"></a>

Créez le fichier pour la fonction que vous mettrez à jour et déploierez ultérieurement dans ce didacticiel.

**Note**  
 Une fonction Lambda peut utiliser n'importe quel environnement d'exécution pris en charge par. AWS Lambda Pour plus d'informations, consultez [Environnement d'exécution AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html). 

**Pour créer votre fonction Lambda**

1.  Créez un fichier texte et enregistrez-le sous le nom `myDateTimeFunction.js` dans le répertoire `SAM-Tutorial`. 

1.  Copiez le code Node.js suivant dans `myDateTimeFunction.js`. 

   

   ```
   'use strict';
       
       exports.handler = function(event, context, callback) {
       
         if (event.body) {
           event = JSON.parse(event.body);
         }
       
         var sc; // Status code
         var result = ""; // Response payload
       
         switch(event.option) {
           case "date": 
             switch(event.period) {
               case "yesterday":
                 result = setDateResult("yesterday");
                 sc = 200;
                 break;
               case "today":
                 result = setDateResult();
                 sc = 200;
                 break;
               case "tomorrow":
                 result = setDateResult("tomorrow");
                 sc = 200;
                 break;
               default:
                 result = {
                   "error": "Must specify 'yesterday', 'today', or 'tomorrow'."
                 };
                 sc = 400;
                 break;
             }
             break;
             
       /*      Later in this tutorial, you update this function by uncommenting 
               this section. The framework created by AWS SAM detects the update 
               and triggers a deployment by CodeDeploy. The deployment shifts 
               production traffic to the updated version of this function.
               
               case "time":
               var d = new Date();
               var h = d.getHours();
               var mi = d.getMinutes();
               var s = d.getSeconds();
       
               result = {
                 "hour": h,
                 "minute": mi,
                 "second": s
               };
               sc = 200;
               break;
       */
             default:
               result = {
                 "error": "Must specify 'date' or 'time'."
               };
               sc = 400;
             break;
         }
       
         const response = {
           statusCode: sc,
           headers: { "Content-type": "application/json" },
           body: JSON.stringify( result )
         };
       
         callback(null, response);
       
         function setDateResult(option) {
       
           var d = new Date(); // Today
           var mo; // Month
           var da; // Day
           var y; // Year
       
           switch(option) {
             case "yesterday":
               d.setDate(d.getDate() - 1);
               break;
             case "tomorrow":
               d.setDate(d.getDate() + 1);
             default:
              break;
           }
       
           mo = d.getMonth() + 1; // Months are zero offset (0-11)
           da = d.getDate();
           y = d.getFullYear();
       
           result = {
             "month": mo,
             "day": da,
             "year": y
           };
       
           return result;
         }
       };
   ```

La fonction Lambda renvoie le jour, le mois et l'année pour hier, aujourd'hui ou demain. Plus loin dans ce didacticiel, vous annulerez la mise en commentaire du code qui met à jour la fonction pour renvoyer des informations sur le jour ou l'heure que vous spécifiez (par exemple, le jour, le mois et l'année, ou l'heure, la minute et la seconde actuelles). Le framework créé par AWS SAM détecte et déploie la version mise à jour de la fonction. 

**Note**  
 Cette fonction Lambda est également utilisée dans un AWS Cloud9 didacticiel. AWS Cloud9 est un environnement de développement intégré basé sur le cloud. Pour plus d'informations sur la création, l'exécution, la mise à jour et le débogage de cette fonction dans AWS Cloud9, consultez le [AWS Lambda didacticiel pour AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/tutorial-lambda.html). 

# Créez un fichier pour votre fonction BeforeAllowTraffic Lambda
<a name="tutorial-lambda-sam-create-lambda-before-traffic"></a>

Créez le fichier pour la fonction Lambda de votre `beforeAllowTraffic` hook.

1.  Créez un fichier texte et enregistrez-le sous le nom `beforeAllowTraffic.js` dans le répertoire `SAM-Tutorial`. 

1.  Copiez le code Node.js suivant dans `beforeAllowTraffic.js`. Cette fonction s'exécute pendant le hook `BeforeAllowTraffic` de votre déploiement. 

   ```
   'use strict';
       
       const AWS = require('aws-sdk'); 
       const codedeploy = new AWS.CodeDeploy({apiVersion: '2014-10-06'});
       var lambda = new AWS.Lambda();
       
       exports.handler = (event, context, callback) => {
       
       	console.log("Entering PreTraffic Hook!");
       	
       	// Read the DeploymentId and LifecycleEventHookExecutionId from the event payload
         var deploymentId = event.DeploymentId;
       	var lifecycleEventHookExecutionId = event.LifecycleEventHookExecutionId;
       
       	var functionToTest = process.env.NewVersion;
       	console.log("BeforeAllowTraffic hook tests started");
       	console.log("Testing new function version: " + functionToTest);
       
       	// Create parameters to pass to the updated Lambda function that
       	// include the newly added "time" option. If the function did not
       	// update, then the "time" option is invalid and function returns
       	// a statusCode of 400 indicating it failed.
       	var lambdaParams = {
       		FunctionName: functionToTest,    
       		Payload: "{\"option\": \"time\"}", 
       		InvocationType: "RequestResponse"
       	};
       
       	var lambdaResult = "Failed";
       	// Invoke the updated Lambda function.
       	lambda.invoke(lambdaParams, function(err, data) {
       		if (err){	// an error occurred
       			console.log(err, err.stack);
       			lambdaResult = "Failed";
       		}
       		else{	// successful response
       			var result = JSON.parse(data.Payload);
       			console.log("Result: " +  JSON.stringify(result));
             console.log("statusCode: " + result.statusCode);
             
             // Check if the status code returned by the updated
             // function is 400. If it is, then it failed. If 
             // is not, then it succeeded.
       			if (result.statusCode != "400"){
               console.log("Validation succeeded");
       				lambdaResult = "Succeeded";
             }
             else {
               console.log("Validation failed");
             }
       
       			// Complete the PreTraffic Hook by sending CodeDeploy the validation status
       			var params = {
       				deploymentId: deploymentId,
       				lifecycleEventHookExecutionId: lifecycleEventHookExecutionId,
       				status: lambdaResult // status can be 'Succeeded' or 'Failed'
       			};
       			
       			// Pass CodeDeploy the prepared validation test results.
       			codedeploy.putLifecycleEventHookExecutionStatus(params, function(err, data) {
       				if (err) {
       					// Validation failed.
       					console.log("CodeDeploy Status update failed");
       					console.log(err, err.stack);
       					callback("CodeDeploy Status update failed");
       				} else {
       					// Validation succeeded.
       					console.log("CodeDeploy status updated successfully");
       					callback(null, "CodeDeploy status updated successfully");
       				}
       			});
       		}  
       	});
       }
   ```

# Créez un fichier pour votre fonction AfterAllowTraffic Lambda
<a name="tutorial-lambda-sam-create-lambda-after-traffic"></a>

Créez le fichier pour la fonction Lambda de votre `afterAllowTraffic` hook.

1.  Créez un fichier texte et enregistrez-le sous le nom `afterAllowTraffic.js` dans le répertoire `SAM-Tutorial`. 

1.  Copiez le code Node.js suivant dans `afterAllowTraffic.js`. Cette fonction s'exécute pendant le hook `AfterAllowTraffic` de votre déploiement. 

   ```
   'use strict';
       
       const AWS = require('aws-sdk');
       const codedeploy = new AWS.CodeDeploy({apiVersion: '2014-10-06'});
       var lambda = new AWS.Lambda();
       
       exports.handler = (event, context, callback) => {
       
       	console.log("Entering PostTraffic Hook!");
       	
       	// Read the DeploymentId and LifecycleEventHookExecutionId from the event payload
         var deploymentId = event.DeploymentId;
       	var lifecycleEventHookExecutionId = event.LifecycleEventHookExecutionId;
       
       	var functionToTest = process.env.NewVersion;
       	console.log("AfterAllowTraffic hook tests started");
       	console.log("Testing new function version: " + functionToTest);
       
       	// Create parameters to pass to the updated Lambda function that
       	// include the original "date" parameter. If the function did not 
       	// update as expected, then the "date" option might be invalid. If 
       	// the parameter is invalid, the function returns
       	// a statusCode of 400 indicating it failed.
       	var lambdaParams = {
       		FunctionName: functionToTest,    
       		Payload: "{\"option\": \"date\", \"period\": \"today\"}", 
       		InvocationType: "RequestResponse"
       	};
       
       	var lambdaResult = "Failed";
       	// Invoke the updated Lambda function.
       	lambda.invoke(lambdaParams, function(err, data) {
       		if (err){	// an error occurred
       			console.log(err, err.stack);
       			lambdaResult = "Failed";
       		}
       		else{	// successful response
       			var result = JSON.parse(data.Payload);
       			console.log("Result: " +  JSON.stringify(result));
             console.log("statusCode: " + result.statusCode);
             
             // Check if the status code returned by the updated
             // function is 400. If it is, then it failed. If 
             // is not, then it succeeded.
       			if (result.statusCode != "400"){
               console.log("Validation of time parameter succeeded");
       				lambdaResult = "Succeeded";
             }
             else {
               console.log("Validation failed");
             }
       
       			// Complete the PostTraffic Hook by sending CodeDeploy the validation status
       			var params = {
       				deploymentId: deploymentId,
       				lifecycleEventHookExecutionId: lifecycleEventHookExecutionId,
       				status: lambdaResult // status can be 'Succeeded' or 'Failed'
       			};
       			
       			// Pass CodeDeploy the prepared validation test results.
       			codedeploy.putLifecycleEventHookExecutionStatus(params, function(err, data) {
       				if (err) {
       					// Validation failed.
       					console.log("CodeDeploy Status update failed");
       					console.log(err, err.stack);
       					callback("CodeDeploy Status update failed");
       				} else {
       					// Validation succeeded.
       					console.log("CodeDeploy status updated successfully");
       					callback(null, "CodeDeploy status updated successfully");
       				}
       			});
       		}  
       	});
       }
   ```

# Package de l'application AWS SAM
<a name="tutorial-lambda-sam-package"></a>

 Vous devez maintenant avoir quatre fichiers dans votre répertoire `SAM-Tutorial` : 
+ `beforeAllowTraffic.js`
+ `afterAllowTraffic.js`
+ `myDateTimeFunction.js`
+ `template.yml`

 Vous êtes maintenant prêt à utiliser la **sam package** commande AWS SAM pour créer et empaqueter des artefacts pour vos fonctions et CodeDeploy applications Lambda. Les artefacts sont chargés dans un compartiment S3. La sortie de la commande est un nouveau fichier nommé `package.yml`. Ce fichier est utilisé par la **sam deploy** commande AWS SAM à l'étape suivante. 

**Note**  
 Pour plus d'informations sur la **sam package** commande, consultez la [référence des commandes AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-command-reference.html) dans le *manuel du AWS Serverless Application Model développeur*. 

 Dans le répertoire `SAM-Tutorial`, exécutez la commande suivante. 

```
sam package \
  --template-file template.yml \
  --output-template-file package.yml \
  --s3-bucket amzn-s3-demo-bucket
```

Pour le `s3-bucket` paramètre, spécifiez le compartiment Amazon S3 que vous avez créé comme condition préalable à ce didacticiel. `output-template-file`Spécifie le nom du nouveau fichier utilisé par la **sam deploy** commande AWS SAM.

# Déployer l'application AWS SAM
<a name="tutorial-lambda-sam-deploy"></a>

 Utilisez la **sam deploy** commande AWS SAM avec le `package.yml` fichier pour créer vos fonctions Lambda, votre CodeDeploy application et votre groupe de déploiement à l'aide de. CloudFormation

**Note**  
Pour plus d'informations sur la **sam deploy** commande, consultez la [référence des commandes AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-command-reference.html) dans le *manuel du AWS Serverless Application Model développeur*. 

 Dans le répertoire `SAM-Tutorial`, exécutez la commande suivante. 

```
sam deploy \
  --template-file package.yml \
  --stack-name my-date-time-app \
  --capabilities CAPABILITY_IAM
```

 Le `--capabilities CAPABILITY_IAM` paramètre est obligatoire pour autoriser la création CloudFormation de rôles IAM. 

# (Facultatif) inspectez et testez votre infrastructure
<a name="tutorial-lambda-sam-confirm-components"></a>

 Cette rubrique explique comment visualiser les composants de votre infrastructure et tester votre fonction Lambda. 

**Pour afficher le résultat de votre pile après avoir exécuté `sam deploy`**

1. Ouvrez la CloudFormation console à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1.  Dans le volet de navigation, choisissez **Stack (Piles)**. La pile `my-date-time-app` s'affiche en haut. 

1.  Choisissez l'onglet **Événements** pour voir quels événements sont terminés. Vous pouvez afficher les événements pendant que la création de la pile est en cours. Lorsque la création de la pile est terminée, vous pouvez voir tous les événements de création de la pile. 

1.  Une fois la pile sélectionnée, choisissez **Ressources**. Dans la colonne **Type**, vous pouvez voir vos fonctions Lambda, `myDateTimeFunction``CodeDeployHook_beforeAllowTraffic`, et. `CodeDeployHook_afterAllowTraffic` La colonne **Physical ID** de chacune de vos fonctions Lambda contient un lien permettant d'afficher les fonctions dans la console Lambda. 
**Note**  
 Le nom de la fonction `myDateTimeFunction` Lambda est précédé du nom de la CloudFormation pile et un identifiant y est ajouté, ce qui donne l'apparence suivante : `my-date-time-app-myDateTimeFunction-123456ABCDEF` 

1. Ouvrez la CodeDeploy console à l'adresse [https://console.aws.amazon.com/codedeploy/](https://console.aws.amazon.com/codedeploy/).

1.  Dans le volet de navigation, développez **Déployer**, puis choisissez **Applications**. 

1.  Vous devriez voir une nouvelle CodeDeploy application créée par CloudFormation et dont le nom commence par`my-date-time-app-ServerlessDeploymentApplication`. Choisissez cette application. 

1.  Vous devez voir un groupe de déploiement dont le nom commence par `my-date-time-app-myDateTimeFunctionDeploymentGroup`. Choisissez ce groupe de déploiement. 

    Sous **Configuration du déploiement**, vous devriez voir **CodeDeployDefault. LambdaLinear10 PercentEvery 1 minute.** 

**(Facultatif) pour tester votre fonction (console)**

1. Ouvrez la AWS Lambda console à l'adresse [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1.  Dans le volet de navigation, choisissez votre fonction `my-date-time-app-myDateTimeFunction`. Dans la console, son nom contient un identifiant. Il ressemble donc à `my-date-time-app-myDateTimeFunction-123456ABCDEF`. 

1.  Sélectionnez **Tester)**. 

1.  Dans **Nom de l'événement**, entrez un nom pour votre événement de test. 

1.  Entrez les informations suivantes pour votre événement de test, puis choisissez **Créer**. 

   ```
   {
     "option": "date",
     "period": "today"
   }
   ```

1.  Sélectionnez **Tester)**. Vous devriez voir uniquement votre événement de test dans la liste des événements de test. 

    Pour **Résultat de l'exécution**, vous devriez voir **réussite**. 

1.  Sous **Résultat de l'exécution**, développez **Détails** pour afficher les résultats. Vous devriez voir le mois, le jour et l'année en cours. 

**(Facultatif) pour tester votre fonction (AWS CLI)**

1.  Localisez l'ARN de votre fonction Lambda. Il apparaît en haut de la console Lambda lorsque vous visualisez votre fonction. 

1.  Exécutez la commande suivante. Remplacez *your-function-arn* par la fonction ARN. 

   ```
   aws lambda invoke \
   --function your-function-arn \
   --cli-binary-format raw-in-base64-out \
   --payload "{\"option\": \"date\", \"period\": \"today\"}" out.txt
   ```

1.  Ouvrez `out.txt` pour confirmer que le résultat contient le mois, le jour et l'année en cours. 

# Étape 2 : mise à jour de la fonction Lambda
<a name="tutorial-lambda-sam-update-function"></a>

 Dans cette rubrique, vous mettez à jour votre fichier `myDateTimeFunction.js`. Dans l'étape suivante, vous allez utiliser ce fichier pour déployer la fonction mise à jour. Cela déclenche son déploiement CodeDeploy en transférant le trafic de production de la version actuelle de la fonction Lambda vers la version mise à jour. 

**Pour mettre à jour votre fonction Lambda**

1.  Ouvrir `myDateTimeFunction.js`. 

1.  Supprimez les deux marqueurs de commentaire (« `/*` » et « `*/` ») et le texte explicatif au début et à la fin de l'élément `case` nommé `time` dans le bloc `switch`. 

    Le code sans commentaire vous permet de transmettre un nouveau paramètre, `time`, à la fonction. Si vous transmettez `time` à la fonction mise à jour, elle renvoie les valeurs `hour`, `minute` et `second` actuelles. 

1.  Enregistrez `myDateTimeFunction.js`. Il devrait se présenter comme suit : 

   ```
   'use strict';
   
   exports.handler = function(event, context, callback) {
   
     if (event.body) {
       event = JSON.parse(event.body);
     }
   
     var sc; // Status code
     var result = ""; // Response payload
   
     switch(event.option) {
       case "date":
         switch(event.period) {
           case "yesterday":
             result = setDateResult("yesterday");
             sc = 200;
             break;
           case "today":
             result = setDateResult();
             sc = 200;
             break;
           case "tomorrow":
             result = setDateResult("tomorrow");
             sc = 200;
             break;
           default:
             result = {
               "error": "Must specify 'yesterday', 'today', or 'tomorrow'."
             };
             sc = 400;
             break;
         }
         break;
         case "time":
           var d = new Date();
           var h = d.getHours();
           var mi = d.getMinutes();
           var s = d.getSeconds();
   
           result = {
             "hour": h,
             "minute": mi,
             "second": s
           };
           sc = 200;
           break;
   
         default:
           result = {
             "error": "Must specify 'date' or 'time'."
           };
           sc = 400;
         break;
     }
   
     const response = {
       statusCode: sc,
       headers: { "Content-type": "application/json" },
       body: JSON.stringify( result )
     };
   
     callback(null, response);
   
     function setDateResult(option) {
   
       var d = new Date(); // Today
       var mo; // Month
       var da; // Day
       var y; // Year
   
       switch(option) {
         case "yesterday":
           d.setDate(d.getDate() - 1);
           break;
         case "tomorrow":
           d.setDate(d.getDate() + 1);
         default:
          break;
       }
   
       mo = d.getMonth() + 1; // Months are zero offset (0-11)
       da = d.getDate();
       y = d.getFullYear();
   
       result = {
         "month": mo,
         "day": da,
         "year": y
       };
   
       return result;
     }
   };
   ```

# Étape 3 : Déploiement de la fonction Lambda mise à jour
<a name="tutorial-lambda-sam-deploy-update"></a>

 Au cours de cette étape, vous utiliserez votre mise `myDateTimeFunction.js` à jour pour mettre à jour et lancer le déploiement de votre fonction Lambda. Vous pouvez suivre la progression du déploiement dans la AWS Lambda console CodeDeploy OR. 

 La `AutoPublishAlias: live` ligne de votre AWS SAM modèle permet à votre infrastructure de détecter les mises à jour des fonctions qui utilisent l'`live`alias. Une mise à jour de votre fonction déclenche un déploiement CodeDeploy qui déplace le trafic de production de la version d'origine de la fonction vers la version mise à jour. 

 Les **sam deploy** commandes **sam package** and sont utilisées pour mettre à jour et déclencher le déploiement de votre fonction Lambda. Vous avez exécuté ces commandes dans [Package de l'application AWS SAM](tutorial-lambda-sam-package.md) et [Déployer l'application AWS SAM](tutorial-lambda-sam-deploy.md). 

**Pour déployer votre fonction Lambda mise à jour**

1.  Dans le répertoire `SAM-Tutorial`, exécutez la commande suivante. 

   ```
   sam package \
     --template-file template.yml \
     --output-template-file package.yml  \
     --s3-bucket amzn-s3-demo-bucket
   ```

    Cela crée un nouvel ensemble d'artefacts qui font référence à votre fonction Lambda mise à jour dans votre compartiment S3. 

1.  Dans le répertoire `SAM-Tutorial`, exécutez la commande suivante. 

   ```
   sam deploy \
     --template-file package.yml \
     --stack-name my-date-time-app \
     --capabilities CAPABILITY_IAM
   ```

   Comme le nom de la pile est toujours présent`my-date-time-app`, CloudFormation reconnaît qu'il s'agit d'une mise à jour de la pile. Pour afficher votre pile mise à jour, retournez à la CloudFormation console et, dans le volet de navigation, choisissez **Stacks**.

**(Facultatif) pour afficher le trafic lors d'un déploiement (CodeDeploy console)**

1. Ouvrez la CodeDeploy console à l'adresse [https://console.aws.amazon.com/codedeploy/](https://console.aws.amazon.com/codedeploy/).

1.  Dans le volet de navigation, développez **Applications**, puis choisissez votre **my-date-time-app- ServerlessDeploymentApplication** application. 

1.  Dans **Groupes de déploiement**, choisissez le groupe de déploiement de votre application. Son statut doit être **En cours**. 

1.  Dans **Deployment group history (Historique des groupes de déploiement)**, choisissez le déploiement qui est en cours. 

   La barre de progression **Traffic shifting (Déplacement du trafic)** et les pourcentages affichés dans les zones **Initiale** et **Remplacement** de cette page indiquent sa progression.   
![\[La section de la CodeDeploy console consacrée à la progression du trafic.\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/images/lambda-tutorial-codedeploy-console-20-percent-deployed.png)

**(Facultatif) pour afficher le trafic lors d'un déploiement (console Lambda)**

1. Ouvrez la AWS Lambda console à l'adresse [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1.  Dans le volet de navigation, choisissez votre fonction `my-date-time-app-myDateTimeFunction`. Dans la console, son nom contient un identifiant. Il ressemble donc à `my-date-time-app-myDateTimeFunction-123456ABCDEF`. 

1.  Choisissez **Aliases**, puis choisissez **Live**. 

Les pondérations en regard de votre version de fonction d'origine (version 1) et de votre version de fonction mise à jour (version 2) indiquent la quantité de trafic transmise à chaque version au moment du chargement de cette page de la console AWS Lambda . La page ne met pas à jour les pondérations au fil du temps. Si vous actualisez la page une fois par minute, la pondération de la version 1 diminue de 10 % et la pondération de la version 2 augmente de 10 % jusqu'à ce que la pondération de la version 2 soit égale à 100. 

![\[La section des alias de la CodeDeploy console.\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/images/lambda-tutorial-lambda-console-20-percent-deployed.png)


# Étape 4 : Afficher les résultats de votre déploiement
<a name="tutorial-lambda-sam-deploy-view-results"></a>

Au cours de cette étape, vous affichez les résultats de votre déploiement. Si votre déploiement réussit, vous pouvez vérifier que votre fonction Lambda mise à jour reçoit le trafic de production. Si votre déploiement échoue, vous pouvez utiliser CloudWatch les journaux pour consulter le résultat des tests de validation de la fonction Lambda exécutés pendant les accrocs du cycle de vie de votre déploiement. 

**Topics**
+ [Testez votre fonction déployée](#tutorial-lambda-sam-deploy-test-deployed-function)
+ [Afficher les événements liés aux livres dans CloudWatch Logs](#tutorial-lambda-view-hook-events)

## Testez votre fonction déployée
<a name="tutorial-lambda-sam-deploy-test-deployed-function"></a>

 La **sam deploy** commande met à jour la fonction `my-date-time-app-myDateTimeFunction` Lambda. La version de la fonction est mise à jour pour passer à 2 et ajoutée à l'alias `live`. 

**Pour voir la mise à jour dans la console Lambda**

1. Ouvrez la AWS Lambda console à l'adresse [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1.  Dans le volet de navigation, choisissez la fonction `my-date-time-app-myDateTimeFunction`. Dans la console, son nom contient un identifiant. Il ressemble donc à `my-date-time-app-myDateTimeFunction-123456ABCDEF`. 

1.  Choisissez **Qualificateurs**, puis **Alias**. Une fois le déploiement terminé (au bout de 10 minutes environ), pour l'alias `live`, vous devriez voir **Version : 2**.  
![\[La section des alias de la CodeDeploy console.\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/images/lambda-tutorial-function-version.png)

1.  Dans **Code de fonction**, affichez le code source de votre fonction. Vos modifications devraient apparaître. 

1.  (Facultatif) Vous pouvez utiliser les instructions de test de [Étape 2 : mise à jour de la fonction Lambda](tutorial-lambda-sam-update-function.md) pour tester votre fonction mise à jour. Créez un nouvel événement de test avec la charge utile suivante, puis confirmez que le résultat contient l'heure, la minute et la seconde actuelles. 

   ```
   {
       "option": "time"
     }
   ```

    Pour tester la fonction mise AWS CLI à jour, exécutez la commande suivante, puis ouvrez-la `out.txt` pour confirmer que le résultat contient l'heure, la minute et la seconde actuelles. 

   ```
   aws lambda invoke --function your-function-arn --payload "{\"option\": \"time\"}" out.txt 
   ```
**Note**  
 Si vous utilisez le AWS CLI pour tester votre fonction avant la fin du déploiement, vous risquez de recevoir des résultats inattendus. Cela est dû au fait que 10 % du trafic passe CodeDeploy progressivement à la version mise à jour chaque minute. Pendant le déploiement, une partie du trafic pointe toujours vers la version d'origine. `aws lambda invoke` peut donc utiliser la version d'origine. Après 10 minutes, le déploiement est terminé et tout le trafic pointe vers la nouvelle version de la fonction. 

## Afficher les événements liés aux livres dans CloudWatch Logs
<a name="tutorial-lambda-view-hook-events"></a>

 Pendant le `BeforeAllowTraffic` hook, CodeDeploy exécute votre fonction `CodeDeployHook_beforeAllowTraffic` Lambda. Pendant le `AfterAllowTraffic` hook, CodeDeploy exécute votre fonction `CodeDeployHook_afterAllowTraffic` Lambda. Chaque fonction exécute un test de validation qui appelle la version mise à jour de votre fonction à l'aide du nouveau paramètre `time`. Si la mise à jour de votre fonction Lambda est réussie, l'`time`option ne provoque pas d'erreur et la validation est réussie. Si la fonction n'a pas été mise à jour, le paramètre non reconnu entraîne une erreur et la validation échoue. Ces tests de validation sont fournis uniquement à des fins de démonstration. Vous écrivez vos propres tests pour valider votre déploiement. Vous pouvez utiliser la console CloudWatch Logs pour consulter vos tests de validation. 

**Pour consulter les événements liés à vos CodeDeploy accrochages**

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1.  Dans le volet de navigation, choisissez **Logs (Journaux)**. 

1.  Dans la liste des groupes de journaux, choisissez**/aws/lambda/CodeDeployHook\$1 beforeAllowTraffic** ou**/aws/lambda/CodeDeployHook\$1 afterAllowTraffic**. 

1.  Choisissez le flux de journaux. Vous ne devriez en voir qu'un seul. 

1.  Développez les événements pour afficher leurs détails.   
![\[Le flux de journaux d'un groupe de CodeDeployHook journaux.\]](http://docs.aws.amazon.com/fr_fr/codedeploy/latest/userguide/images/lambda-tutorial-cloudwatch.png)

# Étape 5 : nettoyer
<a name="tutorial-lambda-clean-up"></a>

Pour éviter des frais supplémentaires pour les ressources que vous avez utilisées au cours de ce didacticiel, supprimez les ressources créées par votre AWS SAM modèle et les CloudWatch journaux créés par vos fonctions de validation Lambda.

**Pour supprimer votre CloudFormation pile**

1. Connectez-vous à la CloudFormation console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Dans la colonne **Piles**, choisissez votre pile `my-date-time-app`, puis choisissez **Supprimer**.

1. À l'invite, choisissez **Supprimer la pile**. Les fonctions Lambda, CodeDeploy l'application et le groupe de déploiement, ainsi que les rôles IAM créés par AWS SAM sont supprimés.

**Pour supprimer vos journaux dans CloudWatch Logs**

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1.  Dans le volet de navigation, choisissez **Logs (Journaux)**. 

1.  Dans la liste des groupes de journaux, cliquez sur le bouton situé à côté de**/aws/lambda/CodeDeployHook\$1 beforeAllowTraffic**. 

1.  Dans **Actions**, choisissez **Supprimer le groupe de journaux**, puis choisissez **Oui, supprimer**. 

1.  Dans la liste des groupes de journaux, cliquez sur le bouton situé à côté de**/aws/lambda/CodeDeployHook\$1 afterAllowTraffic**. 

1.  Dans **Actions**, choisissez **Supprimer le groupe de journaux**, puis choisissez **Oui, supprimer**. 