Mise à jour et configuration d'appareils IoT avec AWS Jobs : guide pratique
Amazon Web Services (AWS) figure parmi les plateformes cloud leaders pour l'Internet des objets (IoT), rivalisé seulement par Microsoft Azure et Google Cloud IoT. Les appareils intelligents se connectent à AWS via Internet, généralement en utilisant le protocole MQTT, et interagissent avec un riche ensemble de services cloud. Au-delà de la communication appareil, AWS offre un stockage de données robuste, analytique (incluant IA), contrôle d'accès, et bien d'autres capacités permettant des solutions IoT de bout en bout.
Pour la persistance de données, AWS fournit le Simple Storage Service (S3), un système de fichiers hiérarchique scalable. Chaque objet dans S3 peut être adressé avec une URL unique qui, avec les permissions appropriées, est accessible publiquement via navigateur web. Quand un objet contient une page HTML, le JavaScript embarqué peut invoquer les API AWS, permettant tableaux de bord interactifs et contrôle direct d'appareils depuis le navigateur.
Fonctions Lambda
Lambda permet d'exécuter du code sans provisionner de serveurs. Vous pouvez écrire des fonctions en Python, Java, C#, ou Node.js, les stocker dans le cloud, et les déclencher par requêtes HTTP, autres appels Lambda, ou messages MQTT depuis les appareils. Lambda agit comme middleware, traduisant les données appareil en opérations base de données, ou rendant des réponses aux interfaces utilisateur (voir Figure 1).
cliquer pour agrandir l'image
Figure 1. Architecture d'interaction des composants AWS (Source : Auriga)
AWS impose des limites à Lambda : temps d'exécution maximum par requête, usage mémoire, et taille de paquet. Si une fonction dépasse une limite, l'exécution est terminée, et les limites peuvent être configurées lors du déploiement mais ne dépassent jamais les plafonds durs fixés par AWS.
Les appareils IoT établissent typiquement une connexion TCP vers le point de terminaison AWS IoT Core. TCP garantit l'intégrité des données et la mise en tampon, assurant l'envoi des messages même sur des liaisons intermittentes. AWS construit sur TCP sa propre logique de reconnexion, donc l'appareil se reconnecte automatiquement après une panne réseau.
Comme MQTT est unidirectionnel pour les commandes, les interruptions de connectivité impactent rarement les invocations Lambda. Une Lambda peut publier une commande MQTT vers un appareil et retourner immédiatement ; toute réponse est gérée par une Lambda séparée qui souscrit au topic de l'appareil.
AWS Jobs
AWS Jobs est un service conçu pour planifier, lancer, et surveiller des tâches de longue durée sur un ou plusieurs appareils IoT. Bien que plus récent que de nombreux services AWS, il s'intègre parfaitement avec la console et les SDKs.
Les opérations côté appareil sont exposées via MQTT. Des fonctions comme GetPendingJobExecutions, StartNextPendingJobExecution, UpdateJobExecution, et DescribeJobExecution permettent à un appareil de sonder les jobs en attente, acquitter la progression, et signaler la completion.
Les opérations administratives utilisent HTTPS et sont destinées aux clients web, code Lambda, ou usage interactif. Celles-ci incluent CreateJob, DeleteJob, DescribeJob, ListJobs, et ListJobExecutionsForThing.
Chaque job est défini par un document de job JSON transmis à l'appareil cible. Le document contient généralement un nom d'opération et une ou plusieurs URLs pointant vers les paramètres du job. Ces URLs peuvent être pré-signées par un utilisateur AWS, accordant à l'appareil un accès temporaire et limité à des objets qu'il ne pourrait autrement pas récupérer. Les URLs pré-signées expirent automatiquement, renforçant la sécurité.
Un document de job peut être créé dynamiquement quand le job est défini ou stocké comme objet S3, référencé lors de la création du job.
Attributs du job
- Cible : un appareil unique ou un groupe. Si un groupe est spécifié, le job s'exécute sur tous les membres actuels.
- Type de job : les jobs Snapshot se terminent après exécution sur les appareils sélectionnés. Les jobs Continuous restent actifs et s'exécuteront automatiquement sur tout appareil ajouté au groupe plus tard.
Pendant l'exécution, un job suit une machine à états finis. Les états valides incluent QUEUED, IN_PROGRESS, FAILED, SUCCESS, CANCELED, REJECTED, et REMOVED. L'appareil met à jour l'état via UpdateJobExecution, ou un administrateur peut le changer via des appels API comme CancelJob. Typiquement, un job passe à IN_PROGRESS pendant l'exécution, puis à SUCCESS ou FAILED à la completion.
cliquer pour agrandir l'image
Figure 2. Diagramme des états pendant l'exécution AWS Jobs (Source : Auriga)
Technologie de l'Internet des objets
- Processeurs alimentant l'intégration transparente de l'IoT et l'IA
- L'impact mondial de l'IoT : Croissance économique, conservation, santé et éducation
- Appareils IoT non configurés : la menace cachée pour votre maison intelligente
- Sécuriser l'adoption IoT : stratégies cybersécurité et vie privée éprouvées pour entreprises
- L'adoption IoT en entreprise explose — pourquoi les risques sécurité grandissent
- 7 étapes essentielles pour sécuriser votre réseau IoT domestique
- Sécuriser l'avenir à 6 000 milliards $ : pourquoi les standards et régulations IoT sont cruciaux
- Atténuer les cyber-risques de l'IoT : stratégies et solutions d'assurance
- Comment l'IoT pilote l'efficacité industrielle et la résilience économique dans un monde post-COVID