Uso de AWS Lambda con AWS IoT Events - AWS Lambda

Uso de AWS Lambda con AWS IoT Events

AWS IoT Events monitoriza las entradas desde varios sensores y aplicaciones de IoT para reconocer patrones de evento. Luego realizar las acciones apropiadas cuando ocurren eventos. AWS IoT Events recibe sus entradas como cargas JSON de muchas fuentes. AWS IoT Events admite eventos simples (donde cada entrada desencadena un evento) y eventos complejos (donde se deben producir múltiples entradas para desencadenar el evento).

Para usar AWS IoT Events, defina un modelo de detector, que es un modelo de máquina de estado de su equipo o proceso. Además de los estados, se definen entradas y eventos para el modelo. También se definen las acciones que se deben realizar cuando se produce un evento. Utilice una función Lambda para una acción cuando desee invocar otro servicio de AWS (como Amazon Connect) o realizar acciones en una aplicación externa (como la aplicación de planificación de recursos empresariales (ERP)).

Cuando se produce el evento, AWS IoT Events invoca su función de Lambda de forma asíncrona. Proporciona información sobre el modelo del detector y el evento que desencadenó la acción. El siguiente evento de mensaje de ejemplo se basa en las definiciones del ejemplo paso a paso sencillo de AWS IoT Events.

ejemplo evento de mensaje de AWS IoT Events

{ "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": {} } } } }

El evento que se pasa a la función de Lambda incluye los siguientes campos:

  • eventName: el nombre de este evento en el modelo de detector.

  • eventTime: la hora a la que se produjo el evento.

  • detector: el nombre y la versión del modelo de detector.

  • eventTriggerDetails: una descripción de la entrada que desencadenó el evento.

  • actionExecutionId: el identificador de ejecución único de la acción.

  • state: el estado del modelo de detector cuando se produjo el evento.

    • stateName: el nombre del estado en el modelo de detector.

    • timers: cualquier temporizador que se establezca en este estado.

    • variables: cualquier valor de variable que se establece en este estado.

Debe conceder permiso para que el servicio AWS IoT Events invoque su función de Lambda. Utilice el comando add-permission para añadir una instrucción de permiso a la política basada en recursos de la función.

aws lambda add-permission --function-name my-function \ --statement-id iot-events --action "lambda:InvokeFunction" --principal iotevents.amazonaws.com

Debería ver los siguientes datos de salida:

{ "Statement": "{\"Sid\":\"iot-events\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iotevents.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:us-west-2:123456789012:function:my-function\"}" }

Para obtener más información sobre cómo utilizar Lambda con AWS IoT Events, consulte Uso de AWS IoT Events con otros servicios.