Utilisation de AWS Lambda avec AWS IoT
AWS IoT fournit une communication sécurisée entre les périphériques connectés à Internet (tels que les capteurs) et le Cloud AWS. Vous pouvez ainsi collecter les données de télémétrie de plusieurs périphériques, les stocker et les analyser.
Vous pouvez créer des règles AWS IoT permettant à vos appareils d'interagir avec les services AWS. Le moteur de règles AWS IoT fournit un langage SQL pour sélectionner des données dans des charges utiles de messages, et les envoyer à d'autres services tels que Amazon S3, Amazon DynamoDB et AWS Lambda. Vous définissez une règle pour appeler une fonction Lambda lorsque vous souhaitez appeler un autre service AWS ou un service tiers.
Quand un message IoT entrant déclenche la règle, AWS IoT appelle votre fonction Lambda de manière asynchrone, et lui transmet les données du message IoT à la fonction.
L'exemple suivant montre une mesure de l'humidité à partir d'un capteur de serre. Les valeurs row et pos identifient l'emplacement du capteur. Cet exemple d'événement est basé sur le type de serre indiqué dans les didacticiels sur les règles AWS IoT.
Exemple AWS IoTÉvénement de message
{ "row" : "10", "pos" : "23", "moisture" : "75" }
Pour l'appel asynchrone, Lambda met le message en file d'attente et fait une nouvelle tentative si votre fonction renvoie une erreur. Configurez votre fonction avec une destination pour conserver les événements que votre fonction n'a pas pu traiter.
Vous devez accorder au service AWS IoT l'autorisation d'appeler votre fonction Lambda. Utilisez la commande add-permission
pour ajouter une instruction d'autorisation à la stratégie basée sur les ressources de votre fonction.
aws lambda add-permission --function-name
my-function
\ --statement-id iot-events --action "lambda:InvokeFunction" --principal iot.amazonaws.com
Vous devriez voir la sortie suivante:
{ "Statement": "{\"Sid\":\"iot-events\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iot.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:us-east-1:123456789012:function:my-function\"}" }
Pour plus d'informations sur l'utilisation de Lambda avec AWS IoT, consultez Création d'une règle AWS Lambda.