Atelier 4 : Sigfox - AWS (2/4)

Posté le 20/06/2016

L'article précédent portait sur la configuration du service de notification de mails SNS et son rôle IAM associé. Nous procéderons ici à la configuration de notre objet connecté dans AWS IoT ainsi que le codage à réaliser au niveau de la fonction Lambda.

La Configuration d'AWS IOT :

Dans la console AWS IoT, il faut commencer par créer une règle en cliquant sur l'icône "Create a rule" :

 

Entrez les informations suivantes dans les champs qui définissent la règle : un nom et une description ainsi que les paramètres de l'instruction de requête. Nous veillerons à garder les choses simples pour séléctionner toute la Data venant du sujet SIGFOX/# (qui comprend datatopic) :

Dans l'action, sélectionnez "Send message as a push notification (SNS)", puis choisissez la cible que créée plus tôt: « Email-Notification », et enfin le nom de rôle crée également antérieurement : "SNS_For_AWSIoT_push". Terminez en cliquant sur le bouton "Ajouter une action".

 

Une fois que l'action a été ajoutée, la règle peut maintenant être créée en cliquant sur "Create" :

 

La règle apparaît maintenant dans la liste des ressources pour AWS IoT :

 

Maintenant, travaillons notre chemin de retour de la chaîne. Nous allons créer une fonction Lambda qui sera en mesure de traiter la charge utile JSON provenant de la passerelle API Gateway. La fonction Lambda enverra les messages MQTT à AWS IoT, mais elle doit être autorisée à le faire grâce à l'utilisation d'un rôle. Ceci est un concept similaire au rôle nécessaire pour AWS IoT afin de publier le sujet SNS. Les étapes sont similaires : dans la console, sous le service IAM, sélectionnez Rôles -> Créer un nouveau rôle. Nommez le "AWSIoTDataAccessForLambda", Cliquez sur Next Step et Sélectionnez AWS Lambda pour établir la relation de confiance.

 

Fixez la politique AWSIoTDataAccess qui permet de publier, de souscrire avec AWS IoT. Il est possible de créer une politique de marque nouvelle pour restreindre la publication si vous souhaitez avoir une application plus stricte. Cliquez sur Next Step et, après avoir examiné le rôle, cliquez sur Create a role.

Configuration de LAMBDA

Maintenant que nous avons un rôle à jouer Lambda, il est possible de créer la fonction Lambda.

Dans la console AWS, entrez dans la fonction Lambda et cliquez sur le bouton "Create a Lambda function" :

    

Passez la section de modèle en cliquant sur le bouton « Skip » en bas à droite de la page :

Entrez un nom et une description pour la fonction Lambda. Laissez le Runtime comme Node.js.

 

Entrez le code dans la section de code. Cette fonction permet l'utilisation de la classe IoTData pour être en mesure de publier des données sur AWS IoT. Nous codons dans "SIGFOX/datatopic" comme sujet MQTT. Aussi, nous ne publions que les données dont on a besoin telles que le temps, la température et l’humidité (les variables déclarées dans l'API méthode Gateway), ce qui peut être étendu en modifiant la fonction Lambda pour répondre à nos besoins. Vous pouvez trouver le code sous ce gist.

 

Ci-dessous, laissez le Handler par défaut et sélectionnez le rôle nécessaire à la fonction Lambda pour publier sur AWS IoT (IoTDataAccessForLambda que nous avons créé précédemment) :

 

 

Une fois sélectionné, cliquez sur Suivant pour voir un résumé de la fonction Lambda :

 

Vous pouvez maintenant cliquer sur le bouton "Create function" en bas à droite pour terminer.

A la fin de cet article, nous validons la création des services SNS, IoT et Lambda. Dans l'article suivant, nous détaillerons le point d'entrée vers nos services AWS.