Utilisation de AWS Lambda avec AWS IoT Events
AWS IoT Events surveille les entrées de plusieurs capteurs et applications IoT pour reconnaître les modèles d'événements. Ensuite, il effectue les actions appropriées lorsque des événements se produisent. AWS IoT Events reçoit ses entrées en tant que charges utiles JSON de de nombreuses sources. AWS IoT Events prend en charge des événements simples (chaque entrée déclenche un événement) et des événements complexes (plusieurs entrées doivent se produire pour déclencher l'événement).
Pour utiliser AWS IoT Events, vous définissez un modèle de détecteur, qui est un modèle d’état-machine de votre équipement ou processus. Outre les états, vous définissez des entrées et des événements pour le modèle. Vous définissez également les actions à effectuer lorsqu'un événement se produit. Utilisez une fonction Lambda pour une action lorsque vous souhaitez appeler un autre service AWS (par exemple, Amazon Connect). Vous pouvez également effectuer des actions dans une application externe (par exemple, votre application de planification des ressources d'entreprise (ERP)).
Quand l'événement se produit, AWS IoT Events appelle votre fonction Lambda de manière asynchrone. Il fournit des informations sur le modèle du détecteur et l'événement qui a déclenché l'action. L'exemple d'événement de message suivant est basé sur les définitions de l'exemple étape par étape simple AWS IoT Events.
Exemple AWS IoT EventsÉvénement de message
{ "event":{ "eventName": "myChargedEvent", "eventTime": 1567797571647, "payload":{ "detector":{ "detectorModelName": "AWS_IoTEvents_Hello_World1567793458261", "detectorModelVersion": "4", "keyValue": "100009" }, "eventTriggerDetails":{ "triggerType": "Message", "inputName": "AWS_IoTEvents_HelloWorld_VoltageInput", "messageId": "64c75a34-068b-4a1d-ae58-c16215dc4efd" }, "actionExecutionId": "49f0f32f-1209-38a7-8a76-d6ca49dd0bc4", "state":{ "variables": {}, "stateName": "Charged", "timers": {} } } } }
L'événement qui est transmis à la fonction Lambda comprend les champs suivants :
-
eventName
– Nom de cet événement dans le modèle du détecteur. -
eventTime
– Heure à laquelle l'événement s'est produit. -
detector
– Nom et version du modèle du détecteur. -
eventTriggerDetails
– Description de l'entrée qui a déclenché l'événement. -
actionExecutionId
– Identifiant d'exécution unique de l'action. -
state
– État du modèle de détecteur lorsque l'événement s'est produit.-
stateName
– Nom de l'état dans le modèle du détecteur. -
timers
– Tous les temporisateurs définis dans cet état. -
variables
– Toutes les valeurs de variable définies dans cet état.
-
Vous devez accorder au service AWS IoT Events 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 iotevents.amazonaws.com
Vous devriez voir la sortie suivante:
{ "Statement": "{\"Sid\":\"iot-events\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iotevents.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 Events, consultez Utilisation d'AWS IoT Events avec d’autres services.