Certification du cMQTT avec la passerelle AWS IoT - 7.3

MQTT (Mediation)

Version
7.3
Language
Français (France)
Product
Talend Data Fabric
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for ESB
Talend Real-Time Big Data Platform
Module
Studio Talend
Content
Création et développement > Systèmes tiers > Composants Messaging (Médiation) > Composants MQTT (Médiation)
Gouvernance de données > Systèmes tiers > Composants Messaging (Médiation) > Composants MQTT (Médiation)
Qualité et préparation de données > Systèmes tiers > Composants Messaging (Médiation) > Composants MQTT (Médiation)
Cet article explique comment utiliser les composants cMQTT et cMQConnectionFactory pour communiquer avec les topics MQTT de AWS IoT. Avec le cMQConnectionFactory, le cMQTT peut être utilisé non seulement pour se connecter à des serveurs MQTT normaux, par exemple, Apache ActiveMQ avec transport MQTT activé, mais également pour communiquer avec des topics MQTT créés sur AWS IoT à l'aide du SSL.
Environnement

Cet article s'applique à tous les produits Talend avec ESB.

Créer des ressources (Objet, Sratégie, Certificat) sur AWS IoT

Les ressources AWS IoT (Objet, Stratégie, Certificat) peuvent être créées depuis la console AWS IoT ou via des commandes dans l'invite de commande AWS. La procédure suivante vous présente comment créer des ressources à l'aide de la console AWS IoT.

Avant de créer les ressources, assurez-vous d'avoir un compte AWS ayant accès à AWS IoT. Connectez-vous à la console AWS avec ce compte et allez à la page AWS Services> AWS IoT pour créer les ressources.

Créer un objet
  1. Dans la page AWS IoT, cliquez sur Create a Resource> Create a Thing.
  2. Dans la zone Create a Thing , nommez l'objet dans le champ Name.
  3. Cliquez sur Create pour créer l'objet.

    Vous pouvez trouver le nom de l'hôte et les informations relatives au topic MQTT dans le panneau de droite, qui seront utilisés pour configurer les composants cMQTT et cMQConnectionFactory ultérieurement.

Créer une stratégie
  1. Dans la page AWS IoT, cliquez sur Create a Resource Create a Policy.
  2. Dans la zone Create a Policy :
    • nommez la stratégie dans le champ Name
    • ajoutez une instruction avec l'action iot:* et la ressource *
    • cochez la case Allow pour autoriser toute opération d'Internet des Objets sur n'importe quel objet.
  3. Cliquez sur Create pour créer la stratégie.
Créer un Certificat et joindre l'Objet et la Stratégie
  1. Dans la page AWS IoT, cliquez sur Create a Resource> Create a Certificate.
  2. Dans la zone Create a Certificate, cliquez sur 1-Click certificate create pour télécharger la clé privée (xxxx-private.pem.key) et le certificat (xxxx-certificate.pem.crt).
  3. Sélectionnez le certificat et cliquez sur Actions> Activate pour activer le certificat.
  4. Cliquez sur Actions> Attach a thing et saisissez le nom de l'objet créé pour attacher l'Objet au Certificat.
  5. Cliquez sur Actions> Attach a policy et saisissez le nom de la nouvelle Stratégie à joindre au Certificat également.
Créer un Keystore JKS avec le certificat AWS IoT et une clé privée

Avant de créer le Keystore JKS, assurez-vous d'avoir OpenSSL installé sur votre système.

Pour créer le Keystore JKS, procédez comme suit :

  1. Téléchargez le fichier PEM AWS par défaut depuis https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem et sauvegardez-le dans rootCA.pem.
  2. Exportez un fichier pkcs12 en utilisant le certificat AWS IoT, la clé privée et le CA racine en entrée à l'aide de la commande suivante :
    openssl pkcs12 -export -in e11ef15bb1-certificate.pem.crt -inkey e11ef15bb1-private.pem.key -out server.p12 -name awsiotkey

    Donnez un mot de passe au fichier pkcs12 lorsque cela vous est proposé, par exemple abcd.

  3. Convertissez le fichier pkcs12 en Keystore JKS à l'aide de la commande suivante :
    keytool -importkeystore -deststorepass password -destkeypass password -destkeystore keystore.jks -srckeystore server.p12 -srcstoretype PKCS12 -srcstorepass abcd

    Assurez-vous de fournir le même mot de passe pour -deststorepass et -destkeypass.

  4. Importez le CA racine AWS dans le Keystore JKS à l'aide de la commande suivante :
    keytool -import -trustcacerts -keystore keystore.jks -storepass importkey -alias rootCA -file rootCA.pem -noprompt
Configurer le cMQTT et le cMQConnectionFactory pour une connexion à AWS IoT via le SSL

Pour faire simple, créez une Route avec un composant cMQTT, un cMQConnectionFactory et un cLog, comme ci-dessous, pour consommer des messages depuis le topic MQTT d'AWS IoT. Pour plus d'informations concernant la création d'une Route, consultez le Guide d'utilisation du Studio Talend.

  1. Dans la vue Basic settings du composant cMQConnectionFactory :
    • Sélectionnez MQTT dans la liste MQ Server.
    • Dans le champ Host Name, saisissez le nom d'hôte du topic MQTT sur AWS IoT.
    • Dans le champ Port, saisissez le numéro du port MQTT par défaut, 8883.
    • Cochez la case Use SSL et fournissez le Keystore JKS, ainsi que le mot de passe, dans les champs correspondants.

    Si nécessaire, augmentez la valeur du champ Connection Wait In Seconds, selon la quaité de votre connexion au réseau.

  2. Dans la vue Basic settings du composant cMQTT :
    • sélectionnez le composant cMQConnectionFactory dans le champ Connection Factory.
    • Dans le champ Topic Name, saisissez le nom du topic MQTT sur AWS IoT.
  3. Conservez les paramètres par défaut du composant cLog pour monitorer les échanges de messages et exécuter la Route. Il n'y a aucun échange de messages à ce stade.
Publier un message dans le topic depuis le client MQTT de la console AWS IoT
  1. Allez dans la console AWS IoT et cliquez sur MQTT Client.
  2. Dans la zone MQTT Client Actions, sélectionnez Device Gateway connection, cliquez sur Generate client ID puis sur Connect.
  3. Cliquez sur Publish to topic . Saisissez le nom du topic MQTT dans le champ Publish topic et saisissez le payload du message, dans la zone Payload , par exemple, "Hello message".
  4. Cliquez sur Publish.

    Le message est publié dans le topic spécifié.

    Il y a d'autres moyens de publier des messages dans un topic MQTT de AWS IoT. Par exemple, vous pouvez télécharger et installer Mosquitto depuis http://mosquitto.org/ et publier un message "Hello message" à l'aide de la commande :

    mosquitto_pub --cert e11ef15bb1-certificate.pem.crt --key e11ef15bb1-private.pem.key --cafile rootCA.pem -h <YourHostName>.iot.us-east-1.amazonaws.com -p 8883 -q 1 -d -t $aws/things/MyTestThing/shadow/update -m "Hello message"

Dans le Studio, le message est reçu et affiché dans la console d'exécution de la Route :