

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Tutoriel : 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).