Certification du cMQTT avec la passerelle AWS IoT
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.
Cet article s'applique à tous les produits Talend avec ESB.
Créer des ressources (Objet, Sratégie, Certificat) sur AWS IoTLes 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-
Dans la page AWS IoT, cliquez sur .
- Dans la zone Create a Thing, nommez l'objet dans le champ Name.
- 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.
- Dans la page AWS IoT, cliquez sur .
- 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.
- Cliquez sur Create pour créer la stratégie.
- Dans la page AWS IoT, cliquez sur .
- 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).
- Sélectionnez le certificat et cliquez sur pour activer le certificat.
- Cliquez sur et saisissez le nom de l'objet créé pour attacher l'Objet au Certificat.
- Cliquez sur et saisissez le nom de la nouvelle Stratégie à joindre au Certificat également.
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 :
- Téléchargez le certificat ATS depuis https://docs.aws.amazon.com/fr_fr/iot/latest/developerguide/x509-client-certs.html et enregistrez-le dans rootCA.pem .
- 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.
- 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.
- 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
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 Créer une Route.
- 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.
- 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 d'hôte du topic MQTT sur AWS IoT.
- 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.
- Allez dans la console AWS IoT et cliquez sur MQTT Client.
- Dans la zone MQTT Client Actions, sélectionnez Device Gateway connection, cliquez sur Generate client ID puis sur Connect.
- 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".
- Cliquez sur Publish (Publier).
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 Talend, le message est reçu et affiché dans la console d'exécution de la Route :