

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.

# Création de démos avec le AWS IoT Device Client
<a name="iot-tutorials-dc-intro"></a>

Les didacticiels de ce parcours d'apprentissage vous expliquent les étapes à suivre pour développer un logiciel de démonstration à l'aide du AWS IoT Device Client. Le AWS IoT Device Client fournit un logiciel qui s'exécute sur votre appareil IoT pour tester et démontrer certains aspects d'une solution IoT basée sur celle-ci AWS IoT.

L'objectif de ces didacticiels est de faciliter l'exploration et l'expérimentation afin que vous puissiez être sûr que votre solution AWS IoT prend en charge votre solution avant de développer le logiciel de votre appareil.

**Ce que vous allez apprendre dans ces didacticiels :**
+ Comment préparer un Raspberry Pi pour une utilisation en tant qu'appareil IoT avec AWS IoT
+ Comment démontrer les AWS IoT fonctionnalités à l'aide du client de l' AWS IoT appareil sur votre appareil

Dans ce parcours d'apprentissage, vous allez installer le AWS IoT Device Client sur votre propre Raspberry Pi et créer les AWS IoT ressources dans le cloud pour présenter des idées de solutions IoT. Bien que les didacticiels de ce parcours d’apprentissage présentent les fonctionnalités d’un Raspberry Pi, ils expliquent les objectifs et les procédures pour vous aider à les adapter à d’autres appareils.

## Conditions préalables à la création de démos avec le Device Client AWS IoT
<a name="iot-dc-tutorial-overview"></a>

Cette section décrit ce dont vous aurez besoin avant de commencer les didacticiels de ce parcours d’apprentissage.

**Pour suivre les didacticiels de ce parcours de formation, vous avez besoin des éléments suivants :**
+ 

**Un Compte AWS**  
Vous pouvez utiliser le vôtre existant Compte AWS, si vous en avez un, mais vous devrez peut-être ajouter des rôles ou des autorisations supplémentaires pour utiliser les AWS IoT fonctionnalités utilisées dans ces didacticiels.

  Si vous devez en créer un nouveau Compte AWS, consultez[Configurez Compte AWS](setting-up.md).
+ 

