Atelier 5 : Stockage de données via Sigfox dans la base AWS DynamoDB

Posté le 22/06/2016

Dans les articles précédents nous avons appris les méthodes qui aideront à pousser nos données dans le Cloud AWS. Dans l'atelier 5, il s'agira de construire une base de données côté Cloud qui sauvegardera toutes nos données émises via le réseau Sigfox. Nous adopterons cette nouvelle chaine : API Gateway -> Lambda -> DynamoDB qui peut paraître compliquée mais elle reste facile.

Nous allons suivre la démarche Buttom-Up, donc tout d'abord commençons par DynamoDB.

Étape # 1 - Créer une nouvelle table "SigfoxStore"
Clé primaire = Hash & Range
Hash name = device (type string)
Range Name = timedate (type Number)

Étape # 2 - Capacité de lecture et d'écriture.
Nous avons choisi 5 unités de lectures, 2 unités d'écritures, ce qui revient à environ 1,46 $ par mois.

Étape # 3 - Activez les alarmes :

Étape # 4 - Créez la table :

Comme DynamoDB est une base de données NoSQL, nul besoin de se soucier des données qui sont dedans. L'étape suivante consistera à créer notre fonction Lambda qui prendra les données issues de l'API Gateway et les pousser dans DynamoDB.

Étape # 5 - Créez une nouvelle fonction Lambda.
Nom = LambdaDynamo
Runtime = Node.JS

Vous pouvez trouver le code sous ce gist.

Étape # 6 - Configuration Lambda
Handler = index.handler (ce qui est la valeur par défaut)
Rôle = Sélectionnez "Basic avec DynamoDB", cela engendrera une nouvelle fenêtre pour vous guider à créer un nouveau rôle IAM. Lorsque vous aurez terminé, vous devriez avoir un rôle nommé "lambda_dynamo".
Laissez les paramètres avancés par défaut.

Étape # 7 - Examinez et créez la fonction Lambda.

Étape # 8 - Test.
Cliquez sur le bouton "Test " et copiez le JSON suivant :

  {
   "device" : "76432",
   "temperature": "26",
   "humidity": "65"
 } 


Étape # 9 - Si tout est correct, vous aurez un "SUCCESS"
Si vous le souhaitez, vous pouvez également vérifier DynamoDB et vous devriez voir un enregistrement dans votre base de données.

Vous êtes en mesure aussi de suivre vos logs à travers le service AWS CloudWatch.

A la suite de cela, vous aurez terminé le processus d'installation de la fonction Lambda. Les données de choix à soumettre sont la température et l'humidité. Il est très facilement possible de changer cette fonction Lambda pour toute sorte de types ou de noms de données. Vous pouvez également ajouter ou supprimer le nombre de données soumis à Dynamo.

Passons maintenant à la passerelle API Gateway.

Étape # 10 - Créez une nouvelle API.

Étape # 11 - Créez une méthode GET.

Étape # 12 - Configuration du GET pour aller à Lambda.
Cliquez sur "GET" sous "/ " à gauche. Nous utilisons une fonction Lambda, si vous commencez à taper le nom, il remplira automatiquement pour vous.

Étape # 13 - Configurez le Mappage en choisissant le type : application/json et générez le corps json que vous voulez :

Étape 14 #  - Déployez votre API.
Cliquez sur "Déployez API".
Stage de déploiement : "prod"

Étape # 15 - Obtenir l'URL.
Si tout est correct, vous devriez maintenant voir "Invoke URL: https://RANDOMVALUEHERE.execute-api.us-west-2.amazonaws.com/prod". 

Vous avez presque fini !

Étape # 16 : Configuration Callback

Il suffira de copier l'URL vers le callback Sigfox afin de rediriger le process directement.

Étape # 17:

Lancez le terminal, envoyez quelques données climatiques, vous devriez être en mesure de voir vos données DynamoDB.

Félicitations, vous avez terminé ! Réfléchissons maintenant à ceci : si nous envoyons chaque jour 400 valeurs par module Sigfox, comment peut-on gérer tous ces flux de données si nous disposons de plusieurs stations Sigfox ?

Pensons à la Big Data !