**Un Raspberry Pi ou un appareil IoT compatible**  
Les didacticiels utilisent un [Raspberry Pi](https://www.raspberrypi.org/) car il se présente sous différents formats, il est omniprésent et c’est un appareil de démonstration relativement peu coûteux. Les didacticiels ont été testés sur le [Raspberry Pi 3 modèle B\$1](https://www.raspberrypi.com/products/raspberry-pi-3-model-b-plus/), le [Raspberry Pi 4 modèle B](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/) et sur une instance Amazon EC2 exécutant Ubuntu Server 20.04 LTS (HVM). Pour utiliser AWS CLI et exécuter les commandes, nous vous recommandons d'utiliser la dernière version du système d'exploitation Raspberry Pi ([Raspberry Pi OS (64 bits)](https://www.raspberrypi.com/software/operating-systems/) ou OS Lite). Les versions antérieures du système d’exploitation peuvent fonctionner, mais nous ne les avons pas testées.
**Note**  
Les didacticiels expliquent les objectifs de chaque étape afin de vous aider à les adapter au matériel IoT sur lequel nous ne les avons pas essayés. Toutefois, ils ne décrivent pas spécifiquement comment les adapter à d’autres appareils.
+ 

**Connaissance du système d’exploitation de l’appareil IoT**  
Les étapes de ces didacticiels supposent que vous êtes familiarisé avec l’utilisation des commandes et opérations Linux de base à partir de l’interface de ligne de commande prise en charge par un Raspberry Pi. Si ces opérations ne vous sont pas familières, vous souhaiterez peut-être vous accorder plus de temps pour suivre les didacticiels.

  Pour suivre ces didacticiels, vous devez déjà savoir comment :
  + Effectuez en toute sécurité les opérations de base de l’appareil, telles que l’assemblage et le raccordement des composants, le raccordement de l’appareil aux sources d’alimentation requises, ainsi que l’installation et le retrait de cartes mémoire.
  + Chargez et téléchargez le logiciel système et les fichiers sur l’appareil. Si votre appareil n’utilise pas d’appareil de stockage amovible, tel qu’une carte microSD, vous devez savoir comment vous connecter à votre appareil et comment charger et télécharger le logiciel système et les fichiers sur l’appareil.
  + Connectez votre appareil aux réseaux sur lesquels vous comptez l’utiliser.
  + Connectez-vous à votre appareil depuis un autre ordinateur à l’aide d’un terminal SSH ou d’un programme similaire.
  + Utilisez une interface de ligne de commande pour créer, copier, déplacer, renommer et définir les autorisations des fichiers et des répertoires sur l’appareil.
  + Installez de nouveaux programmes sur l’appareil.
  + Transférez des fichiers depuis et vers votre appareil à l’aide d’outils tels que FTP ou SCP.
+ 

**Un environnement de développement et de test pour votre solution IoT**  
Les didacticiels décrivent le logiciel et le matériel requis ; ils supposent toutefois que vous serez en mesure d’effectuer des opérations qui ne sont peut-être pas décrites explicitement. Voici des exemples de ce type de matériel et d’opérations :
  + 

**Un ordinateur hôte local sur lequel télécharger et stocker des fichiers**  
Pour le Raspberry Pi, il s’agit généralement d’un ordinateur personnel ou portable capable de lire et d’écrire sur des cartes mémoire microSD. L’ordinateur hôte local doit :
    + Soyez connecté à Internet.
    + Installz et configurez le [AWS CLI](https://aws.amazon.com//cli/).
    + Utilisez un navigateur Web compatible avec la AWS console.
  + 

**Un moyen de connecter votre ordinateur hôte local à votre appareil pour communiquer avec lui, entrer des commandes et transférer des fichiers**  
Sur le Raspberry Pi, cela se fait souvent en utilisant SSH et SCP depuis l’ordinateur hôte local.
  + 

**Un écran et un clavier pour se connecter à l'appareil IoT**  
Ils peuvent être utiles, mais ne sont pas obligatoires pour terminer les didacticiels.
  + 

**Un moyen pour votre ordinateur hôte local et vos appareils IoT de se connecter à Internet**  
Il peut s’agir d’une connexion réseau câblée ou sans fil à un routeur ou à une passerelle connecté à Internet. L’hôte local doit également pouvoir se connecter au Raspberry Pi. Cela peut nécessiter qu’ils soient connectés au même réseau local. Les didacticiels ne peuvent pas vous montrer comment configurer cela pour votre appareil ou la configuration de votre appareil en particulier, mais ils montrent comment tester cette connectivité.
  + 

**Accès au routeur de votre réseau local pour voir les appareils connectés**  
Pour suivre les didacticiels de ce parcours d’apprentissage, vous devez être en mesure de trouver l’adresse IP de votre appareil IoT.

    Sur un réseau local, cela peut être fait en accédant à l’interface d’administration du routeur réseau auquel vos appareils se connectent. Si vous pouvez attribuer une adresse IP fixe à votre appareil dans le routeur, vous pouvez simplifier la reconnexion après chaque redémarrage de l’appareil.

    Si un clavier et un moniteur sont connectés à l’appareil, **ifconfig** peut afficher l’adresse IP de l’appareil.

    Si aucune de ces options n’est envisageable, vous devrez trouver un moyen d’identifier l’adresse IP de l’appareil après chaque redémarrage. 

Une fois que vous avez tout votre matériel, continuez vers [Tutoriel : Préparation de vos appareils pour le AWS IoT Device Client](iot-dc-prepare-device.md). 

**Topics**
+ [Conditions préalables à la création de démos avec le Device Client AWS IoT](#iot-dc-tutorial-overview)
+ [Tutoriel : Préparation de vos appareils pour le AWS IoT Device Client](iot-dc-prepare-device.md)
+ [Tutoriel : Installation et configuration du client de AWS IoT périphérique](iot-dc-install-dc.md)
+ [Tutoriel : Démonstration de la communication des messages MQTT avec le client du AWS IoT périphérique](iot-dc-testconn.md)
+ [Tutoriel : Démonstration d'actions à distance (tâches) avec le client du AWS IoT périphérique](iot-dc-runjobs.md)
+ [Tutoriel : Nettoyage après avoir exécuté les didacticiels AWS IoT Device Client](iot-dc-cleanup.md)

# Tutoriel : Préparation de vos appareils pour le AWS IoT Device Client
<a name="iot-dc-prepare-device"></a>

Ce didacticiel vous guide tout au long de l'initialisation de votre Raspberry Pi afin de le préparer aux didacticiels suivants de ce parcours d'apprentissage.

L’objectif de ce tutoriel est d’installer la version actuelle du système d’exploitation de l’appareil et de vous assurer que vous pouvez communiquer avec votre appareil dans le contexte de votre environnement de développement.

**Conditions préalables**  
Avant de commencer ce didacticiel, assurez-vous que les éléments répertoriés [Conditions préalables à la création de démos avec le Device Client AWS IoT](iot-tutorials-dc-intro.md#iot-dc-tutorial-overview) sont disponibles et prêts à être utilisés.

Ce didacticiel vous prendra environ 90 minutes.

**Dans ce tutoriel, vous allez :**
+ Installez et mettez à jour le système d'exploitation de votre appareil.
+ Installez et vérifiez tout logiciel supplémentaire nécessaire pour exécuter les didacticiels.
+ Testez la connectivité de votre appareil et installez les certificats requis.

Une fois ce didacticiel terminé, le didacticiel suivant prépare votre appareil pour les démos utilisant le AWS IoT Device Client.

**Topics**
+ [Installation et mise à jour du système d'exploitation de l'appareil](iot-dc-prepare-device-sys.md)
+ [Installez et vérifiez le logiciel requis sur votre appareil](iot-dc-prepare-device-sw.md)
+ [Testez votre appareil et enregistrez le certificat Amazon CA](iot-dc-prepare-device-test.md)

# Installation et mise à jour du système d'exploitation de l'appareil
<a name="iot-dc-prepare-device-sys"></a>

Les procédures de cette section expliquent comment initialiser la carte microSD que le Raspberry Pi utilise pour son lecteur système. La carte microSD du Raspberry Pi contient le logiciel de son système d'exploitation (OS) ainsi que de l'espace pour le stockage de ses fichiers d'application. Si vous n'utilisez pas de Raspberry Pi, suivez les instructions de l'appareil pour installer et mettre à jour le logiciel du système d'exploitation de l'appareil.

Après avoir terminé cette section, vous devriez être en mesure de démarrer votre appareil IoT et de vous y connecter depuis le programme du terminal sur votre ordinateur hôte local.

**Matériel requis :**
+ Votre environnement local de développement et de test
+ Un Raspberry Pi qui, ou votre appareil IoT, peut se connecter à Internet
+ Une carte mémoire microSD d'une capacité d'au moins 8 Go ou d'une capacité de stockage suffisante pour le système d'exploitation et les logiciels requis.
**Note**  
Lorsque vous sélectionnez une carte microSD pour ces exercices, choisissez-en une aussi grande que nécessaire mais aussi petite que possible.  
Une petite carte SD sera plus rapide à sauvegarder et à mettre à jour. Sur le Raspberry Pi, vous n'aurez pas besoin de plus d'une carte microSD de 8 Go pour ces didacticiels. Si vous avez besoin de plus d'espace pour votre application spécifique, les fichiers image plus petits que vous enregistrez dans ces didacticiels peuvent redimensionner le système de fichiers sur une carte plus grande afin d'utiliser tout l'espace pris en charge par la carte de votre choix.

**Équipement optionnel :**
+ Un clavier USB connecté au Raspberry Pi
+ Un moniteur HDMI et un câble pour connecter le moniteur au Raspberry Pi

**Topics**
+ [Chargez le système d'exploitation de l'appareil sur la carte microSD](#iot-dc-prepare-device-sys-step1)
+ [Démarrez votre appareil IoT avec le nouveau système d'exploitation](#iot-dc-prepare-device-sys-step2)
+ [Connectez votre ordinateur hôte local à votre appareil](#iot-dc-prepare-device-sys-step3)

## Chargez le système d'exploitation de l'appareil sur la carte microSD
<a name="iot-dc-prepare-device-sys-step1"></a>

Cette procédure utilise l'ordinateur hôte local pour charger le système d'exploitation de l'appareil sur une carte microSD.

**Note**  
Si votre appareil n'utilise pas de support de stockage amovible pour son système d'exploitation, installez le système d'exploitation en suivant la procédure correspondant à cet appareil et continuez vers [Démarrez votre appareil IoT avec le nouveau système d'exploitation](#iot-dc-prepare-device-sys-step2).

**Pour installer le système d'exploitation sur votre Raspberry Pi**

1. Sur votre ordinateur hôte local, téléchargez et décompressez l'image du système d'exploitation Raspberry Pi que vous souhaitez utiliser. Les dernières versions sont disponibles auprès des systèmes d'[ https://www.raspberrypi.com/software/exploitation/](https://www.raspberrypi.com/software/operating-systems/) 

**Choisir une version du système d'exploitation Raspberry Pi**  
Ce didacticiel utilise la version **Raspberry Pi OS Lite**, car c'est la plus petite version qui prend en charge les didacticiels de ce parcours d'apprentissage. Cette version du système d'exploitation Raspberry Pi possède uniquement une interface de ligne de commande et n'a pas d'interface utilisateur graphique. Une version du dernier système d'exploitation Raspberry Pi avec une interface utilisateur graphique fonctionnera également avec ces didacticiels ; cependant, les procédures décrites dans ce parcours d'apprentissage utilisent uniquement l'interface de ligne de commande pour effectuer des opérations sur le Raspberry Pi.

1. Insérez votre carte microSD dans l'ordinateur hôte local.

1. À l’aide d’un outil d’imagerie de carte SD, écrivez le fichier image du système d’exploitation décompressé sur la carte microSD.

1. Après avoir écrit l'image du système d'exploitation Raspberry Pi sur la carte microSD :

   1. Ouvrez la partition BOOT de la carte microSD dans une fenêtre de ligne de commande ou dans une fenêtre d'explorateur de fichiers. 

   1. Dans la partition BOOT de la carte microSD, dans le répertoire racine, créez un fichier vide nommé `ssh` sans extension ni contenu. Cela indique au Raspberry Pi d'activer les communications SSH au premier démarrage.

1. Éjectez la carte microSD et retirez-la en toute sécurité de l'ordinateur hôte local.

Votre carte microSD est prête à [Démarrez votre appareil IoT avec le nouveau système d'exploitation](#iot-dc-prepare-device-sys-step2).

## Démarrez votre appareil IoT avec le nouveau système d'exploitation
<a name="iot-dc-prepare-device-sys-step2"></a>

Cette procédure permet d'installer la carte microSD et de démarrer votre Raspberry Pi pour la première fois à l'aide du système d'exploitation téléchargé.

**Pour démarrer votre appareil IoT avec le nouveau système d'exploitation**

1. L'alimentation étant débranchée de l'appareil, insérez la carte microSD de l'étape précédente, [Chargez le système d'exploitation de l'appareil sur la carte microSD](#iot-dc-prepare-device-sys-step1), dans le Raspberry Pi.

1. Connectez l'appareil à un réseau filaire.

1. Ces didacticiels interagiront avec votre Raspberry Pi depuis votre ordinateur hôte local à l'aide d'un terminal SSH.

   Si vous souhaitez également interagir directement avec l'appareil, vous pouvez :

   1. Branchez-y un moniteur HDMI pour regarder les messages de la console du Raspberry Pi avant de pouvoir connecter la fenêtre du terminal de votre ordinateur hôte local à votre Raspberry Pi.

   1. Connectez-y un clavier USB si vous souhaitez interagir directement avec le Raspberry Pi.

1. Connectez l'alimentation au Raspberry Pi et attendez environ une minute pour qu'il s'initialise.

   Si vous avez un moniteur connecté à votre Raspberry Pi, vous pouvez suivre le processus de démarrage sur celui-ci.

1. 

   Découvrez l'adresse IP de votre appareil :
   + Si vous avez connecté un moniteur HDMI au Raspberry Pi, l'adresse IP apparaît dans les messages affichés sur le moniteur 
   + Si vous avez accès au routeur auquel votre Raspberry Pi est connecté, vous pouvez voir son adresse dans l'interface d'administration du routeur.

Une fois que vous avez obtenu l'adresse IP de votre Raspberry Pi, vous êtes prêt à le faire [Connectez votre ordinateur hôte local à votre appareil](#iot-dc-prepare-device-sys-step3).

## Connectez votre ordinateur hôte local à votre appareil
<a name="iot-dc-prepare-device-sys-step3"></a>

Cette procédure utilise le programme de terminal sur votre ordinateur hôte local pour vous connecter à votre Raspberry Pi et modifier son mot de passe par défaut.

**Pour connecter votre ordinateur hôte local à votre appareil**

1. 

   Sur votre ordinateur hôte local, ouvrez le programme du terminal SSH :
   + Windows: `PuTTY`
   + Linux/macOS : `Terminal`
**Note**  
PuTTY n'est pas installé automatiquement sous Windows. S'il ne se trouve pas sur votre ordinateur, vous devrez peut-être le télécharger et l'installer.

1. Connectez le programme du terminal à l'adresse IP de votre Raspberry Pi et connectez-vous à l'aide de ses informations d'identification par défaut.

   ```
   username: pi
   password: raspberry
   ```

1. Après vous être connecté à votre Raspberry Pi, modifiez le mot de passe pour l'utilisateur `pi`.

   ```
   passwd
   ```

   Suivez les instructions pour modifier le mot de passe.

   ```
   Changing password for pi.
   Current password: raspberry
   New password: YourNewPassword
   Retype new password: YourNewPassword
   passwd: password updated successfully
   ```

Après avoir affiché l'invite de ligne de commande du Raspberry Pi dans la fenêtre du terminal et modifié le mot de passe, vous êtes prêt à continuer [Installez et vérifiez le logiciel requis sur votre appareil](iot-dc-prepare-device-sw.md).

# Installez et vérifiez le logiciel requis sur votre appareil
<a name="iot-dc-prepare-device-sw"></a>

Les procédures décrites dans cette section reprennent celles de [la section précédente](iot-dc-prepare-device-sys.md) pour mettre à jour le système d'exploitation de votre Raspberry Pi et installer le logiciel sur le Raspberry Pi qui sera utilisé dans la section suivante pour créer et installer le client de AWS IoT périphérique.

Une fois cette section terminée, votre Raspberry Pi disposera up-to-date d'un système d'exploitation, du logiciel requis par les didacticiels de ce parcours d'apprentissage, et il sera configuré en fonction de votre emplacement.

**Matériel requis :**
+ Votre environnement de développement et de test local décrit [dans la section précédente](iot-dc-prepare-device-sys.md)
+ Le Raspberry Pi que vous avez utilisé dans [la section précédente](iot-dc-prepare-device-sys.md)
+ La carte mémoire microSD de [la section précédente](iot-dc-prepare-device-sys.md)

**Note**  
Le Raspberry Pi Model 3\$1 et le Raspberry Pi Model 4 peuvent exécuter toutes les commandes décrites dans ce parcours d'apprentissage. Si votre appareil IoT ne parvient pas à compiler le logiciel ou à l'exécuter AWS Command Line Interface, vous devrez peut-être installer les compilateurs requis sur votre ordinateur hôte local pour créer le logiciel, puis le transférer sur votre appareil IoT. Pour obtenir plus d'informations sur l'installation et le développement de logiciels pour votre appareil, consultez la documentation du logiciel de votre appareil.

**Topics**
+ [Mettre à jour le logiciel du système d'exploitation](#iot-dc-prepare-device-sw-step1)
+ [Installer les applications et les bibliothèques obligatoires](#iot-dc-prepare-device-sw-step2)
+ [(Facultatif) Enregistrez l'image de la carte microSD](#iot-dc-prepare-device-sw-step3)

## Mettre à jour le logiciel du système d'exploitation
<a name="iot-dc-prepare-device-sw-step1"></a>

Cette procédure met à jour le logiciel du système d'exploitation.

**Pour mettre à jour le logiciel du système d'exploitation sur le Raspberry Pi**

Effectuez ces étapes dans la fenêtre du terminal de votre ordinateur hôte local.

1. Entrez ces commandes pour mettre à jour le logiciel système de votre Raspberry Pi.

   ```
   sudo apt-get -y update
   sudo apt-get -y upgrade
   sudo apt-get -y autoremove
   ```

1. Mettez à jour les paramètres régionaux et de fuseau horaire du Raspberry Pi (facultatif).

   Entrez cette commande pour mettre à jour les paramètres régionaux et de fuseau horaire de l'appareil.

   ```
   sudo raspi-config
   ```

   1. Pour définir les paramètres régionaux de l'appareil :

      1. Dans Ecran de **Outil de configuration logicielle Raspberry Pi (raspi-config)**, choisissez l'option **5**.

         **`5 Localisation Options Configure language and regional settings`**

         Utilisez la Tab touche pour passer à**,** <Select>puis appuyez sur lespace bar.

      1. Dans le menu des options de localisation, choisissez l'option **L1**.

         **`L1 Locale Configure language and regional settings`**

         Utilisez la touche Tab pour passer à **<Select>,** puis appuyez sur lespace bar.

      1. Dans la liste des options de paramètres régionaux, choisissez les paramètres régionaux que vous souhaitez installer sur votre Raspberry Pi en utilisant les touches fléchées pour faire défiler la page et space bar en sélectionnant celles que vous souhaitez. 

         Aux États-Unis, **`en_US.UTF-8`** est un bon choix.

      1. Après avoir sélectionné les paramètres régionaux pour votre appareil, utilisez la touche Tab pour choisir****<OK>, puis appuyez sur le space bar pour afficher la page de confirmation de **configuration des paramètres régionaux**.

   1. Pour définir le fuseau horaire de l'appareil, procédez comme suit :

      1. Dans l'écran **raspi-config**, choisissez l'option **5**.

         **`5 Localisation Options Configure language and regional settings`**

         Utilisez la touche Tab pour passer à **<Select>,** puis appuyez sur lespace bar.

      1. Dans le menu des options de localisation, utilisez la touche fléchée pour sélectionner l'option **L2** :

         **`L2 time zone Configure time zone`**

         Utilisez la touche Tab pour passer à **<Select>,** puis appuyez sur lespace bar.

      1. Dans le menu **Configuration de tzdata**, choisissez votre zone géographique dans la liste. 

         Utilisez la touche Tab pour passer à **<OK>,** puis appuyez sur space bar.

      1. Dans la liste des villes, utilisez les flèches pour sélectionner une ville dans votre fuseau horaire.

         Pour définir le fuseau horaire, utilisez la touche Tab pour passer à **<OK>,** puis appuyez sur space bar.

   1. Lorsque vous avez terminé de mettre à jour les paramètres, utilisez la touche Tab pour accéder à****<Finish>, puis appuyez sur la touche space bar pour fermer l'application **raspi-config**.

1. Entrez cette commande pour redémarrer votre Raspberry Pi.

   ```
   sudo shutdown -r 0
   ```

1. Attendez que votre Raspberry Pi redémarre.

1. Après le redémarrage de votre Raspberry Pi, reconnectez la fenêtre du terminal de votre ordinateur hôte local à votre Raspberry Pi.

Le logiciel de votre système Raspberry Pi est maintenant configuré et vous êtes prêt à continuer [Installer les applications et les bibliothèques obligatoires](#iot-dc-prepare-device-sw-step2).

## Installer les applications et les bibliothèques obligatoires
<a name="iot-dc-prepare-device-sw-step2"></a>

Cette procédure installe le logiciel d'application et les bibliothèques utilisés dans les didacticiels suivants.

Si vous utilisez un Raspberry Pi ou si vous pouvez compiler le logiciel requis sur votre appareil IoT, effectuez ces étapes dans la fenêtre du terminal de votre ordinateur hôte local. Si vous devez compiler le logiciel pour votre appareil IoT sur votre ordinateur hôte local, consultez la documentation du logiciel de votre appareil IoT pour savoir comment effectuer ces étapes sur votre appareil.

**Pour installer le logiciel d'application et les bibliothèques sur votre Raspberry Pi**

1. Entrez cette commande pour installer le logiciel d'application et les bibliothèques.

   ```
   sudo apt-get -y install build-essential libssl-dev cmake unzip git python3-pip
   ```

1. Entrez ces commandes pour vérifier que la bonne version du logiciel a été installée.

   ```
   gcc --version
   cmake --version
   openssl version
   git --version
   ```

1. 

   Vérifiez que les versions suivantes du logiciel d'application sont installées :
   + `gcc`: 9.3.0 ou version ultérieure
   + `cmake`: 3.10.x ou version ultérieure
   + `OpenSSL`: 1.1.1 ou version ultérieure
   + `git`: 2.20.1 ou version ultérieure

Si votre Raspberry Pi possède des versions acceptables du logiciel d'application requis, vous êtes prêt à continuer [(Facultatif) Enregistrez l'image de la carte microSD](#iot-dc-prepare-device-sw-step3).

## (Facultatif) Enregistrez l'image de la carte microSD
<a name="iot-dc-prepare-device-sw-step3"></a>

Tout au long des didacticiels de ce parcours d'apprentissage, vous rencontrerez ces procédures pour enregistrer une copie de l'image de la carte microSD du Raspberry Pi dans un fichier sur votre ordinateur hôte local. Bien qu'elles soient encouragées, ce ne sont pas des tâches obligatoires. En enregistrant l'image de la carte microSD à l'endroit suggéré, vous pouvez ignorer les procédures qui précèdent le point de sauvegarde dans ce parcours d'apprentissage, ce qui peut vous faire gagner du temps si vous ressentez le besoin de réessayer quelque chose. La conséquence de ne pas enregistrer périodiquement l'image de la carte microSD est que vous devrez peut-être redémarrer les didacticiels du parcours d'apprentissage depuis le début si votre carte microSD est endommagée ou si vous configurez accidentellement une application ou ses paramètres de manière incorrecte.

À ce stade, la carte microSD de votre Raspberry Pi dispose d'un système d'exploitation mis à jour et du logiciel d'application de base chargé. Vous pouvez gagner le temps qu'il vous a fallu pour effectuer les étapes précédentes en enregistrant maintenant le contenu de la carte microSD dans un fichier. Avoir l'image actuelle de l'image de la carte microSD de votre appareil vous permet de partir de ce point pour continuer ou réessayer un didacticiel ou une procédure sans avoir besoin d'installer et de mettre à jour le logiciel à partir de zéro.

**Pour enregistrer l'image de la carte microSD dans un fichier**

1. Entrez cette commande pour arrêter le Raspberry Pi.

   ```
   sudo shutdown -h 0
   ```

1. Une fois le Raspberry Pi complètement éteint, coupez son alimentation.

1. Retirez la carte microSD du Raspberry Pi.

1. Sur votre ordinateur hôte local : 

   1. Insérez la carte microSD.

   1. À l’aide de votre outil d’imagerie de carte SD, enregistrez l’image de la carte microSD dans un fichier.

   1. Une fois l'image de la carte microSD enregistrée, éjectez-la de l'ordinateur hôte local.

1. L'alimentation du Raspberry Pi étant débranchée, insérez la carte microSD dans le Raspberry Pi.

1. Alimentez le Raspberry Pi.

1. Après avoir attendu environ une minute, sur l'ordinateur hôte local, reconnectez la fenêtre du terminal sur votre ordinateur hôte local qui était connecté à votre Raspberry Pi., puis connectez-vous au Raspberry Pi.

# Testez votre appareil et enregistrez le certificat Amazon CA
<a name="iot-dc-prepare-device-test"></a>

Les procédures décrites dans cette section reprennent celles de [la section précédente](iot-dc-prepare-device-sw.md) pour installer le certificat AWS Command Line Interface et le certificat de l'autorité de certification utilisés pour authentifier vos connexions. AWS IoT Core

Après avoir terminé cette section, vous saurez que votre Raspberry Pi dispose du logiciel système nécessaire pour installer le client du AWS IoT périphérique et qu'il dispose d'une connexion Internet fonctionnelle.

**Matériel requis :**
+ Votre environnement de développement et de test local décrit [dans la section précédente](iot-dc-prepare-device-sw.md)
+ Le Raspberry Pi que vous avez utilisé dans [la section précédente](iot-dc-prepare-device-sw.md)
+ La carte mémoire microSD de [la section précédente](iot-dc-prepare-device-sw.md)

**Topics**
+ [Installez le AWS Command Line Interface](#iot-dc-prepare-device-test-step1)
+ [Configurez vos Compte AWS informations d'identification](#iot-dc-prepare-device-test-step2)
+ [Téléchargez le certificat Amazon Root CA](#iot-dc-prepare-device-test-step3)
+ [(Facultatif) Enregistrez l'image de la carte microSD](#iot-dc-prepare-device-test-step4)

## Installez le AWS Command Line Interface
<a name="iot-dc-prepare-device-test-step1"></a>

Cette procédure permet de l'installer AWS CLI sur votre Raspberry Pi.

Si vous utilisez un Raspberry Pi ou si vous pouvez compiler un logiciel sur votre appareil IoT, effectuez ces étapes dans la fenêtre du terminal sur votre ordinateur hôte local. Si vous devez compiler un logiciel pour votre appareil IoT sur votre ordinateur hôte local, consultez la documentation logicielle de votre appareil IoT pour obtenir des informations sur les bibliothèques dont il a besoin.

**Pour l'installer AWS CLI sur votre Raspberry Pi**

1. Exécutez ces commandes pour télécharger et installer le AWS CLI.

   ```
   export PATH=$PATH:~/.local/bin # configures the path to include the directory with the AWS CLI
   git clone https://github.com/aws/aws-cli.git # download the AWS CLI code from GitHub
   cd aws-cli && git checkout v2 # go to the directory with the repo and checkout version 2
   pip3 install -r requirements.txt # install the prerequisite software
   ```

1. Exécutez cette commande pour installer le AWS CLI. Cette commande peut prendre jusqu'à 15 minutes.

   ```
   pip3 install . # install the AWS CLI 
   ```

1. Exécutez cette commande pour vérifier que la bonne version de AWS CLI a été installée.

   ```
   aws --version
   ```

   La version de AWS CLI doit être 2.2 ou ultérieure.

Si la version actuelle est AWS CLI affichée, vous êtes prêt à continuer[Configurez vos Compte AWS informations d'identification](#iot-dc-prepare-device-test-step2).

## Configurez vos Compte AWS informations d'identification
<a name="iot-dc-prepare-device-test-step2"></a>

Dans cette procédure, vous allez obtenir des Compte AWS informations d'identification et les ajouter pour les utiliser sur votre Raspberry Pi.

**Pour ajouter vos Compte AWS informations d'identification à votre appareil**

1. Obtenez un **identifiant de clé d'accès** et une **clé d'accès secrète** auprès de vous Compte AWS pour les authentifier AWS CLI sur votre appareil. 

   Si vous utilisez AWS IAM pour la première fois, le [ https://aws.amazon.com/premiumsupport/centre de connaissances/create-access-key/](https://aws.amazon.com/premiumsupport/knowledge-center/create-access-key/)décrit le processus à exécuter dans la AWS console pour créer des informations d'identification AWS IAM à utiliser sur votre appareil. 

1. Dans la fenêtre du terminal de votre ordinateur hôte local connecté à votre Raspberry Pi et avec les informations d'identification de la **clé d'accès** et de la **clé d'accès secrète** de votre appareil :

   1. Exécutez l'application de AWS configuration à l'aide de cette commande :

      ```
      aws configure
      ```

   1. Entrez vos informations d'identification et de configuration lorsque vous y êtes invité :

      ```
      AWS Access Key ID: your Access Key ID
      AWS Secret Access Key: your Secret Access Key
      Default region name: your Région AWS code
      Default output format: json
      ```

1. Exécutez cette commande pour tester l'accès de votre appareil à votre AWS IoT Core terminal Compte AWS et à votre terminal.

   ```
   aws iot describe-endpoint --endpoint-type iot:Data-ATS
   ```

   Il doit renvoyer votre point de terminaison de AWS IoT données Compte AWS spécifique, comme dans cet exemple :

   ```
   {
       "endpointAddress": "a3EXAMPLEffp-ats.iot.us-west-2.amazonaws.com"
   }
   ```

Si vous voyez votre point de terminaison de AWS IoT données Compte AWS spécifique, votre Raspberry Pi dispose de la connectivité et des autorisations nécessaires pour continuer[Téléchargez le certificat Amazon Root CA](#iot-dc-prepare-device-test-step3). 

**Important**  
Vos Compte AWS informations d'identification sont désormais stockées sur la carte microSD de votre Raspberry Pi. Bien que cela facilite les interactions futures avec AWS vous et les logiciels que vous allez créer dans ces didacticiels, elles seront également enregistrées et dupliquées par défaut dans toutes les images de carte microSD que vous créerez après cette étape.  
Pour garantir la sécurité de vos Compte AWS informations d'identification, avant d'enregistrer d'autres images de carte microSD, pensez à effacer les informations d'identification en exécutant à `aws configure` nouveau et en saisissant des caractères aléatoires pour l'**ID de clé d'accès et la clé d'accès** **secrète** afin d'éviter que vos Compte AWS informations d'identification ne soient compromises.  
Si vous constatez que vous avez enregistré vos Compte AWS informations d'identification par inadvertance, vous pouvez les désactiver dans la AWS console IAM. 

## Téléchargez le certificat Amazon Root CA
<a name="iot-dc-prepare-device-test-step3"></a>

Cette procédure télécharge et enregistre une copie d'un certificat de l'Amazon Root Certificate Authority (CA). Le téléchargement de ce certificat est enregistré pour être utilisé dans les didacticiels suivants et permet également de tester la connectivité de votre appareil aux services AWS .

**Pour télécharger et enregistrer le certificat Amazon Root CA**

1. Exécutez cette commande pour créer un répertoire pour le certificat.

   ```
   mkdir ~/certs
   ```

1. Exécutez cette commande pour télécharger le certificat Amazon Root CA.

   ```
   curl -o ~/certs/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

1. Exécutez ces commandes pour définir l'accès au répertoire du certificat et à son fichier.

   ```
   chmod 745 ~
   chmod 700 ~/certs
   chmod 644 ~/certs/AmazonRootCA1.pem
   ```

1. Exécutez cette commande pour voir le fichier de certificat CA dans le nouveau répertoire.

   ```
   ls -l ~/certs
   ```

   Vous devriez voir une entrée comme celle-ci. La date et l'heure seront différentes ; cependant, la taille du fichier et toutes les autres informations doivent être les mêmes que celles indiquées ici.

   ```
   -rw-r--r-- 1 pi pi 1188 Oct 28 13:02 AmazonRootCA1.pem
   ```

   Si la taille du fichier n’est pas `1188`, vérifiez les paramètres de commande **curl**. Vous avez peut-être téléchargé un fichier incorrect.

## (Facultatif) Enregistrez l'image de la carte microSD
<a name="iot-dc-prepare-device-test-step4"></a>

À ce stade, la carte microSD de votre Raspberry Pi dispose d'un système d'exploitation mis à jour et du logiciel d'application de base chargé. 

**Pour enregistrer l'image de la carte microSD dans un fichier**

1. Dans la fenêtre du terminal de votre ordinateur hôte local, effacez vos informations d'identification AWS .

   1. Exécutez l'application de AWS configuration à l'aide de cette commande :

      ```
      aws configure
      ```

   1. Remplacez vos informations d'identification lorsque vous y êtes invité. Vous pouvez laisser le **nom de la région** **par défaut et le format de sortie** par défaut tels quels en appuyant sur **Entrée**.

      ```
      AWS Access Key ID [****************YT2H]: XYXYXYXYX
      AWS Secret Access Key [****************9plH]: XYXYXYXYX
      Default region name [us-west-2]: 
      Default output format [json]:
      ```

1. Entrez cette commande pour arrêter le Raspberry Pi.

   ```
   sudo shutdown -h 0
   ```

1. Une fois le Raspberry Pi complètement arrêté, retirez son connecteur d'alimentation.

1. Retirez la carte microSD de votre appareil.

1. Sur votre ordinateur hôte local : 

   1. Insérez la carte microSD.

   1. À l’aide de votre outil d’imagerie de carte SD, enregistrez l’image de la carte microSD dans un fichier.

   1. Une fois l'image de la carte microSD enregistrée, éjectez-la de l'ordinateur hôte local.

1. L'alimentation du Raspberry Pi étant débranchée, insérez la carte microSD dans le Raspberry Pi.

1. Mettez l'appareil sous tension.

1. Après environ une minute, sur l'ordinateur hôte local, redémarrez la session de fenêtre du terminal et connectez-vous à l'appareil.

   **Ne saisissez pas encore vos Compte AWS informations d'identification.**

Après avoir redémarré et connecté à votre Raspberry Pi, vous êtes prêt à continuer sur [Tutoriel : Installation et configuration du client de AWS IoT périphérique](iot-dc-install-dc.md).

# Tutoriel : Installation et configuration du client de AWS IoT périphérique
<a name="iot-dc-install-dc"></a>

Ce didacticiel explique l'installation et la configuration du client de AWS IoT périphérique, ainsi que la création des AWS IoT ressources que vous utiliserez dans cette démo et dans d'autres.

**Pour démarrer ce didacticiel :**
+ Préparez votre ordinateur hôte local et le Raspberry Pi [du didacticiel précédent](iot-dc-prepare-device.md).

Ce didacticiel peut prendre jusqu'à 90 minutes.

**Lorsque vous avez terminé avec cette rubrique :**
+ Votre appareil IoT sera prêt à être utilisé dans d'autres démonstrations de AWS IoT Device Client.
+ Vous aurez approvisionné votre appareil IoT. AWS IoT Core
+ Vous aurez téléchargé et installé le client de l' AWS IoT appareil sur votre appareil.
+ Vous aurez enregistré une image de la carte microSD de votre appareil qui pourra être utilisée dans les didacticiels suivants.

**Matériel requis :**
+ Votre environnement de développement et de test local décrit [dans la section précédente](iot-dc-prepare-device-test.md)
+ Le Raspberry Pi que vous avez utilisé dans [la section précédente](iot-dc-prepare-device-test.md)
+ La carte mémoire microSD du Raspberry Pi que vous avez utilisée dans [la section précédente](iot-dc-prepare-device-test.md)

**Topics**
+ [Téléchargez et enregistrez le client de AWS IoT l'appareil](iot-dc-install-download.md)
+ [Approvisionnez votre Raspberry Pi AWS IoT](iot-dc-install-provision.md)
+ [Configurer le client du AWS IoT périphérique pour tester la connectivité](iot-dc-install-configure.md)

# Téléchargez et enregistrez le client de AWS IoT l'appareil
<a name="iot-dc-install-download"></a>

Les procédures décrites dans cette section permettent de télécharger le client de AWS IoT périphérique, de le compiler et de l'installer sur votre Raspberry Pi. Après avoir testé l'installation, vous pouvez enregistrer l'image de la carte microSD du Raspberry Pi pour l'utiliser ultérieurement lorsque vous souhaiterez réessayer les didacticiels.

**Topics**
+ [Téléchargez et créez le AWS IoT Device Client](#iot-dc-install-dc-download)
+ [Créez les répertoires utilisés par les didacticiels](#iot-dc-install-dc-files)
+ [(Facultatif) Enregistrez l'image de la carte microSD](#iot-dc-install-dc-save)

## Téléchargez et créez le AWS IoT Device Client
<a name="iot-dc-install-dc-download"></a>

Cette procédure installe le AWS IoT Device Client sur votre Raspberry Pi.

Exécutez ces commandes dans la fenêtre du terminal de votre ordinateur hôte local connecté à votre Raspberry Pi.

**Pour installer le client de AWS IoT périphérique sur votre Raspberry Pi**

1. Entrez ces commandes pour télécharger et créer le client de AWS IoT périphérique sur votre Raspberry Pi.

   ```
   cd ~
   git clone https://github.com/awslabs/aws-iot-device-client aws-iot-device-client
   mkdir ~/aws-iot-device-client/build && cd ~/aws-iot-device-client/build
   cmake ../
   ```

1. Exécutez cette commande pour créer le client de AWS IoT périphérique. Cette commande peut prendre jusqu'à 15 minutes.

   ```
   cmake --build . --target aws-iot-device-client
   ```

   Les messages d'avertissement affichés lors de la compilation du AWS IoT Device Client peuvent être ignorés.

   Ces didacticiels ont été testés avec le AWS IoT Device Client intégré**gcc**, version (Raspbian 10.2.1-6\$1rpi1) 10.2.1 20210110 sur la version du 30 octobre 2021 du système d'exploitation Raspberry Pi (bullseye) activée**gcc**, version (Raspbian 8.3.0-6\$1rpi1) 8.3.0 sur la version du 7 mai 2021 du système d'exploitation Raspberry Pi (buster).

1. Une fois que le AWS IoT Device Client a terminé de construire, testez-le en exécutant cette commande.

   ```
   ./aws-iot-device-client --help
   ```

Si vous voyez l'aide en ligne de commande pour le AWS IoT client de AWS IoT périphérique, celui-ci a été créé avec succès et est prêt à être utilisé.

## Créez les répertoires utilisés par les didacticiels
<a name="iot-dc-install-dc-files"></a>

Cette procédure crée les répertoires du Raspberry Pi qui seront utilisés pour stocker les fichiers utilisés par les didacticiels de ce parcours d'apprentissage.

**Pour créer les répertoires utilisés par les didacticiels de ce parcours d'apprentissage, procédez comme suit :**

1. Exécutez ces commandes pour créer les répertoires requis.

   ```
   mkdir ~/dc-configs
   mkdir ~/policies
   mkdir ~/messages
   mkdir ~/certs/testconn
   mkdir ~/certs/pubsub
   mkdir ~/certs/jobs
   ```

1. Exécutez ces commandes pour définir les autorisations sur les nouveaux répertoires.

   ```
   chmod 745 ~
   chmod 700 ~/certs/testconn
   chmod 700 ~/certs/pubsub
   chmod 700 ~/certs/jobs
   ```

Après avoir créé ces annuaires et défini leur autorisation, passez à [(Facultatif) Enregistrez l'image de la carte microSD](#iot-dc-install-dc-save).

## (Facultatif) Enregistrez l'image de la carte microSD
<a name="iot-dc-install-dc-save"></a>

À ce stade, la carte microSD de votre Raspberry Pi dispose d'un système d'exploitation mis à jour, du logiciel d'application de base et du client de AWS IoT périphérique. 

Si vous souhaitez réessayer ces exercices et didacticiels, vous pouvez ignorer les procédures précédentes en écrivant l'image de la carte microSD que vous avez enregistrée avec cette procédure sur une nouvelle carte microSD et en continuant les didacticiels à partir de cette procédure [Approvisionnez votre Raspberry Pi AWS IoT](iot-dc-install-provision.md).

**Pour enregistrer l'image de la carte microSD dans un fichier :**

Dans la fenêtre du terminal sur votre ordinateur hôte local connecté à votre Raspberry Pi :

1. Vérifiez que vos Compte AWS informations d'identification n'ont pas été enregistrées.

   1. Exécutez l'application de AWS configuration à l'aide de cette commande :

      ```
      aws configure
      ```

   1. Si vos informations d'identification ont été enregistrées (si elles sont affichées dans l'invite), entrez la chaîne **XYXYXYXYX** lorsque vous y êtes invité, comme indiqué ici. Laissez le **nom de la région** **par défaut et le format de sortie par défaut** vides.

      ```
      AWS Access Key ID [****************YXYX]: XYXYXYXYX
      AWS Secret Access Key [****************YXYX]: XYXYXYXYX
      Default region name: 
      Default output format:
      ```

1. Entrez cette commande pour arrêter le Raspberry Pi.

   ```
   sudo shutdown -h 0
   ```

1. Une fois le Raspberry Pi complètement arrêté, retirez son connecteur d'alimentation.

1. Retirez la carte microSD de votre appareil.

1. Sur votre ordinateur hôte local : 

   1. Insérez la carte microSD.

   1. À l’aide de votre outil d’imagerie de carte SD, enregistrez l’image de la carte microSD dans un fichier.

   1. Une fois l'image de la carte microSD enregistrée, éjectez-la de l'ordinateur hôte local.

Vous pouvez continuer avec cette carte microSD [Approvisionnez votre Raspberry Pi AWS IoT](iot-dc-install-provision.md).

# Approvisionnez votre Raspberry Pi AWS IoT
<a name="iot-dc-install-provision"></a>

Les procédures décrites dans cette section commencent par l'image microSD enregistrée sur laquelle le client de AWS IoT périphérique est installé AWS CLI et créent les AWS IoT ressources et les certificats de périphérique qui approvisionnent votre Raspberry Pi. AWS IoT

## Installez la carte microSD dans votre Raspberry Pi
<a name="iot-dc-install-dc-restore"></a>

Cette procédure permet d'installer la carte microSD avec le logiciel nécessaire chargé et configuré dans le Raspberry Pi et de la configurer afin que Compte AWS vous puissiez poursuivre les didacticiels de ce parcours d'apprentissage.

Utilisez une carte microSD de [(Facultatif) Enregistrez l'image de la carte microSD](iot-dc-install-download.md#iot-dc-install-dc-save) contenant le logiciel nécessaire pour les exercices et tutoriels de ce parcours d'apprentissage.

**Pour installer la carte microSD dans votre Raspberry Pi**

1. L'alimentation du Raspberry Pi étant débranchée, insérez la carte microSD dans le Raspberry Pi.

1. Alimentez le Raspberry Pi.

1. Après environ une minute, sur l'ordinateur hôte local, redémarrez la session de fenêtre du terminal et connectez-vous au Raspberry Pi.

1. Sur votre ordinateur hôte local, dans la fenêtre du terminal, et avec les **informations d'identification de la clé d'accès** et de la **clé d'accès secrète** de votre Raspberry Pi :

   1. Exécutez l'application de AWS configuration à l'aide de cette commande :

      ```
      aws configure
      ```

   1. Entrez vos Compte AWS informations d'identification et de configuration lorsque vous y êtes invité :

      ```
      AWS Access Key ID [****************YXYX]: your Access Key ID
      AWS Secret Access Key [****************YXYX]: your Secret Access Key
      Default region name [us-west-2]: your Région AWS code
      Default output format [json]: json
      ```

Après avoir restauré vos Compte AWS informations d'identification, vous êtes prêt à continuer[Approvisionnez votre appareil en AWS IoT Core](#iot-dc-install-dc-provision).

## Approvisionnez votre appareil en AWS IoT Core
<a name="iot-dc-install-dc-provision"></a>

Les procédures décrites dans cette section créent les AWS IoT ressources qui approvisionnent votre Raspberry Pi AWS IoT. Au fur et à mesure que vous créez ces ressources, il vous sera demandé d'enregistrer diverses informations. Ces informations sont utilisées par la configuration du client du AWS IoT périphérique dans la procédure suivante.

Pour que votre Raspberry Pi fonctionne AWS IoT, il doit être configuré. Le provisionnement est le processus de création et de configuration des AWS IoT ressources nécessaires pour prendre en charge votre Raspberry Pi en tant qu'appareil IoT.

Une fois votre Raspberry Pi allumé et redémarré, connectez la fenêtre du terminal de votre ordinateur hôte local au Raspberry Pi et effectuez ces procédures.

**Topics**
+ [Création et téléchargement de fichiers de certificat d'appareil](#iot-dc-install-dc-provision-certs)
+ [Créez des AWS IoT ressources](#iot-dc-install-dc-provision-resources)

### Création et téléchargement de fichiers de certificat d'appareil
<a name="iot-dc-install-dc-provision-certs"></a>

Cette procédure crée les fichiers de certificat de l'appareil pour cette démonstration.

**Pour créer et télécharger les fichiers de certificat d'appareil pour votre Raspberry Pi**

1. Dans la fenêtre du terminal de votre ordinateur hôte local, entrez ces commandes pour créer les fichiers de certificat de périphérique pour votre appareil.

   ```
   mkdir ~/certs/testconn
   aws iot create-keys-and-certificate \
   --set-as-active \
   --certificate-pem-outfile "~/certs/testconn/device.pem.crt" \
   --public-key-outfile "~/certs/testconn/public.pem.key" \
   --private-key-outfile "~/certs/testconn/private.pem.key"
   ```

   La commande renvoie une réponse comme celle-ci. Enregistrez la valeur `certificateArn` pour une utilisation ultérieure.

   ```
   {
       "certificateArn": "arn:aws:iot:us-west-2:57EXAMPLE833:cert/76e7e4edb3e52f52334be2f387a06145b2aa4c7fcd810f3aea2d92abc227d269",
       "certificateId": "76e7e4edb3e52f5233EXAMPLE7a06145b2aa4c7fcd810f3aea2d92abc227d269",
       "certificatePem": "-----BEGIN CERTIFICATE-----\nMIIDWTCCAkGgAwIBAgI_SHORTENED_FOR_EXAMPLE_Lgn4jfgtS\n-----END CERTIFICATE-----\n",
       "keyPair": {
           "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BA_SHORTENED_FOR_EXAMPLE_ImwIDAQAB\n-----END PUBLIC KEY-----\n",
           "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQE_SHORTENED_FOR_EXAMPLE_T9RoDiukY\n-----END RSA PRIVATE KEY-----\n"
       }
   }
   ```

1. Entrez les commandes suivantes pour définir les autorisations sur le répertoire des certificats et ses fichiers.

   ```
   chmod 745 ~
   chmod 700 ~/certs/testconn
   chmod 644 ~/certs/testconn/*
   chmod 600 ~/certs/testconn/private.pem.key
   ```

1. Exécutez cette commande pour vérifier les autorisations sur vos répertoires et fichiers de certificats.

   ```
   ls -l ~/certs/testconn
   ```

   Le résultat de la commande doit être identique à ce que vous voyez ici, sauf que les dates et heures du fichier seront différentes.

   ```
   -rw-r--r-- 1 pi pi 1220 Oct 28 13:02 device.pem.crt
   -rw------- 1 pi pi 1675 Oct 28 13:02 private.pem.key
   -rw-r--r-- 1 pi pi  451 Oct 28 13:02 public.pem.key
   ```

À ce stade, les fichiers de certificat de l'appareil sont installés sur votre Raspberry Pi et vous pouvez continuer [Créez des AWS IoT ressources](#iot-dc-install-dc-provision-resources).

### Créez des AWS IoT ressources
<a name="iot-dc-install-dc-provision-resources"></a>

Cette procédure approvisionne votre appareil en AWS IoT créant les ressources dont il a besoin pour accéder aux AWS IoT fonctionnalités et aux services.

**Pour approvisionner votre appareil dans AWS IoT**

1. Dans la fenêtre du terminal de votre ordinateur hôte local, entrez la commande suivante pour obtenir l'adresse du point de terminaison des données de l'appareil pour votre Compte AWS.

   ```
   aws iot describe-endpoint --endpoint-type IoT:Data-ATS
   ```

   La commande des étapes précédentes renvoie une réponse comme celle-ci. Enregistrez la valeur `endpointAddress` pour une utilisation ultérieure.

   ```
   {
       "endpointAddress": "a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com"
   }
   ```

1. Entrez cette commande pour créer une ressource d' AWS IoT objets pour votre Raspberry Pi.

   ```
   aws iot create-thing --thing-name "DevCliTestThing"
   ```

   Si votre ressource d' AWS IoT objet a été créée, la commande renvoie une réponse comme celle-ci.

   ```
   {
       "thingName": "DevCliTestThing",
       "thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/DevCliTestThing",
       "thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd"
   }
   ```

1. Dans la fenêtre du terminal :

   1. Ouvrez un éditeur de texte comme `nano`.

   1. Copiez ce document de politique JSON et collez-le dans votre éditeur de texte ouvert.  
****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Publish",
                      "iot:Subscribe",
                      "iot:Receive",
                      "iot:Connect"
                  ],
                  "Resource": [
                      "*"
                  ]
              }
          ]
      }
      ```
**Note**  
Ce document de politique accorde généreusement à chaque ressource l'autorisation de se connecter, de recevoir, de publier et de s'abonner. Normalement, les politiques n'autorisent que des ressources spécifiques à effectuer des actions spécifiques. Toutefois, pour le test initial de connectivité de l'appareil, cette politique trop générale et permissive est utilisée pour minimiser les risques de problème d'accès lors de ce test. Dans les didacticiels suivants, des documents de politique plus restreints seront utilisés pour démontrer les meilleures pratiques en matière de conception de politiques.

   1. Enregistrez le fichier dans votre éditeur de texte sous le nom **\$1/policies/dev\$1cli\$1test\$1thing\$1policy.json** 

1. Exécutez cette commande pour utiliser le document de stratégie décrit dans les étapes précédentes afin de créer une AWS IoT stratégie.

   ```
   aws iot create-policy \
   --policy-name "DevCliTestThingPolicy" \
   --policy-document "file://~/policies/dev_cli_test_thing_policy.json"
   ```

   Si la politique est créée, la commande renvoie une réponse comme celle-ci.

   ```
   {
       "policyName": "DevCliTestThingPolicy",
       "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/DevCliTestThingPolicy",
       "policyDocument": "{\n    \"Version\": \"2012-10-17\",		 	 	 \n    \"Statement\": [\n        {\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"iot:Publish\",\n                \"iot:Subscribe\",\n                \"iot:Receive\",\n                \"iot:Connect\"\n            ],\n            \"Resource\": [\n                \"*\"\n            ]\n        }\n    ]\n}\n",
       "policyVersionId": "1"
   }
   ```

1. Exécutez cette commande pour associer la politique au certificat de l'appareil. Remplacez `certificateArn` par la valeur `certificateArn` que vous avez enregistrée précédemment.

   ```
   aws iot attach-policy \
   --policy-name "DevCliTestThingPolicy" \
   --target "certificateArn"
   ```

   Si elle aboutit, cette commande ne renvoie rien.

1. Exécutez cette commande pour associer le certificat de l'appareil à la ressource d' AWS IoT objet. Remplacez `certificateArn` par la valeur `certificateArn` que vous avez enregistrée précédemment.

   ```
   aws iot attach-thing-principal \
   --thing-name "DevCliTestThing" \
   --principal "certificateArn"
   ```

   Si elle aboutit, cette commande ne renvoie rien.

Une fois que vous avez correctement configuré votre appareil AWS IoT, vous êtes prêt à [Configurer le client du AWS IoT périphérique pour tester la connectivité](iot-dc-install-configure.md) continuer.

# Configurer le client du AWS IoT périphérique pour tester la connectivité
<a name="iot-dc-install-configure"></a>

Les procédures décrites dans cette section configurent le client du AWS IoT périphérique pour publier un message MQTT depuis votre Raspberry Pi.

**Topics**
+ [Créez le fichier de configuration](#iot-dc-install-dc-configure-step1)
+ [Ouvrez le client de test MQTT](#iot-dc-install-dc-configure-step2)
+ [Exécuter AWS IoT le client du périphérique](#iot-dc-install-dc-configure-step3)

## Créez le fichier de configuration
<a name="iot-dc-install-dc-configure-step1"></a>

Cette procédure crée le fichier de configuration pour tester le client du AWS IoT périphérique.

**Pour créer le fichier de configuration pour tester le client du AWS IoT périphérique**
+ Dans la fenêtre du terminal sur votre ordinateur hôte local connecté à votre Raspberry Pi :

  1. Entrez ces commandes pour créer un répertoire pour les fichiers de configuration et définir l'autorisation sur le répertoire :

     ```
     mkdir ~/dc-configs
     chmod 745 ~/dc-configs
     ```

  1. Ouvrez un éditeur de texte comme`nano`.

  1. Copiez ce document JSON et collez-le dans votre éditeur de texte ouvert.

     ```
     {
       "endpoint": "a3qEXAMPLEaffp-ats.iot.us-west-2.amazonaws.com",
       "cert": "~/certs/testconn/device.pem.crt",
       "key": "~/certs/testconn/private.pem.key",
       "root-ca": "~/certs/AmazonRootCA1.pem",
       "thing-name": "DevCliTestThing",
       "logging": {
         "enable-sdk-logging": true,
         "level": "DEBUG",
         "type": "STDOUT",
         "file": ""
       },
       "jobs": {
         "enabled": false,
         "handler-directory": ""
       },
       "tunneling": {
         "enabled": false
       },
       "device-defender": {
         "enabled": false,
         "interval": 300
       },
       "fleet-provisioning": {
         "enabled": false,
         "template-name": "",
         "template-parameters": "",
         "csr-file": "",
         "device-key": ""
       },
       "samples": {
         "pub-sub": {
           "enabled": true,
           "publish-topic": "test/dc/pubtopic",
           "publish-file": "",
           "subscribe-topic": "test/dc/subtopic",
           "subscribe-file": ""
         }
       },
       "config-shadow": {
         "enabled": false
       },
       "sample-shadow": {
         "enabled": false,
         "shadow-name": "",
         "shadow-input-file": "",
         "shadow-output-file": ""
       }
     }
     ```

  1. Remplacez la *endpoint* valeur par le point de terminaison de données de l'appareil dans Compte AWS lequel vous l'avez trouvé[Approvisionnez votre appareil en AWS IoT Core](iot-dc-install-provision.md#iot-dc-install-dc-provision).

  1. Enregistrez le fichier dans votre éditeur de texte sous le nom **\$1/dc-configs/dc-testconn-config.json**.

  1. Exécutez cette commande pour définir les autorisations sur le nouveau fichier de configuration.

     ```
     chmod 644 ~/dc-configs/dc-testconn-config.json
     ```

Après avoir enregistré le fichier, vous êtes prêt à continuer [Ouvrez le client de test MQTT](#iot-dc-install-dc-configure-step2).

## Ouvrez le client de test MQTT
<a name="iot-dc-install-dc-configure-step2"></a>

Cette procédure prépare le **client de test MQTT** dans la AWS IoT console à s'abonner au message MQTT que le client de AWS IoT périphérique publie lors de son exécution.

**Pour préparer le **client de test MQTT** à s'abonner à tous les messages MQTT**

1. Sur votre ordinateur hôte local, dans la [AWS IoT console](https://console.aws.amazon.com//iot/home#/test), choisissez le **client de test MQTT**.

1. Dans l'onglet **S'abonner à un sujet**, dans le **filtre de sujet**, entrez **\$1** ((un seul signe dièse), puis choisissez **S'abonner pour vous** abonner à chaque sujet MQTT.

1. Sous l'étiquette **Abonnements**, confirmez que vous voyez **\$1** (un seul signe dièse).

Laissez la fenêtre contenant le **client de test MQTT** ouverte pendant que vous continuez [Exécuter AWS IoT le client du périphérique](#iot-dc-install-dc-configure-step3).

## Exécuter AWS IoT le client du périphérique
<a name="iot-dc-install-dc-configure-step3"></a>

Cette procédure exécute le client de AWS IoT périphérique afin qu'il publie un seul message MQTT que le **client de test MQTT** reçoit et affiche.

**Pour envoyer un message MQTT depuis le client du AWS IoT périphérique**

1. Assurez-vous que la fenêtre du terminal connectée à votre Raspberry Pi et la fenêtre avec le **client de test MQTT** sont visibles pendant que vous effectuez cette procédure.

1. Dans la fenêtre du terminal, entrez ces commandes pour exécuter le client de AWS IoT périphérique à l'aide du fichier de configuration créé dans[Créez le fichier de configuration](#iot-dc-install-dc-configure-step1).

   ```
   cd ~/aws-iot-device-client/build
   ./aws-iot-device-client --config-file ~/dc-configs/dc-testconn-config.json
   ```

   Dans la fenêtre du terminal, le client du AWS IoT périphérique affiche les messages d'information et les éventuelles erreurs survenant lors de son exécution.

   Si aucune erreur n'est affichée dans la fenêtre du terminal, passez en revue le **client de test MQTT**.

1. Dans le **client de test MQTT**, dans la fenêtre Abonnements, consultez le *Hello World \$1* message envoyé à la rubrique du message `test/dc/pubtopic`.

1. Si le client de l' AWS IoT appareil n'affiche aucune erreur et que vous voyez *Hello World \$1* envoyé au `test/dc/pubtopic` message dans le **client de test MQTT**, vous avez démontré une connexion réussie.

1. Dans la fenêtre du terminal, entrez **^C** (Ctrl-C) pour arrêter le AWS IoT Device Client.

Après avoir démontré que le AWS IoT Device Client fonctionne correctement sur votre Raspberry Pi et qu'il peut communiquer avec lui AWS IoT, vous pouvez passer au[Tutoriel : Démonstration de la communication des messages MQTT avec le client du AWS IoT périphérique](iot-dc-testconn.md).

# Tutoriel : Démonstration de la communication des messages MQTT avec le client du AWS IoT périphérique
<a name="iot-dc-testconn"></a>

Ce didacticiel explique comment le AWS IoT Device Client peut s'abonner à des messages MQTT et les publier, qui sont couramment utilisés dans les solutions IoT.

**Pour démarrer ce didacticiel :**
+ Faites configurer votre ordinateur hôte local et votre Raspberry Pi comme utilisés dans [la section précédente](iot-dc-install-dc.md).

  Si vous avez enregistré l'image de la carte microSD après avoir installé le client du AWS IoT périphérique, vous pouvez utiliser une carte microSD avec cette image avec votre Raspberry Pi.
+ Si vous avez déjà lancé cette démo, vérifiez si vous [Étape 2 : Nettoyage de vos démos Compte AWS après la création avec le AWS IoT Device Client](iot-dc-cleanup.md#iot-dc-cleanup-cloud) souhaitez supprimer toutes les AWS IoT ressources que vous avez créées lors des exécutions précédentes afin d'éviter les erreurs liées aux ressources dupliquées.

Ce didacticiel vous prendra environ 45 minutes.

**Lorsque vous avez terminé avec cette rubrique :**
+ Vous aurez démontré les différentes manières dont votre appareil IoT peut s'abonner à des messages MQTT AWS IoT et publier des messages MQTT vers. AWS IoT

**Matériel requis :**
+ Votre environnement de développement et de test local décrit [dans la section précédente](iot-dc-install-dc.md)
+ Le Raspberry Pi que vous avez utilisé dans [la section précédente](iot-dc-install-dc.md)
+ La carte mémoire microSD du Raspberry Pi que vous avez utilisée dans [la section précédente](iot-dc-install-dc.md)

**Topics**
+ [Préparez le Raspberry Pi pour démontrer la communication de messages MQTT](iot-dc-testconn-provision.md)
+ [Démonstration de la publication de messages avec le AWS IoT Device Client](iot-dc-testconn-publish.md)
+ [Démontrer l'abonnement aux messages avec le AWS IoT Device Client](iot-dc-testconn-subscribe.md)

# Préparez le Raspberry Pi pour démontrer la communication de messages MQTT
<a name="iot-dc-testconn-provision"></a>

Cette procédure crée les ressources dans AWS IoT et dans le Raspberry Pi pour démontrer la communication de messages MQTT à l'aide du AWS IoT Device Client.

**Topics**
+ [Créez les fichiers de certificat pour démontrer la communication MQTT](#iot-dc-testconn-provision-certs)
+ [Provisionnez votre appareil pour démontrer la communication MQTT](#iot-dc-testconn-provision-aws)
+ [Configurer le fichier de configuration du client du AWS IoT périphérique et le client de test MQTT pour démontrer la communication MQTT](#iot-dc-testconn-provision-dc-config)

## Créez les fichiers de certificat pour démontrer la communication MQTT
<a name="iot-dc-testconn-provision-certs"></a>

Cette procédure crée les fichiers de certificat de l'appareil pour cette démonstration.

**Pour créer et télécharger les fichiers de certificat d'appareil pour votre Raspberry Pi**



1. Dans la fenêtre du terminal de votre ordinateur hôte local, entrez ces commandes pour créer les fichiers de certificat de périphérique pour votre appareil.

   ```
   mkdir ~/certs/pubsub
   aws iot create-keys-and-certificate \
   --set-as-active \
   --certificate-pem-outfile "~/certs/pubsub/device.pem.crt" \
   --public-key-outfile "~/certs/pubsub/public.pem.key" \
   --private-key-outfile "~/certs/pubsub/private.pem.key"
   ```

   La commande renvoie une réponse comme celle-ci. Enregistrez la valeur `certificateArn` pour une utilisation ultérieure.

   ```
   {
   "certificateArn": "arn:aws:iot:us-west-2:57EXAMPLE833:cert/76e7e4edb3e52f52334be2f387a06145b2aa4c7fcd810f3aea2d92abc227d269",
   "certificateId": "76e7e4edb3e52f5233EXAMPLE7a06145b2aa4c7fcd810f3aea2d92abc227d269",
   "certificatePem": "-----BEGIN CERTIFICATE-----\nMIIDWTCCAkGgAwIBAgI_SHORTENED_FOR_EXAMPLE_Lgn4jfgtS\n-----END CERTIFICATE-----\n",
   "keyPair": {
       "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BA_SHORTENED_FOR_EXAMPLE_ImwIDAQAB\n-----END PUBLIC KEY-----\n",
       "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQE_SHORTENED_FOR_EXAMPLE_T9RoDiukY\n-----END RSA PRIVATE KEY-----\n"
   }
   }
   ```

1. Entrez les commandes suivantes pour définir les autorisations sur le répertoire des certificats et ses fichiers.

   ```
   chmod 700 ~/certs/pubsub
   chmod 644 ~/certs/pubsub/*
   chmod 600 ~/certs/pubsub/private.pem.key
   ```

1. Exécutez cette commande pour vérifier les autorisations sur vos répertoires et fichiers de certificats.

   ```
   ls -l ~/certs/pubsub
   ```

   Le résultat de la commande doit être identique à ce que vous voyez ici, sauf que les dates et heures du fichier seront différentes.

   ```
   -rw-r--r-- 1 pi pi 1220 Oct 28 13:02 device.pem.crt
   -rw------- 1 pi pi 1675 Oct 28 13:02 private.pem.key
   -rw-r--r-- 1 pi pi  451 Oct 28 13:02 public.pem.key
   ```

1. Entrez ces commandes pour créer les répertoires des fichiers journaux.

   ```
   mkdir ~/.aws-iot-device-client
   mkdir ~/.aws-iot-device-client/log
   chmod 745 ~/.aws-iot-device-client/log
   echo " " > ~/.aws-iot-device-client/log/aws-iot-device-client.log
   echo " " > ~/.aws-iot-device-client/log/pubsub_rx_msgs.log
   chmod 600 ~/.aws-iot-device-client/log/*
   ```

## Provisionnez votre appareil pour démontrer la communication MQTT
<a name="iot-dc-testconn-provision-aws"></a>

Cette section crée les AWS IoT ressources qui approvisionnent votre Raspberry Pi AWS IoT. 

**Pour approvisionner votre appareil en AWS IoT :**

1. Dans la fenêtre du terminal de votre ordinateur hôte local, entrez la commande suivante pour obtenir l'adresse du point de terminaison des données de l'appareil pour votre Compte AWS.

   ```
   aws iot describe-endpoint --endpoint-type IoT:Data-ATS
   ```

   La valeur du point de terminaison n’a pas changé depuis l’exécution de cette commande pour le didacticiel précédent. La réexécution de la commande ici est effectuée pour faciliter la recherche et le collage de la valeur du point de terminaison des données dans le fichier de configuration utilisé dans ce didacticiel.

   La commande des étapes précédentes renvoie une réponse comme celle-ci. Enregistrez la valeur `endpointAddress` pour une utilisation ultérieure.

   ```
   {
   "endpointAddress": "a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com"
   }
   ```

1. Entrez cette commande pour créer une nouvelle ressource d' AWS IoT objets pour votre Raspberry Pi.

   ```
   aws iot create-thing --thing-name "PubSubTestThing"
   ```

   Comme une AWS IoT ressource d'objets est une représentation *virtuelle* de votre appareil dans le cloud, nous pouvons créer plusieurs ressources d'objets AWS IoT à utiliser à différentes fins. Ils peuvent tous être utilisés par le même appareil IoT physique pour représenter différents aspects de l’appareil.

   Ces didacticiels n'utiliseront qu'une seule ressource à la fois pour représenter le Raspberry Pi. Ainsi, dans ces didacticiels, ils représentent les différentes démos. Ainsi, après avoir créé les AWS IoT ressources pour une démonstration, vous pouvez revenir en arrière et répéter la démonstration en utilisant les ressources que vous avez créées spécifiquement pour chacune d'elles.

   Si votre ressource d' AWS IoT objet a été créée, la commande renvoie une réponse comme celle-ci.

   ```
   {
   "thingName": "PubSubTestThing",
   "thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/PubSubTestThing",
   "thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd"
   }
   ```

1. Dans la fenêtre du terminal :

   1. Ouvrez un éditeur de texte comme `nano`.

   1. Copiez ce document JSON et collez-le dans votre éditeur de texte ouvert.  
****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Connect"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:client/PubSubTestThing"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Publish"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topic/test/dc/pubtopic"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Subscribe"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topicfilter/test/dc/subtopic"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Receive"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topic/test/dc/subtopic"
                  ]
              }
          ]
      }
      ```

   1. Dans l'éditeur, dans chaque `Resource` section du document de politique, remplacez *us-west-2:57EXAMPLE833* par votre Région AWS caractère deux-points (:)) et votre Compte AWS numéro à 12 chiffres.

   1. Enregistrez le fichier dans votre éditeur de texte sous le nom **\$1/policies/pubsub\$1test\$1thing\$1policy.json**. 

1. Exécutez cette commande pour utiliser le document de stratégie décrit dans les étapes précédentes afin de créer une AWS IoT stratégie.

   ```
   aws iot create-policy \
   --policy-name "PubSubTestThingPolicy" \
   --policy-document "file://~/policies/pubsub_test_thing_policy.json"
   ```

   Si la politique est créée, la commande renvoie une réponse comme celle-ci.

   ```
   {
                                       "policyName": "PubSubTestThingPolicy",
                                       "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/PubSubTestThingPolicy",
                                       "policyDocument": "{\n\"Version\": \"2012-10-17\",		 	 	 \n\"Statement\": [\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Connect\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Publish\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Subscribe\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/subtopic\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Receive\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/*\"\n]\n}\n]\n}\n",
                                       "policyVersionId": "1"
                                       }
   ```

1. Exécutez cette commande pour associer la politique au certificat de l'appareil. Remplacez `certificateArn` par la valeur `certificateArn` que vous avez enregistrée précédemment dans cette section.

   ```
   aws iot attach-policy \
   --policy-name "PubSubTestThingPolicy" \
   --target "certificateArn"
   ```

   Si elle aboutit, cette commande ne renvoie rien.

1. Exécutez cette commande pour associer le certificat de l'appareil à la ressource AWS IoT d'objet. Remplacez `certificateArn` par la valeur `certificateArn` que vous avez enregistrée précédemment dans cette section.

   ```
   aws iot attach-thing-principal \
   --thing-name "PubSubTestThing" \
   --principal "certificateArn"
   ```

   Si elle aboutit, cette commande ne renvoie rien.

Une fois que vous avez correctement configuré votre appareil AWS IoT, vous êtes prêt à continuer[Configurer le fichier de configuration du client du AWS IoT périphérique et le client de test MQTT pour démontrer la communication MQTT](#iot-dc-testconn-provision-dc-config).

## Configurer le fichier de configuration du client du AWS IoT périphérique et le client de test MQTT pour démontrer la communication MQTT
<a name="iot-dc-testconn-provision-dc-config"></a>

Cette procédure crée un fichier de configuration pour tester le client du AWS IoT périphérique.

**Pour créer le fichier de configuration pour tester le client du AWS IoT périphérique**

1. Dans la fenêtre du terminal sur votre ordinateur hôte local connecté à votre Raspberry Pi :

   1. Ouvrez un éditeur de texte comme `nano`.

   1. Copiez ce document JSON et collez-le dans votre éditeur de texte ouvert.

      ```
      {
        "endpoint": "a3qEXAMPLEaffp-ats.iot.us-west-2.amazonaws.com",
        "cert": "~/certs/pubsub/device.pem.crt",
        "key": "~/certs/pubsub/private.pem.key",
        "root-ca": "~/certs/AmazonRootCA1.pem",
        "thing-name": "PubSubTestThing",
        "logging": {
          "enable-sdk-logging": true,
          "level": "DEBUG",
          "type": "STDOUT",
          "file": ""
        },
        "jobs": {
          "enabled": false,
          "handler-directory": ""
        },
        "tunneling": {
          "enabled": false
        },
        "device-defender": {
          "enabled": false,
          "interval": 300
        },
        "fleet-provisioning": {
          "enabled": false,
          "template-name": "",
          "template-parameters": "",
          "csr-file": "",
          "device-key": ""
        },
        "samples": {
          "pub-sub": {
            "enabled": true,
            "publish-topic": "test/dc/pubtopic",
            "publish-file": "",
            "subscribe-topic": "test/dc/subtopic",
            "subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log"
          }
        },
        "config-shadow": {
          "enabled": false
        },
        "sample-shadow": {
          "enabled": false,
          "shadow-name": "",
          "shadow-input-file": "",
          "shadow-output-file": ""
        }
      }
      ```

   1. Remplacez la *endpoint* valeur par le point de terminaison de données de l'appareil dans Compte AWS lequel vous l'avez trouvé[Approvisionnez votre appareil en AWS IoT Core](iot-dc-install-provision.md#iot-dc-install-dc-provision).

   1. Enregistrez le fichier dans votre éditeur de texte sous le nom **\$1/dc-configs/dc-pubsub-config.json**.

   1. Exécutez cette commande pour définir les autorisations sur le nouveau fichier de configuration.

      ```
      chmod 644 ~/dc-configs/dc-pubsub-config.json
      ```

1. Pour préparer le **client de test MQTT** à s'abonner à tous les messages MQTT :

   1. Sur votre ordinateur hôte local, dans la [AWS IoT console](https://console.aws.amazon.com//iot/home#/test), choisissez le **client de test MQTT**.

   1. Dans l'onglet **S'abonner à une rubrique**, dans le **filtre de rubrique**, entrez **\$1** (un seul signe dièse), puis choisissez **S'abonner**.

   1. Sous l'étiquette **Abonnements**, confirmez que vous voyez **\$1** (un seul signe dièse).

   Laissez la fenêtre avec le **client de test MQTT** ouverte pendant que vous poursuivez ce didacticiel.

Après avoir enregistré le fichier et configuré le **client de test MQTT**, vous êtes prêt à continuer [Démonstration de la publication de messages avec le AWS IoT Device Client](iot-dc-testconn-publish.md).

# Démonstration de la publication de messages avec le AWS IoT Device Client
<a name="iot-dc-testconn-publish"></a>

Les procédures décrites dans cette section montrent comment le client du AWS IoT périphérique peut envoyer des messages MQTT par défaut et personnalisés.

Les déclarations de politique que vous avez créées à l'étape précédente pour ces exercices autorisent le Raspberry Pi à effectuer les actions suivantes :
+ 

**`iot:Connect`**  
Permet au client nommé`PubSubTestThing`, votre Raspberry Pi exécutant le AWS IoT Device Client, de se connecter.

  ```
      {
        "Effect": "Allow",
        "Action": [
          "iot:Connect"
        ],
        "Resource": [
          "arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing"
        ]
      }
  ```
+ 

**`iot:Publish`**  
Permet au Raspberry Pi de publier des messages dont la rubrique MQTT est `test/dc/pubtopic`.

  ```
      {
        "Effect": "Allow",
        "Action": [
          "iot:Publish"
        ],
        "Resource": [
          "arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic"
        ]
      }
  ```

  L'action `iot:Publish` donne l'autorisation de publier dans les rubriques MQTT répertoriées dans le tableau de ressources. Le *contenu* de ces messages n'est pas contrôlé par la déclaration de politique.

## Publiez le message par défaut à l'aide du AWS IoT Device Client
<a name="iot-dc-testconn-publish-default"></a>

Cette procédure exécute le client de AWS IoT périphérique afin qu'il publie un seul message MQTT par défaut que le **client de test MQTT** reçoit et affiche.

**Pour envoyer le message MQTT par défaut depuis le client du AWS IoT périphérique**

1. Assurez-vous que la fenêtre du terminal de votre ordinateur hôte local connecté à votre Raspberry Pi et la fenêtre avec le **client de test MQTT** sont visibles pendant que vous effectuez cette procédure.

1. Dans la fenêtre du terminal, entrez ces commandes pour exécuter le client de AWS IoT périphérique à l'aide du fichier de configuration créé dans[Créez le fichier de configuration](iot-dc-install-configure.md#iot-dc-install-dc-configure-step1).

   ```
   cd ~/aws-iot-device-client/build
   ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-config.json
   ```

   Dans la fenêtre du terminal, le client du AWS IoT périphérique affiche les messages d'information et les éventuelles erreurs survenant lors de son exécution.

   Si aucune erreur n'est affichée dans la fenêtre du terminal, passez en revue le **client de test MQTT**.

1. Dans le **client de test MQTT**, dans la fenêtre **Subscriptions**(Abonnements), consultez le *Hello World \$1* message envoyé à la rubrique `test/dc/pubtopic`.

1. Si le client de l' AWS IoT appareil n'affiche aucune erreur et que vous voyez *Hello World \$1* envoyé au `test/dc/pubtopic` message dans le **client de test MQTT**, vous avez démontré une connexion réussie.

1. Dans la fenêtre du terminal, entrez **^C** (Ctrl-C) pour arrêter le AWS IoT Device Client.

Après avoir démontré que le AWS IoT Device Client a publié le message MQTT par défaut, vous pouvez passer au[Publier un message personnalisé à l'aide du AWS IoT Device Client](#iot-dc-testconn-publish-custom).

## Publier un message personnalisé à l'aide du AWS IoT Device Client
<a name="iot-dc-testconn-publish-custom"></a>

Les procédures décrites dans cette section créent un message MQTT personnalisé, puis exécutent le client de périphérique AWS IoT afin qu'il publie le message MQTT personnalisé une fois pour que le **client de test MQTT** le reçoive et l'affiche.

### Créez un message MQTT personnalisé pour le client du AWS IoT périphérique
<a name="iot-dc-testconn-publish-custom-create"></a>

Effectuez ces étapes dans la fenêtre du terminal sur l'ordinateur hôte local connecté à votre Raspberry Pi.

**Pour créer un message personnalisé à publier par le AWS IoT Device Client**

1. Dans la fenêtre du terminal, ouvrez un éditeur de texte comme `nano`.

1. Dans l'éditeur de texte, copiez et collez le document JSON suivant. Il s'agira de la charge utile du message MQTT que le client du AWS IoT périphérique publiera.

   ```
   {
     "temperature": 28,
     "humidity": 80,
     "barometer": 1013,
     "wind": {
       "velocity": 22,
       "bearing": 255
     }
   }
   ```

1. Enregistrement du contenu de l'éditeur de texte avec **\$1/messages/sample-ws-message.json**. 

1. Saisissez la commande suivante pour définir les autorisations du fichier de messages que vous venez de créer.

   ```
   chmod 600 ~/messages/*
   ```

**Pour créer un fichier de configuration que le client du AWS IoT périphérique utilisera pour envoyer le message personnalisé**

1. Dans la fenêtre du terminal, dans un éditeur de texte tel que`nano`, ouvrez le fichier de configuration AWS IoT Device Client existant :**\$1/dc-configs/dc-pubsub-config.json**. 

1. Modifiez l'objet `samples` pour qu'il ressemble à ceci. Aucune autre partie de ce fichier n'a besoin d'être modifiée.

   ```
     "samples": {
       "pub-sub": {
         "enabled": true,
         "publish-topic": "test/dc/pubtopic",
         "publish-file": "~/messages/sample-ws-message.json",
         "subscribe-topic": "test/dc/subtopic",
         "subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log"
   ```

1. Enregistrement du contenu de l'éditeur de texte avec **\$1/dc-configs/dc-pubsub-custom-config.json**. 

1. Exécutez cette commande pour définir les autorisations sur le nouveau fichier de configuration.

   ```
   chmod 644 ~/dc-configs/dc-pubsub-custom-config.json
   ```

### Publiez le message MQTT personnalisé à l'aide du AWS IoT Device Client
<a name="iot-dc-testconn-publish-custom-publish"></a>

Cette modification n'affecte que le *contenu* de la charge utile des messages MQTT, de sorte que la politique actuelle continuera de fonctionner. Toutefois, si le *sujet MQTT* (tel que défini par la valeur `publish-topic` dans`~/dc-configs/dc-pubsub-custom-config.json`) était modifié, la déclaration de politique `iot::Publish` devrait également être modifiée pour permettre au Raspberry Pi de publier sur le nouveau sujet MQTT.

**Pour envoyer le message MQTT depuis le client du AWS IoT périphérique**

1. Assurez-vous que la fenêtre du terminal et la fenêtre avec le **client de test MQTT** sont visibles pendant que vous effectuez cette procédure. Assurez-vous également que votre **client de test MQTT** est toujours abonné au filtre **\$1 topic.** Si ce n'est pas le cas, abonnez-vous à nouveau au filtre de rubrique **\$1**.

1. Dans la fenêtre du terminal, entrez ces commandes pour exécuter AWS IoT Device Client à l'aide du fichier de configuration créé dans [Créez le fichier de configuration](iot-dc-install-configure.md#iot-dc-install-dc-configure-step1).

   ```
   cd ~/aws-iot-device-client/build
   ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-custom-config.json
   ```

   Dans la fenêtre du terminal, le client du AWS IoT périphérique affiche les messages d'information et les éventuelles erreurs survenant lors de son exécution.

   Si aucune erreur n'est affichée dans la fenêtre du terminal, passez en revue le client de test MQTT.

1. Dans le **client de test MQTT**, dans la fenêtre **Abonnements**, consultez la charge utile du message personnalisé envoyé à la rubrique du message `test/dc/pubtopic`.

1. Si le AWS IoT Device Client n'affiche aucune erreur et que vous voyez la charge utile du message personnalisé que vous avez publié sur le `test/dc/pubtopic` message dans le **client de test MQTT**, cela signifie que vous avez publié un message personnalisé avec succès.

1. Dans la fenêtre du terminal, entrez **^C** (Ctrl-C) pour arrêter le AWS IoT Device Client.

Après avoir démontré que le AWS IoT Device Client a publié une charge utile de messages personnalisée, vous pouvez continuer[Démontrer l'abonnement aux messages avec le AWS IoT Device Client](iot-dc-testconn-subscribe.md).

# Démontrer l'abonnement aux messages avec le AWS IoT Device Client
<a name="iot-dc-testconn-subscribe"></a>

Dans cette section, vous allez présenter deux types d'abonnements aux messages :
+ Abonnement thématique unique
+ Abonnement à un sujet générique

Ces déclarations de politique dans la politique créée pour ces exercices autorisent le Raspberry Pi à effectuer ces actions :
+ 

**`iot:Receive`**  
Permet au AWS IoT Device Client de recevoir des sujets MQTT qui correspondent à ceux nommés dans l'`Resource`objet.

  ```
      {
        "Effect": "Allow",
        "Action": [
          "iot:Receive"
        ],
        "Resource": [
          "arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/subtopic"
        ]
      }
  ```
+ 

**`iot:Subscribe`**  
Permet au AWS IoT Device Client de s'abonner aux filtres de sujets MQTT qui correspondent à ceux nommés dans l'`Resource`objet.

  ```
      {
        "Effect": "Allow",
        "Action": [
          "iot:Subscribe"
        ],
        "Resource": [
          "arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/subtopic"
        ]
      }
  ```

## Abonnez-vous à un seul sujet de message MQTT
<a name="iot-dc-testconn-subscribe-simple-topic"></a>

Cette procédure montre comment le client du AWS IoT périphérique peut s'abonner aux messages MQTT et les enregistrer.

Dans la fenêtre du terminal de votre ordinateur hôte local connecté à votre Raspberry Pi, listez le contenu du fichier **\$1/dc-configs/dc-pubsub-custom-config.json** ou ouvrez-le dans un éditeur de texte pour en vérifier le contenu. Localisez l'objet `samples`, qui devrait ressembler à ceci.

```
  "samples": {
    "pub-sub": {
      "enabled": true,
      "publish-topic": "test/dc/pubtopic",
      "publish-file": "~/messages/sample-ws-message.json",
      "subscribe-topic": "test/dc/subtopic",
      "subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log"
```

Notez que la valeur `subscribe-topic` est la rubrique MQTT auquel le AWS IoT Device Client s'abonnera lors de son exécution. Le client du AWS IoT périphérique écrit les charges utiles des messages qu'il reçoit dans le cadre de cet abonnement dans le fichier nommé dans la `subscribe-file` valeur.

**Pour s'abonner à un sujet de message MQTT depuis le AWS IoT Device Client**

1. Assurez-vous que la fenêtre du terminal et la fenêtre avec le client de test MQTT sont visibles pendant que vous effectuez cette procédure. Assurez-vous également que votre **client de test MQTT** est toujours abonné au filtre **\$1 topic.** Si ce n'est pas le cas, abonnez-vous à nouveau au filtre de rubrique **\$1**.

1. Dans la fenêtre du terminal, entrez ces commandes pour exécuter le client de AWS IoT périphérique à l'aide du fichier de configuration créé dans[Créez le fichier de configuration](iot-dc-install-configure.md#iot-dc-install-dc-configure-step1).

   ```
   cd ~/aws-iot-device-client/build
   ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-custom-config.json
   ```

   Dans la fenêtre du terminal, le client du AWS IoT périphérique affiche les messages d'information et les éventuelles erreurs survenant lors de son exécution.

   Si aucune erreur ne s'affiche dans la fenêtre du terminal, continuez dans la AWS IoT console.

1. Dans la AWS IoT console, dans le **client de test MQTT**, choisissez l'onglet **Publier dans une rubrique**.

1. Dans **Topic name (Nom de la rubrique)**, saisissez **test/dc/subtopic**.

1. Dans **Charge utile du message** , passez en revue le contenu du message.

1. Choisissez **Publish** pour publier le message MQTT.

1. Dans la fenêtre du terminal, recherchez le *message reçu* du client du AWS IoT périphérique qui ressemble à ceci.

   ```
   2021-11-10T16:02:20.890Z [DEBUG] {samples/PubSubFeature.cpp}: Message received on subscribe topic, size: 45 bytes
   ```

1. Après avoir vu le *message reçu indiquant* que le message a été reçu, entrez **^C** (Ctrl-C) pour arrêter le client du AWS IoT périphérique.

1. Entrez cette commande pour afficher la fin du fichier journal des messages et voir le message que vous avez publié à partir du **client de test MQTT**.

   ```
   tail ~/.aws-iot-device-client/log/pubsub_rx_msgs.log
   ```

En visualisant le message dans le fichier journal, vous avez démontré que le client du périphérique AWS IoT a reçu le message que vous avez publié à partir du client de test MQTT.

## Abonnez-vous à plusieurs sujets de message MQTT en utilisant des caractères génériques
<a name="iot-dc-testconn-subscribe-wild-topic"></a>

Ces procédures montrent comment le client du AWS IoT périphérique peut s'abonner à des messages MQTT et les enregistrer à l'aide de caractères génériques. Pour ce faire, vous allez :

1. Mettez à jour le filtre de rubrique utilisé par le AWS IoT Device Client pour s'abonner aux rubriques MQTT.

1. Mettez à jour la politique utilisée par l'appareil pour autoriser les nouveaux abonnements.

1. Exécutez le AWS IoT Device Client et publiez des messages depuis la console de test MQTT.

**Pour créer un fichier de configuration permettant de s'abonner à plusieurs rubriques de messages MQTT à l'aide d'un filtre MQTT générique**

1. Dans la fenêtre du terminal de votre ordinateur hôte local connecté à votre Raspberry Pi, ouvrez **\$1/dc-configs/dc-pubsub-custom-config.json** pour le modifier et localisez l'objet `samples`.

1. Dans l'éditeur de texte, localisez l'`samples`objet et mettez à jour la valeur `subscribe-topic` pour qu'elle ressemble à ceci. 

   ```
     "samples": {
       "pub-sub": {
         "enabled": true,
         "publish-topic": "test/dc/pubtopic",
         "publish-file": "~/messages/sample-ws-message.json",
         "subscribe-topic": "test/dc/#",
         "subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log"
   ```

   La nouvelle valeur `subscribe-topic` est un [filtre thématique MQTT](topics.md#topicfilters) avec un caractère générique MQTT à la fin. Ceci décrit un abonnement à tous les sujets MQTT commençant par `test/dc/`. Le client du AWS IoT périphérique écrit les charges utiles des messages qu'il reçoit dans le cadre de cet abonnement dans le fichier indiqué dans`subscribe-file`.

1. Enregistrez le fichier de configuration modifié sous **\$1/dc-configs/dc-pubsub-wild-config.json**, et quittez l'éditeur.

**Pour modifier la politique utilisée par votre Raspberry Pi afin d'autoriser l'abonnement et la réception de plusieurs rubriques de messages MQTT**

1. Dans la fenêtre du terminal de votre ordinateur hôte local connecté à votre Raspberry Pi, dans votre éditeur de texte préféré, ouvrez **\$1/policies/pubsub\$1test\$1thing\$1policy.json** pour modification, puis recherchez les `iot::Subscribe` et les déclarations de politique `iot::Receive` dans le fichier.

1. Dans la déclaration de politique `iot::Subscribe`, mettez à jour la chaîne de l'objet Resource `subtopic` à remplacer par `*`, afin qu'elle ressemble à ceci.

   ```
       {
         "Effect": "Allow",
         "Action": [
           "iot:Subscribe"
         ],
         "Resource": [
           "arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/*"
         ]
       }
   ```
**Note**  
Les [caractères génériques du filtre thématique MQTT](topics.md#topicfilters) sont le `+` (signe plus) et le `#` (signe dièse). Une demande d'abonnement avec un `#` à la fin permet de souscrire à tous les rubriques commençant par la chaîne qui précède le caractère `#` (par exemple, `test/dc/` dans ce cas).   
La valeur de la ressource indiquée dans la déclaration de politique qui autorise cet abonnement doit toutefois utiliser un `*` (astérisque) à la place du `#` (signe dièse) dans l'ARN du filtre de rubrique. Cela est dû au fait que le processeur de politiques utilise un caractère générique différent de celui utilisé par MQTT.  
Pour plus d'informations sur l'utilisation de caractères génériques pour les rubriques et de filtres de rubriques dans les politiques, consultez [Utilisation de caractères génériques dans le MQTT et les politiques AWS IoT Core](pub-sub-policy.md#pub-sub-policy-cert).

1. Dans la déclaration de politique `iot::Receive`, mettez à jour la chaîne de l'objet Resource `subtopic` à remplacer par `*`, afin qu'elle ressemble à ceci.

   ```
       {
         "Effect": "Allow",
         "Action": [
           "iot:Receive"
         ],
         "Resource": [
           "arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/*"
         ]
       }
   ```

1. Enregistrez le document de politique mis à jour et quittez l'éditeur **\$1/policies/pubsub\$1wild\$1test\$1thing\$1policy.json**.

1. Entrez cette commande pour mettre à jour la politique de ce didacticiel afin d'utiliser les nouvelles définitions de ressources.

   ```
   aws iot create-policy-version \
   --set-as-default \
   --policy-name "PubSubTestThingPolicy" \
   --policy-document "file://~/policies/pubsub_wild_test_thing_policy.json"
   ```

   Si la commande réussit, elle renvoie une réponse comme celle-ci. Notez que `policyVersionId` est maintenant `2`, ce qui indique qu'il s'agit de la deuxième version de cette politique. 

   Si vous avez correctement mis à jour la politique, vous pouvez passer à la procédure suivante.

   ```
   {
       "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/PubSubTestThingPolicy",
       "policyDocument": "{\n  \"Version\": \"2012-10-17\",		 	 	 \n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"iot:Connect\"\n      ],\n      \"Resource\": [\n        \"arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing\"\n      ]\n    },\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"iot:Publish\"\n      ],\n      \"Resource\": [\n        \"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic\"\n      ]\n    },\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"iot:Subscribe\"\n      ],\n      \"Resource\": [\n        \"arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/*\"\n      ]\n    },\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"iot:Receive\"\n      ],\n      \"Resource\": [\n        \"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/*\"\n      ]\n    }\n  ]\n}\n",
       "policyVersionId": "2",
       "isDefaultVersion": true
   }
   ```

   Si vous recevez un message d'erreur indiquant qu'il existe trop de versions de politique pour en enregistrer une nouvelle, entrez cette commande pour répertorier les versions actuelles de la politique. Consultez la liste renvoyée par cette commande pour rechercher une version de politique que vous pouvez supprimer.

   ```
   aws iot list-policy-versions --policy-name "PubSubTestThingPolicy"
   ```

   Saisissez cette commande pour supprimer une version dont vous n'avez plus besoin. Notez que vous ne pouvez pas supprimer la version de politique par défaut. La version de politique par défaut est celle dont la valeur `isDefaultVersion` est de `true`.

   ```
   aws iot delete-policy-version \
   --policy-name "PubSubTestThingPolicy" \
   --policy-version-id policyId
   ```

   Après avoir supprimé une version de politique, réessayez cette étape.

Avec le fichier de configuration et la politique mis à jour, vous êtes prêt à démontrer les abonnements génériques avec le AWS IoT Device Client.

**Pour montrer comment le client du AWS IoT périphérique s'abonne à plusieurs sujets de messages MQTT et en reçoit**

1. Dans le **client de test MQTT**, vérifiez les abonnements. Si le **client de test MQTT** est abonné au filtre de rubrique **\$1**, passez à l'étape suivante. Sinon, dans le **client de test MQTT**, dans l'onglet **S'abonner à une rubrique**, dans le **filtre de rubrique**, entrez **\$1** (un signe dièse), puis choisissez **S'abonner** pour vous y abonner.

1. Dans la fenêtre du terminal de votre ordinateur hôte local connecté à votre Raspberry Pi, entrez ces commandes pour démarrer le AWS IoT Device Client.

   ```
   cd ~/aws-iot-device-client/build
   ./aws-iot-device-client --config-file ~/dc-configs/dc-pubsub-wild-config.json
   ```

1. Tout en regardant la sortie du AWS IoT Device Client dans la fenêtre du terminal de l'ordinateur hôte local, retournez au **client de test MQTT**. Dans l'onglet **Publier dans une rubrique**, dans **Nom de rubrique**, entrez **test/dc/subtopic**, puis choisissez **Publier**. 

1. Dans la fenêtre du terminal, vérifiez que le message a bien été reçu en recherchant un message tel que :

   ```
   2021-11-10T16:34:20.101Z [DEBUG] {samples/PubSubFeature.cpp}: Message received on subscribe topic, size: 76 bytes
   ```

1. Tout en regardant la sortie du AWS IoT Device Client dans la fenêtre du terminal de l'ordinateur hôte local, retournez au **client de test MQTT**. Dans l'onglet **Publier dans une rubrique**, dans **Nom de rubrique**, entrez **test/dc/subtopic2**, puis choisissez **Publier**. 

1. Dans la fenêtre du terminal, vérifiez que le message a bien été reçu en recherchant un message tel que :

   ```
   2021-11-10T16:34:32.078Z [DEBUG] {samples/PubSubFeature.cpp}: Message received on subscribe topic, size: 77 bytes
   ```

1. Après avoir vu les messages confirmant la réception des deux messages, entrez **^C** (Ctrl-C) pour arrêter le AWS IoT Device Client.

1. Entrez cette commande pour afficher la fin du fichier journal des messages et voir le message que vous avez publié à partir du **client de test MQTT**.

   ```
   tail -n 20 ~/.aws-iot-device-client/log/pubsub_rx_msgs.log
   ```
**Note**  
Le fichier journal contient uniquement les charges utiles des messages. Les sujets des messages ne sont pas enregistrés dans le fichier journal des messages reçus.  
Vous pouvez également voir le message publié par le AWS IoT Device Client dans le journal reçu. En effet, le filtre de sujet générique inclut ce sujet de message et, parfois, la demande d'abonnement peut être traitée par l’agent de messages avant que le message publié ne soit envoyé aux abonnés.

Les entrées du fichier journal indiquent que les messages ont été reçus. Vous pouvez répéter cette procédure en utilisant d'autres noms de rubrique. Tous les messages dont le nom de rubrique commence par `test/dc/` doivent être reçus et enregistrés. Les messages dont le nom de rubrique commence par un autre texte sont ignorés.

Après avoir démontré comment le AWS IoT Device Client peut publier des messages MQTT et s'y abonner, passez à[Tutoriel : Démonstration d'actions à distance (tâches) avec le client du AWS IoT périphérique](iot-dc-runjobs.md).

# Tutoriel : Démonstration d'actions à distance (tâches) avec le client du AWS IoT périphérique
<a name="iot-dc-runjobs"></a>

Dans ces didacticiels, vous allez configurer et déployer des tâches sur votre Raspberry Pi pour montrer comment envoyer des opérations à distance à vos appareils IoT.

**Pour démarrer ce didacticiel :**
+ Configurez un Raspberry Pi sur votre ordinateur hôte local comme indiqué dans [la section précédente](iot-dc-testconn.md). 
+ Si vous n'avez pas terminé le didacticiel de la section précédente, vous pouvez essayer ce didacticiel en utilisant le Raspberry Pi avec une carte microSD contenant l'image que vous avez enregistrée après avoir installé le client du AWS IoT périphérique. [(Facultatif) Enregistrez l'image de la carte microSD](iot-dc-install-download.md#iot-dc-install-dc-save)
+ Si vous avez déjà lancé cette démo, vérifiez si vous [Étape 2 : Nettoyage de vos démos Compte AWS après la création avec le AWS IoT Device Client](iot-dc-cleanup.md#iot-dc-cleanup-cloud) souhaitez supprimer toutes les AWS IoT ressources que vous avez créées lors des exécutions précédentes afin d'éviter les erreurs liées aux ressources dupliquées.

Ce didacticiel vous prendra environ 45 minutes.

**Lorsque vous avez terminé avec cette rubrique :**
+ Vous aurez démontré les différentes manières dont votre appareil IoT peut utiliser le AWS IoT Core pour exécuter des opérations à distance gérées par AWS IoT .

**Matériel requis :**
+ Votre environnement de développement et de test local dans lequel vous avez testé [dans la section précédente](iot-dc-install-dc.md)
+ Le Raspberry Pi que vous avez testé dans [la section précédente](iot-dc-install-dc.md)
+ La carte mémoire microSD du Raspberry Pi que vous avez testée dans [la section précédente](iot-dc-install-dc.md)

**Topics**
+ [Préparez le Raspberry Pi pour exécuter des tâches](iot-dc-runjobs-prepare.md)
+ [Créez et exécutez le job AWS IoT avec AWS IoT Device Client](iot-dc-runjobs-prepare-define.md)

# Préparez le Raspberry Pi pour exécuter des tâches
<a name="iot-dc-runjobs-prepare"></a>

Les procédures décrites dans cette section décrivent comment préparer votre Raspberry Pi à exécuter des tâches à l'aide du AWS IoT Device Client.

**Note**  
Ces procédures sont spécifiques à l'appareil. Si vous souhaitez exécuter les procédures décrites dans cette section avec plusieurs appareils à la fois, chaque appareil aura besoin de sa propre politique, d'un certificat et d'un nom d'objet uniques et spécifiques à l'appareil. Pour attribuer à chaque appareil ses ressources uniques, effectuez cette procédure une fois pour chaque appareil tout en modifiant les éléments spécifiques au appareil comme décrit dans les procédures.

**Topics**
+ [Provisionnez votre Raspberry Pi pour présenter des jobs](#iot-dc-runjobs-prepare-provision)
+ [Configurer le AWS IoT Device Client pour exécuter l'agent de tâches](#iot-dc-runjobs-prepare-config)

## Provisionnez votre Raspberry Pi pour présenter des jobs
<a name="iot-dc-runjobs-prepare-provision"></a>

Les procédures décrites dans cette section approvisionnent votre Raspberry Pi en AWS IoT créant AWS IoT des ressources et des certificats d'appareil pour celui-ci. 

**Topics**
+ [Créez et téléchargez des fichiers de certificat d'appareil pour illustrer les AWS IoT tâches](#iot-dc-runjobs-prepare-cert)
+ [Créer AWS IoT des ressources pour présenter les AWS IoT emplois](#iot-dc-runjobs-prepare-iot)

### Créez et téléchargez des fichiers de certificat d'appareil pour illustrer les AWS IoT tâches
<a name="iot-dc-runjobs-prepare-cert"></a>

Cette procédure crée les fichiers de certificat de l'appareil pour cette démonstration.

Si vous préparez plusieurs appareils, cette procédure doit être exécutée sur chaque appareil.

**Pour créer et télécharger les fichiers de certificat d'appareil pour votre Raspberry Pi :**

Dans la fenêtre du terminal sur votre ordinateur hôte local connecté à votre Raspberry Pi :

1. Entrez la commande suivante pour créer les fichiers de certificat de l'appareil pour votre appareil.

   ```
   aws iot create-keys-and-certificate \
   --set-as-active \
   --certificate-pem-outfile "~/certs/jobs/device.pem.crt" \
   --public-key-outfile "~/certs/jobs/public.pem.key" \
   --private-key-outfile "~/certs/jobs/private.pem.key"
   ```

   La commande renvoie une réponse comme celle-ci. Enregistrez la valeur `certificateArn` pour une utilisation ultérieure.

   ```
   {
   "certificateArn": "arn:aws:iot:us-west-2:57EXAMPLE833:cert/76e7e4edb3e52f52334be2f387a06145b2aa4c7fcd810f3aea2d92abc227d269",
   "certificateId": "76e7e4edb3e52f5233EXAMPLE7a06145b2aa4c7fcd810f3aea2d92abc227d269",
   "certificatePem": "-----BEGIN CERTIFICATE-----\nMIIDWTCCAkGgAwIBAgI_SHORTENED_FOR_EXAMPLE_Lgn4jfgtS\n-----END CERTIFICATE-----\n",
   "keyPair": {
       "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BA_SHORTENED_FOR_EXAMPLE_ImwIDAQAB\n-----END PUBLIC KEY-----\n",
       "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQE_SHORTENED_FOR_EXAMPLE_T9RoDiukY\n-----END RSA PRIVATE KEY-----\n"
   }
   }
   ```

1. Entrez les commandes suivantes pour définir les autorisations sur le répertoire des certificats et ses fichiers.

   ```
   chmod 700 ~/certs/jobs
   chmod 644 ~/certs/jobs/*
   chmod 600 ~/certs/jobs/private.pem.key
   ```

1. Exécutez cette commande pour vérifier les autorisations sur vos répertoires et fichiers de certificats.

   ```
   ls -l ~/certs/jobs
   ```

   Le résultat de la commande doit être identique à ce que vous voyez ici, sauf que les dates et heures du fichier seront différentes.

   ```
   -rw-r--r-- 1 pi pi 1220 Oct 28 13:02 device.pem.crt
   -rw------- 1 pi pi 1675 Oct 28 13:02 private.pem.key
   -rw-r--r-- 1 pi pi  451 Oct 28 13:02 public.pem.key
   ```

Après avoir téléchargé les fichiers de certificat de l'appareil sur votre Raspberry Pi, vous êtes prêt à continuer [Provisionnez votre Raspberry Pi pour présenter des jobs](#iot-dc-runjobs-prepare-provision).

### Créer AWS IoT des ressources pour présenter les AWS IoT emplois
<a name="iot-dc-runjobs-prepare-iot"></a>

Créez les AWS IoT ressources pour cet appareil.

Si vous préparez plusieurs appareils, cette procédure doit être exécutée pour chaque appareil.



**Pour approvisionner votre appareil en AWS IoT :**

Dans la fenêtre du terminal sur votre ordinateur hôte local connecté à votre Raspberry Pi :

1. Saisissez la commande suivante pour obtenir l'adresse du point de terminaison de données de l'appareil pour votre Compte AWS.

   ```
   aws iot describe-endpoint --endpoint-type IoT:Data-ATS
   ```

   La valeur du point de terminaison n'a pas changé depuis la dernière exécution de cette commande. La réexécution de la commande ici facilite la recherche et le collage de la valeur du point de terminaison de données dans le fichier de configuration utilisé dans ce didacticiel.

   La commande **describe-endpoint** renvoie une réponse comme celle-ci. Enregistrez la valeur `endpointAddress` pour une utilisation ultérieure.

   ```
   {
   "endpointAddress": "a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com"
   }
   ```

1. *uniqueThingName*Remplacez-le par un nom unique pour votre appareil. Si vous souhaitez exécuter ce didacticiel avec plusieurs appareils, attribuez à chaque appareil son propre nom. Par exemple, **TestDevice01**, **TestDevice02**, et ainsi de suite.

   Entrez cette commande pour créer une nouvelle ressource d' AWS IoT objets pour votre Raspberry Pi.

   ```
   aws iot create-thing --thing-name "uniqueThingName"
   ```

   Comme une AWS IoT ressource d'objets est une représentation *virtuelle* de votre appareil dans le cloud, nous pouvons créer plusieurs ressources d'objets AWS IoT à utiliser à différentes fins. Ils peuvent tous être utilisés par le même appareil IoT physique pour représenter différents aspects de l’appareil.
**Note**  
Lorsque vous souhaitez sécuriser la politique pour plusieurs appareils, vous pouvez utiliser `${iot:Thing.ThingName}` à la place du nom d'objet statique `uniqueThingName`.

   Ces didacticiels n'utiliseront qu'une seule ressource à la fois par appareil. Ainsi, dans ces didacticiels, ils représentent les différentes démos. Ainsi, après avoir créé les AWS IoT ressources pour une démonstration, vous pouvez revenir en arrière et répéter les démos en utilisant les ressources que vous avez créées spécifiquement pour chacune d'elles.

   Si votre ressource d' AWS IoT objet a été créée, la commande renvoie une réponse comme celle-ci. Enregistrez la valeur `thingArn` pour une utilisation ultérieure lorsque vous créerez le job à exécuter sur cet appareil.

   ```
   {
   "thingName": "uniqueThingName",
   "thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/uniqueThingName",
   "thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd"
   }
   ```

1. Dans la fenêtre du terminal :

   1. Ouvrez un éditeur de texte comme `nano`.

   1. Copiez ce document JSON et collez-le dans votre éditeur de texte ouvert.  
****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Connect"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:client/uniqueThingName"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Publish"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topic/test/dc/pubtopic",
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/job/*",
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/jobExecution/*",
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Subscribe"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topicfilter/test/dc/subtopic",
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/jobExecution/*",
                      "arn:aws:iot:us-west-2:123456789012:topicfilter/$aws/things/uniqueThingName/jobs/*"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Receive"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topic/test/dc/subtopic",
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:DescribeJobExecution",
                      "iot:GetPendingJobExecutions",
                      "iot:StartNextPendingJobExecution",
                      "iot:UpdateJobExecution"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName"
                  ]
              }
          ]
      }
      ```

   1. Dans l'éditeur, dans la `Resource` section de chaque déclaration de politique, remplacez *us-west-2:57EXAMPLE833* par le vôtre Région AWS, le caractère deux-points (:)) et votre Compte AWS numéro à 12 chiffres.

   1. Dans l'éditeur, dans chaque déclaration de politique, remplacez-le *uniqueThingName* par le nom que vous avez donné à cette ressource.

   1. Enregistrez le fichier dans votre éditeur de texte sous le nom **\$1/policies/jobs\$1test\$1thing\$1policy.json**

      Si vous exécutez cette procédure pour plusieurs appareils, enregistrez le fichier sous ce nom sur chaque appareil.

1. *uniqueThingName*Remplacez-le par le nom de l'objet du périphérique, puis exécutez cette commande pour créer une AWS IoT politique adaptée à cet appareil.

   ```
   aws iot create-policy \
   --policy-name "JobTestPolicyForuniqueThingName" \
   --policy-document "file://~/policies/jobs_test_thing_policy.json"
   ```

   Si la politique est créée, la commande renvoie une réponse comme celle-ci.  
****  

   ```
   {
       "policyName": "JobTestPolicyForuniqueThingName",
       "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/JobTestPolicyForuniqueThingName",
       "policyDocument": "{\n\"Version\": \"2012-10-17\",\n\"Statement\": [\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Connect\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Publish\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Subscribe\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/subtopic\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Receive\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/*\"\n]\n}\n]\n}\n",
       "policyVersionId": "1"
   }
   ```

1. Remplacez-le *uniqueThingName* par le nom de l'objet du périphérique et `certificateArn` par la `certificateArn` valeur que vous avez enregistrée précédemment dans cette section pour ce périphérique, puis exécutez cette commande pour associer la politique au certificat de l'appareil. 

   ```
   aws iot attach-policy \
   --policy-name "JobTestPolicyForuniqueThingName" \
   --target "certificateArn"
   ```

   Si elle aboutit, cette commande ne renvoie rien.

1.  Remplacez *uniqueThingName* par le nom de l'objet pour le périphérique, remplacez `certificateArn` par la `certificateArn` valeur que vous avez enregistrée précédemment dans cette section, puis exécutez cette commande pour associer le certificat du périphérique à la ressource de l' AWS IoT objet.

   ```
   aws iot attach-thing-principal \
   --thing-name "uniqueThingName" \
   --principal "certificateArn"
   ```

   Si elle aboutit, cette commande ne renvoie rien.

Une fois que vous avez correctement configuré votre Raspberry Pi, vous êtes prêt à répéter cette section pour un autre Raspberry Pi lors de votre test ou, si tous les appareils ont été configurés, continuer à [Configurer le AWS IoT Device Client pour exécuter l'agent de tâches](#iot-dc-runjobs-prepare-config).

## Configurer le AWS IoT Device Client pour exécuter l'agent de tâches
<a name="iot-dc-runjobs-prepare-config"></a>

Cette procédure crée un fichier de configuration pour que le client du AWS IoT périphérique exécute l'agent de tâches :.

Remarque : si vous préparez plusieurs appareils, cette procédure doit être effectuée sur chaque appareil.

**Pour créer le fichier de configuration permettant de tester le client du AWS IoT périphérique :**

1. Dans la fenêtre du terminal sur votre ordinateur hôte local connecté à votre Raspberry Pi :

   1. Ouvrez un éditeur de texte comme `nano`.

   1. Copiez ce document JSON et collez-le dans votre éditeur de texte ouvert.

      ```
      {
        "endpoint": "a3qEXAMPLEaffp-ats.iot.us-west-2.amazonaws.com",
        "cert": "~/certs/jobs/device.pem.crt",
        "key": "~/certs/jobs/private.pem.key",
        "root-ca": "~/certs/AmazonRootCA1.pem",
        "thing-name": "uniqueThingName",
        "logging": {
          "enable-sdk-logging": true,
          "level": "DEBUG",
          "type": "STDOUT",
          "file": ""
        },
        "jobs": {
          "enabled": true,
          "handler-directory": ""
        },
        "tunneling": {
          "enabled": false
        },
        "device-defender": {
          "enabled": false,
          "interval": 300
        },
        "fleet-provisioning": {
          "enabled": false,
          "template-name": "",
          "template-parameters": "",
          "csr-file": "",
          "device-key": ""
        },
        "samples": {
          "pub-sub": {
            "enabled": false,
            "publish-topic": "",
            "publish-file": "",
            "subscribe-topic": "",
            "subscribe-file": ""
          }
        },
        "config-shadow": {
          "enabled": false
        },
        "sample-shadow": {
          "enabled": false,
          "shadow-name": "",
          "shadow-input-file": "",
          "shadow-output-file": ""
        }
      }
      ```

   1. Remplacez la *endpoint* valeur par la valeur du point de terminaison des données de l'appareil Compte AWS que vous avez trouvée dans[Approvisionnez votre appareil en AWS IoT Core](iot-dc-install-provision.md#iot-dc-install-dc-provision).

   1. *uniqueThingName*Remplacez-le par le nom de l'objet que vous avez utilisé pour cet appareil.

   1. Enregistrez le fichier dans votre éditeur de texte sous le nom **\$1/dc-configs/dc-jobs-config.json**

1. Exécutez cette commande pour définir les autorisations de fichier du nouveau fichier de configuration.

   ```
   chmod 644 ~/dc-configs/dc-jobs-config.json
   ```

Vous n'utiliserez pas le **client de test MQTT** pour cette rubrique. Alors que l'appareil échange des messages MQTT relatifs aux tâches AWS IoT, les messages de progression des tâches ne sont échangés qu'avec l'appareil exécutant la tâche. Les messages de progression des tâches étant échangés uniquement avec l'appareil exécutant la tâche, vous ne pouvez pas vous y abonner depuis un autre appareil, tel que la AWS IoT console.

Après avoir enregistré le fichier de configuration, vous êtes prêt à continuer [Créez et exécutez le job AWS IoT avec AWS IoT Device Client](iot-dc-runjobs-prepare-define.md).

# Créez et exécutez le job AWS IoT avec AWS IoT Device Client
<a name="iot-dc-runjobs-prepare-define"></a>

Les procédures décrites dans cette section créent un document de travail et une ressource de AWS IoT travail. Une fois que vous avez créé la ressource de tâche, AWS IoT envoie le document de tâche aux cibles de tâche spécifiées sur lesquelles un agent de tâches applique le document de tâche à l'appareil ou au client.

**Topics**
+ [Créez et stockez le document de travail pour la tâche IoT](#iot-dc-runjobs-prepare-define-jobdoc)
+ [Exécuter une tâche AWS IoT pour un appareil IoT](#iot-dc-runjobs-prepare-define-job)

## Créez et stockez le document de travail pour la tâche IoT
<a name="iot-dc-runjobs-prepare-define-jobdoc"></a>

Cette procédure crée un document de travail simple à inclure dans une ressource de AWS IoT travail. Ce document job affiche « Hello world \$1 » sur l'objectif du job.

**Pour créer et stocker un document job, procédez comme suit :**

1. Sélectionnez le compartiment Amazon S3 dans lequel vous allez enregistrer votre document job. Si vous n'avez pas de compartiment Amazon S3 à utiliser à cette fin, vous aurez besoin d'en créer. Pour plus d'informations sur la création de compartiments Amazon S3, consultez les rubriques [Démarrage avec Amazon S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/GetStartedWithS3.html).

1. Créer et enregistrer le document job pour cette tâche

   1. Sur votre ordinateur hôte local, ouvrez un éditeur de texte.

   1. Copiez et collez ce texte dans l'éditeur.

      ```
      {
          "operation": "echo",
          "args": ["Hello world!"]
      }
      ```

   1. Sur l'ordinateur hôte local, enregistrez le contenu de l'éditeur dans un fichier nommé **hello-world-job.json**.

   1. Vérifiez que le fichier a été correctement enregistré. Certains éditeurs de texte ajoutent automatiquement `.txt` au nom du fichier lorsqu'ils enregistrent un fichier texte. Si votre éditeur a ajouté `.txt` au nom du fichier, corrigez-le avant de continuer.

1. Remplacez le *path\$1to\$1file* par le chemin vers**hello-world-job.json**, s'il ne figure pas dans votre répertoire actuel, remplacez-le *s3\$1bucket\$1name* par le chemin du compartiment Amazon S3 vers le compartiment que vous avez sélectionné, puis exécutez cette commande pour placer votre document de travail dans le compartiment Amazon S3.

   ```
   aws s3api put-object \
   --key hello-world-job.json \
   --body path_to_file/hello-world-job.json --bucket s3_bucket_name
   ```

   L'URL du document de travail qui identifie le document de travail que vous avez stocké dans Amazon S3 est déterminée en remplaçant le *s3\$1bucket\$1name* et *AWS\$1region* dans l'URL suivante. Enregistrez l'URL résultante pour l'utiliser ultérieurement en tant que *job\$1document\$1path*

   ```
   https://s3_bucket_name.s3.AWS_Region.amazonaws.com/hello-world-job.json
   ```
**Note**  
AWS la sécurité vous empêche d'ouvrir cette URL en dehors de la vôtre Compte AWS, par exemple à l'aide d'un navigateur. L'URL est utilisée par le moteur de AWS IoT tâches, qui a accès au fichier par défaut. Dans un environnement de production, vous devez vous assurer que vos services AWS IoT sont autorisés à accéder aux documents job stockés dans Amazon S3.

Après avoir enregistré l'URL du document job, passez à [Exécuter une tâche AWS IoT pour un appareil IoT](#iot-dc-runjobs-prepare-define-job).

## Exécuter une tâche AWS IoT pour un appareil IoT
<a name="iot-dc-runjobs-prepare-define-job"></a>

Les procédures décrites dans cette section démarrent le client de AWS IoT périphérique sur votre Raspberry Pi pour exécuter l'agent de tâches sur le périphérique afin d'attendre l'exécution des tâches. Cela crée également une ressource de travail dans AWS IoT, qui enverra la tâche et s'exécutera sur votre appareil IoT.

**Note**  
Cette procédure exécute une job sur un seul appareil.

**Pour démarrer l'agent de jobs sur votre Raspberry Pi :**

1. Dans la fenêtre du terminal de votre ordinateur hôte local connecté à votre Raspberry Pi, exécutez cette commande pour démarrer le AWS IoT Device Client.

   ```
   cd ~/aws-iot-device-client/build
   ./aws-iot-device-client --config-file ~/dc-configs/dc-jobs-config.json
   ```

1. Dans la fenêtre du terminal, vérifiez que le client du AWS IoT périphérique affiche ces messages

   ```
   2021-11-15T18:45:56.708Z [INFO]  {Main.cpp}: Jobs is enabled
                         .
                         .
                         .
   2021-11-15T18:45:56.708Z [INFO]  {Main.cpp}: Client base has been notified that Jobs has started
   2021-11-15T18:45:56.708Z [INFO]  {JobsFeature.cpp}: Running Jobs!
   2021-11-15T18:45:56.708Z [DEBUG] {JobsFeature.cpp}: Attempting to subscribe to startNextPendingJobExecution accepted and rejected
   2021-11-15T18:45:56.708Z [DEBUG] {JobsFeature.cpp}: Attempting to subscribe to nextJobChanged events
   2021-11-15T18:45:56.708Z [DEBUG] {JobsFeature.cpp}: Attempting to subscribe to updateJobExecutionStatusAccepted for jobId +
   2021-11-15T18:45:56.738Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToUpdateJobExecutionAccepted with code {0}
   2021-11-15T18:45:56.739Z [DEBUG] {JobsFeature.cpp}: Attempting to subscribe to updateJobExecutionStatusRejected for jobId +
   2021-11-15T18:45:56.753Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToNextJobChanged with code {0}
   2021-11-15T18:45:56.760Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToStartNextJobRejected with code {0}
   2021-11-15T18:45:56.776Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToStartNextJobAccepted with code {0}
   2021-11-15T18:45:56.776Z [DEBUG] {JobsFeature.cpp}: Ack received for SubscribeToUpdateJobExecutionRejected with code {0}
   2021-11-15T18:45:56.777Z [DEBUG] {JobsFeature.cpp}: Publishing startNextPendingJobExecutionRequest
   2021-11-15T18:45:56.785Z [DEBUG] {JobsFeature.cpp}: Ack received for StartNextPendingJobPub with code {0}
   2021-11-15T18:45:56.785Z [INFO]  {JobsFeature.cpp}: No pending jobs are scheduled, waiting for the next incoming job
   ```

1. Dans la fenêtre du terminal, après avoir vu ce message, passez à la procédure suivante et créez la ressource job. Notez qu'il ne s'agit peut-être pas de la dernière entrée de la liste.

   ```
   2021-11-15T18:45:56.785Z [INFO]  {JobsFeature.cpp}: No pending jobs are scheduled, waiting for the next incoming job
   ```

**Pour créer une ressource AWS IoT d'emploi**

1. Sur votre ordinateur hôte local :

   1. Remplacez *job\$1document\$1url* par l'URL du document de travail provenant de[Créez et stockez le document de travail pour la tâche IoT](#iot-dc-runjobs-prepare-define-jobdoc).

   1. *thing\$1arn*Remplacez-le par l'ARN de la ressource d'objet que vous avez créée pour votre appareil, puis exécutez cette commande.

      ```
      aws iot create-job \
      --job-id hello-world-job-1 \
      --document-source "job_document_url" \
      --targets "thing_arn" \
      --target-selection SNAPSHOT
      ```

      En cas de succès, la commande renvoie un résultat comme celui-ci.

      ```
      {
        "jobArn": "arn:aws:iot:us-west-2:57EXAMPLE833:job/hello-world-job-1",
        "jobId": "hello-world-job-1"
      }
      ```

1. Dans la fenêtre du terminal, vous devriez voir une sortie du client de AWS IoT périphérique comme celle-ci.

   ```
   2021-11-15T18:02:26.688Z [INFO]  {JobsFeature.cpp}: No pending jobs are scheduled, waiting for the next incoming job
   2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Job ids differ
   2021-11-15T18:10:24.890Z [INFO]  {JobsFeature.cpp}: Executing job: hello-world-job-1
   2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Attempting to update job execution status!
   2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Not including stdout with the status details
   2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Not including stderr with the status details
   2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Assuming executable is in PATH
   2021-11-15T18:10:24.890Z [INFO]  {JobsFeature.cpp}: About to execute: echo Hello world!
   2021-11-15T18:10:24.890Z [DEBUG] {Retry.cpp}: Retryable function starting, it will retry until success
   2021-11-15T18:10:24.890Z [DEBUG] {JobsFeature.cpp}: Created EphermalPromise for ClientToken 3TEWba9Xj6 in the updateJobExecution promises map
   2021-11-15T18:10:24.890Z [DEBUG] {JobEngine.cpp}: Child process now running
   2021-11-15T18:10:24.890Z [DEBUG] {JobEngine.cpp}: Child process about to call execvp
   2021-11-15T18:10:24.890Z [DEBUG] {JobEngine.cpp}: Parent process now running, child PID is 16737
   2021-11-15T18:10:24.891Z [DEBUG] {16737}: Hello world!
   2021-11-15T18:10:24.891Z [DEBUG] {JobEngine.cpp}: JobEngine finished waiting for child process, returning 0
   2021-11-15T18:10:24.891Z [INFO]  {JobsFeature.cpp}: Job exited with status: 0
   2021-11-15T18:10:24.891Z [INFO]  {JobsFeature.cpp}: Job executed successfully!
   2021-11-15T18:10:24.891Z [DEBUG] {JobsFeature.cpp}: Attempting to update job execution status!
   2021-11-15T18:10:24.891Z [DEBUG] {JobsFeature.cpp}: Not including stdout with the status details
   2021-11-15T18:10:24.891Z [DEBUG] {JobsFeature.cpp}: Not including stderr with the status details
   2021-11-15T18:10:24.892Z [DEBUG] {Retry.cpp}: Retryable function starting, it will retry until success
   2021-11-15T18:10:24.892Z [DEBUG] {JobsFeature.cpp}: Created EphermalPromise for ClientToken GmQ0HTzWGg in the updateJobExecution promises map
   2021-11-15T18:10:24.905Z [DEBUG] {JobsFeature.cpp}: Ack received for PublishUpdateJobExecutionStatus with code {0}
   2021-11-15T18:10:24.905Z [DEBUG] {JobsFeature.cpp}: Removing ClientToken 3TEWba9Xj6 from the updateJobExecution promises map
   2021-11-15T18:10:24.905Z [DEBUG] {JobsFeature.cpp}: Success response after UpdateJobExecution for job hello-world-job-1
   2021-11-15T18:10:24.917Z [DEBUG] {JobsFeature.cpp}: Ack received for PublishUpdateJobExecutionStatus with code {0}
   2021-11-15T18:10:24.918Z [DEBUG] {JobsFeature.cpp}: Removing ClientToken GmQ0HTzWGg from the updateJobExecution promises map
   2021-11-15T18:10:24.918Z [DEBUG] {JobsFeature.cpp}: Success response after UpdateJobExecution for job hello-world-job-1
   2021-11-15T18:10:25.861Z [INFO]  {JobsFeature.cpp}: No pending jobs are scheduled, waiting for the next incoming job
   ```

1. Pendant que le AWS IoT Device Client est en cours d'exécution et attend une tâche, vous pouvez en soumettre une autre en modifiant la `job-id` valeur et en la réexécutant **create-job** depuis l'étape 1.

Lorsque vous avez terminé d'exécuter les tâches, dans la fenêtre du terminal, entrez ^C (Control-C) pour arrêter le AWS IoT Device Client.

# Tutoriel : Nettoyage après avoir exécuté les didacticiels AWS IoT Device Client
<a name="iot-dc-cleanup"></a>

Les procédures décrites dans ce didacticiel vous expliquent comment supprimer les fichiers et les ressources que vous avez créés tout en suivant les didacticiels de ce parcours d'apprentissage.

**Topics**
+ [Étape 1 : Nettoyage de vos appareils après avoir créé des démos avec le AWS IoT Device Client](#iot-dc-cleanup-devices)
+ [Étape 2 : Nettoyage de vos démos Compte AWS après la création avec le AWS IoT Device Client](#iot-dc-cleanup-cloud)

## Étape 1 : Nettoyage de vos appareils après avoir créé des démos avec le AWS IoT Device Client
<a name="iot-dc-cleanup-devices"></a>

Ce didacticiel décrit deux options pour nettoyer la carte microSD après avoir créé les démos dans le cadre de ce parcours d'apprentissage. Choisissez l'option qui fournit le niveau de sécurité dont vous avez besoin.

Notez que le nettoyage de la carte microSD de l'appareil ne supprime aucune AWS IoT ressource que vous avez créée. Pour nettoyer les AWS IoT ressources après avoir nettoyé la carte microSD de l'appareil, vous devez consulter le didacticiel sur. [Étape 2 : Nettoyage de vos démos Compte AWS après la création avec le AWS IoT Device Client](#iot-dc-cleanup-cloud)

### Option 1 : Nettoyage en réécrivant la carte microSD
<a name="iot-dc-cleanup-devices-flash"></a>

La méthode la plus simple et la plus complète pour nettoyer la carte microSD après avoir suivi les didacticiels de ce cours d'apprentissage consiste à remplacer la carte microSD par un fichier image enregistré que vous avez créé lors de la première préparation de votre appareil.

Cette procédure utilise l'ordinateur hôte local pour écrire une image de carte microSD enregistrée sur une carte microSD.

**Note**  
Si votre appareil n'utilise pas de support de stockage amovible pour son système d'exploitation, reportez-vous à la procédure correspondante.

**Pour écrire une nouvelle image sur la carte microSD**

1. Sur votre ordinateur hôte local, localisez l'image de carte microSD enregistrée que vous souhaitez écrire sur votre carte microSD. 

1. Insérez votre carte microSD dans l'ordinateur hôte local.

1. À l'aide d'un outil d'imagerie de carte SD, écrivez le fichier image sélectionné sur la carte microSD.

1. Après avoir écrit l'image du système d'exploitation Raspberry Pi sur la carte microSD, éjectez la carte microSD et retirez-la en toute sécurité de l'ordinateur hôte local.

Votre carte microSD est prête à l'emploi.

### Option 2 : Nettoyage en supprimant les répertoires des utilisateurs
<a name="iot-dc-cleanup-devices-dirs"></a>

Pour nettoyer la carte microSD après avoir terminé les didacticiels sans réécrire l'image de la carte microSD, vous pouvez supprimer les répertoires utilisateur individuellement. Cela n'est pas aussi complet que la réécriture de la carte microSD à partir d'une image enregistrée, car cela ne supprime aucun fichier système qui aurait pu être installé.

Si la suppression des répertoires d'utilisateurs est suffisamment complète pour répondre à vos besoins, vous pouvez suivre cette procédure.

**Pour supprimer les répertoires d'utilisateurs de ce parcours d'apprentissage de votre appareil**

1. Exécutez ces commandes pour supprimer les répertoires utilisateur, les sous-répertoires et tous leurs fichiers créés dans ce parcours d'apprentissage, dans la fenêtre du terminal connectée à votre appareil.
**Note**  
Une fois ces répertoires et fichiers supprimés, vous ne pourrez plus exécuter les démos sans avoir à nouveau suivi les didacticiels.

   ```
   rm -Rf ~/dc-configs
   rm -Rf ~/policies
   rm -Rf ~/messages
   rm -Rf ~/certs
   rm -Rf ~/.aws-iot-device-client
   ```

1. Exécutez ces commandes pour supprimer les répertoires et fichiers sources de l'application, dans la fenêtre du terminal connectée à votre appareil.
**Note**  
Ces commandes ne désinstallent aucun programme. Ils suppriment uniquement les fichiers source utilisés pour les compiler et les installer. Une fois que vous avez supprimé ces fichiers, le client AWS CLI et le AWS IoT périphérique risquent de ne pas fonctionner.

   ```
   rm -Rf ~/aws-cli
   rm -Rf ~/aws
   rm -Rf ~/aws-iot-device-client
   ```

## Étape 2 : Nettoyage de vos démos Compte AWS après la création avec le AWS IoT Device Client
<a name="iot-dc-cleanup-cloud"></a>

Ces procédures vous aident à identifier et à supprimer les AWS ressources que vous avez créées lors de la réalisation des didacticiels de ce parcours de formation.

### Nettoyer les AWS IoT ressources
<a name="iot-dc-cleanup-cloud-iot"></a>

Cette procédure vous aide à identifier et à supprimer les AWS IoT ressources que vous avez créées lors de la réalisation des didacticiels de ce parcours d'apprentissage.


**AWS IoT ressources créées dans le cadre de ce parcours d'apprentissage**  

| didacticiel | Ressources d'objet | Ressources de politique | 
| --- | --- | --- | 
|  [Tutoriel : Installation et configuration du client de AWS IoT périphérique](iot-dc-install-dc.md)  |  **DevCliTestThing**  | DevCliTestThingPolicy | 
|  [Tutoriel : Démonstration de la communication des messages MQTT avec le client du AWS IoT périphérique](iot-dc-testconn.md)  |  **PubSubTestThing**  | PubSubTestThingPolicy | 
|  [Tutoriel : Démonstration d'actions à distance (tâches) avec le client du AWS IoT périphérique](iot-dc-runjobs.md)  | défini par l'utilisateur (il peut y en avoir plusieurs) |  *défini par l'utilisateur* (il peut y en avoir plusieurs)  | 

**Pour supprimer les AWS IoT ressources, suivez cette procédure pour chaque objet (ressource) que vous avez créée**

1. Remplacez `thing_name` par le nom de la ressource d'objet que vous souhaitez supprimer, puis exécutez cette commande pour répertorier les certificats attachés à la ressource d'objet, à partir de l'ordinateur hôte local.

   ```
   aws iot list-thing-principals --thing-name thing_name
   ```

   Cette commande renvoie une réponse comme celle-ci qui répertorie les certificats attachés à `thing_name`. Dans la plupart des cas, il n'y aura qu'un seul certificat dans la liste.

   ```
   {
       "principals": [
           "arn:aws:iot:us-west-2:57EXAMPLE833:cert/23853eea3cf0edc7f8a69c74abeafa27b2b52823cab5b3e156295e94b26ae8ac"
       ]
   }
   ```

1. Pour chaque certificat répertorié par la commande précédente :

   1. Remplacez `certificate_ID` par l'ID du certificat de la commande précédente. L'ID du certificat est constitué des caractères alphanumériques qui suivent `cert/` l'ARN renvoyé par la commande précédente. Exécutez ensuite cette commande pour désactiver le certificat.

      ```
      aws iot update-certificate --new-status INACTIVE --certificate-id certificate_ID
      ```

      En cas de succès, cette commande ne renvoie rien.

   1. Remplacez-le `certificate_ARN` par l'ARN du certificat figurant dans la liste des certificats renvoyés précédemment, puis exécutez cette commande pour répertorier les politiques associées à ce certificat.

      ```
      aws iot list-attached-policies --target certificate_ARN
      ```

      Cette commande renvoie une réponse comme celle-ci qui répertorie les politiques attachées au certificat. Dans la plupart des cas, il n’y aura qu’une seule politique dans la liste.

      ```
      {
          "policies": [
              {
                  "policyName": "DevCliTestThingPolicy",
                  "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/DevCliTestThingPolicy"
              }
          ]
      }
      ```

   1. Pour chaque politique attachée au certificat :

      1. Remplacez `policy_name` par la valeur `policyName` de la commande précédente, remplacez `certificate_ARN` par l'ARN du certificat, puis exécutez cette commande pour détacher la politique du certificat.

         ```
         aws iot detach-policy --policy-name policy_name --target certificate_ARN
         ```

         En cas de succès, cette commande ne renvoie rien.

      1. Remplacez `policy_name` par la valeur `policyName`, puis exécutez cette commande pour voir si la politique est attachée à d'autres certificats.

         ```
         aws iot list-targets-for-policy --policy-name policy_name
         ```

         Si la commande renvoie une liste vide comme celle-ci, la politique n'est attachée à aucun certificat et vous continuez à répertorier les versions de la politique. Si des certificats sont toujours attachés à la politique, passez à l'étape **detach-thing-principal**.

         ```
         {
             "targets": []
         }
         ```

      1. Remplacez `policy_name` par la valeur `policyName`, puis exécutez cette commande pour vérifier les versions des politiques. Pour supprimer la politique, elle ne doit comporter qu'une seule version.

         ```
         aws iot list-policy-versions --policy-name policy_name
         ```

         Si la politique n'a qu'une seule version, comme dans cet exemple, vous pouvez passer à l'étape **delete-policy** et supprimer la politique maintenant.

         ```
         {
             "policyVersions": [
                 {
                     "versionId": "1",
                     "isDefaultVersion": true,
                     "createDate": "2021-11-18T01:02:46.778000+00:00"
                 }
             ]
         }
         ```

         Si la politique comporte plusieurs versions, comme dans cet exemple, les versions de stratégie dont la valeur `isDefaultVersion` est égale à `false` doivent être supprimées pour que la politique puisse être supprimée.

         ```
         {
             "policyVersions": [
                 {
                     "versionId": "2",
                     "isDefaultVersion": true,
                     "createDate": "2021-11-18T01:52:04.423000+00:00"
                 },
                 {
                     "versionId": "1",
                     "isDefaultVersion": false,
                     "createDate": "2021-11-18T01:30:18.083000+00:00"
                 }
             ]
         }
         ```

         Si vous devez supprimer une version de stratégie, remplacez `policy_name` par la valeur `policyName`, remplacez `version_ID` par la valeur `versionId` de la commande précédente, puis exécutez cette commande pour supprimer une version de stratégie.

         ```
         aws iot delete-policy-version --policy-name policy_name --policy-version-id version_ID
         ```

         En cas de succès, cette commande ne renvoie rien.

         Après avoir supprimé une version de politique, répétez cette étape jusqu'à ce que la politique ne comporte qu'une seule version.

      1. Remplacez `policy_name` par la valeur `policyName`, puis exécutez cette commande pour supprimer la politique.

         ```
         aws iot delete-policy --policy-name policy_name
         ```

   1. Remplacez `thing_name` par le nom de l'objet, remplacez `certificate_ARN` par l'ARN du certificat, puis exécutez cette commande pour détacher le certificat de la ressource de l'objet.​

      ```
      aws iot detach-thing-principal --thing-name thing_name --principal certificate_ARN
      ```

      En cas de succès, cette commande ne renvoie rien.

   1. Remplacez `certificate_ID` par l'ID du certificat de la commande précédente. L'ID du certificat est constitué des caractères alphanumériques qui suivent `cert/` l'ARN renvoyé par la commande précédente. Exécutez ensuite cette commande pour supprimer la ressource de certificat.

      ```
      aws iot delete-certificate --certificate-id certificate_ID
      ```

      En cas de succès, cette commande ne renvoie rien.

1. Remplacez `thing_name` par le nom de l'objet, puis exécutez cette commande pour supprimer l'objet.

   ```
   aws iot delete-thing --thing-name thing_name
   ```

   En cas de succès, cette commande ne renvoie rien. 

### Nettoyer les AWS ressources
<a name="iot-dc-cleanup-cloud-aws"></a>

Cette procédure vous aide à identifier et à supprimer les autres AWS ressources que vous avez créées lors de la réalisation des didacticiels de ce parcours d'apprentissage.


**Autres AWS ressources créées dans le cadre de ce parcours d'apprentissage**  

| didacticiel | Type de ressource | Nom ou ID de la ressource | 
| --- | --- | --- | 
|  [Tutoriel : Démonstration d'actions à distance (tâches) avec le client du AWS IoT périphérique](iot-dc-runjobs.md)  | Objet Amazon S3 | hello-world-job.json | 
|  [Tutoriel : Démonstration d'actions à distance (tâches) avec le client du AWS IoT périphérique](iot-dc-runjobs.md)  |  AWS IoT ressources pour l'emploi  | défini par l'utilisateur | 

**Pour supprimer les AWS ressources créées dans ce parcours de formation**

1. Pour supprimer les jobs créés dans ce parcours de formation

   1. Exécutez cette commande pour répertorier les tâches de votre Compte AWS.

      ```
      aws iot list-jobs
      ```

      La commande renvoie une liste des AWS IoT tâches qui se trouvent dans votre Compte AWS fichier et Région AWS qui ressemble à ceci.

      ```
      {
          "jobs": [
              {
                  "jobArn": "arn:aws:iot:us-west-2:57EXAMPLE833:job/hello-world-job-2",
                  "jobId": "hello-world-job-2",
                  "targetSelection": "SNAPSHOT",
                  "status": "COMPLETED",
                  "createdAt": "2021-11-16T23:40:36.825000+00:00",
                  "lastUpdatedAt": "2021-11-16T23:40:41.375000+00:00",
                  "completedAt": "2021-11-16T23:40:41.375000+00:00"
              },
              {
                  "jobArn": "arn:aws:iot:us-west-2:57EXAMPLE833:job/hello-world-job-1",
                  "jobId": "hello-world-job-1",
                  "targetSelection": "SNAPSHOT",
                  "status": "COMPLETED",
                  "createdAt": "2021-11-16T23:35:26.381000+00:00",
                  "lastUpdatedAt": "2021-11-16T23:35:29.239000+00:00",
                  "completedAt": "2021-11-16T23:35:29.239000+00:00"
              }
          ]
      }
      ```

   1. Pour chaque tâche que vous reconnaissez dans la liste comme une tâche que vous avez créée dans ce cursus de formation, `jobId` remplacez-la par la `jobId` valeur de la tâche à supprimer, puis exécutez cette commande pour supprimer une AWS IoT tâche.

      ```
      aws iot delete-job --job-id jobId
      ```

      Si la commande réussit, elle ne renvoie rien.

1. Suppression des documents job que vous avez stockés dans un compartiment Amazon S3 dans ce parcours de formation.

   1. Remplacez `bucket` par le nom du compartiment que vous avez utilisé, puis exécutez cette commande pour répertorier les objets dans le compartiment Amazon S3 que vous avez utilisé.

      ```
      aws s3api list-objects --bucket bucket
      ```

      La commande renvoie une liste des objets Amazon S3 dans le compartiment qui ressemble à ceci.

      ```
      {
          "Contents": [
              {
                  "Key": "hello-world-job.json",
                  "LastModified": "2021-11-18T03:02:12+00:00",
                  "ETag": "\"868c8bc3f56b5787964764d4b18ed5ef\"",
                  "Size": 54,
                  "StorageClass": "STANDARD",
                  "Owner": {
                      "DisplayName": "EXAMPLE",
                      "ID": "e9e3d6ec1EXAMPLEf5bfb5e6bd0a2b6ed03884d1ed392a82ad011c144736a4ee"
                  }
              },
              {
                  "Key": "iot_job_firmware_update.json",
                  "LastModified": "2021-04-13T21:57:07+00:00",
                  "ETag": "\"7c68c591949391791ecf625253658c61\"",
                  "Size": 66,
                  "StorageClass": "STANDARD",
                  "Owner": {
                      "DisplayName": "EXAMPLE",
                      "ID": "e9e3d6ec1EXAMPLEf5bfb5e6bd0a2b6ed03884d1ed392a82ad011c144736a4ee"
                  }
              },
              {
                  "Key": "order66.json",
                  "LastModified": "2021-04-13T21:57:07+00:00",
                  "ETag": "\"bca60d5380b88e1a70cc27d321caba72\"",
                  "Size": 29,
                  "StorageClass": "STANDARD",
                  "Owner": {
                      "DisplayName": "EXAMPLE",
                      "ID": "e9e3d6ec1EXAMPLEf5bfb5e6bd0a2b6ed03884d1ed392a82ad011c144736a4ee"
                  }
              }
          ]
      }
      ```

   1. Pour chaque objet que vous reconnaissez dans la liste comme un objet que vous avez créé dans ce parcours d'apprentissage, remplacez `bucket` par le nom du compartiment et `key` par la valeur clé de l'objet à supprimer, puis exécutez cette commande pour supprimer un objet Amazon S3.

      ```
       aws s3api delete-object --bucket bucket --key key
      ```

      Si la commande réussit, elle ne renvoie rien.

Après avoir supprimé toutes les AWS ressources et tous les objets que vous avez créés au cours de ce parcours d'apprentissage, vous pouvez recommencer à zéro et répéter les didacticiels.