配合使用 AWS Lambda 和 AWS IoT Events - AWS Lambda

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配合使用 AWS Lambda 和 AWS IoT Events

AWS IoT Events 监控来自多个 IoT 传感器和应用程序的输入以识别事件模式。然后,它会在事件发生时采取适当的操作。AWS IoT Events 从多个源接收其输入作为 JSON 负载。AWS IoT Events 支持简单事件(其中,每个输入触发一个事件)和复杂事件(其中,必须发生多个输入才能触发事件)。

要使用 AWS IoT Events,请定义一个检测器模型,该模型是设备或过程的状态机模型。除了状态之外,您还可以定义模型的输入和事件。您还可以定义在事件发生时要执行的操作。在需要调用 Amazon Connect 等其他AWS服务或在企业资源规划 (ERP) 应用程序等外部应用程序中执行操作时,请使用 Lambda 函数进行操作。

当事件发生时,AWS IoT Events 会异步调用 Lambda 函数。它提供有关检测器模型和触发操作的事件的信息。以下示例消息事件基于简单AWS IoT事件 step-by-step 示例中的定义。

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

传递到 Lambda 函数的事件包括以下字段:

  • eventName – 检测器模型中此事件的名称。

  • eventTime – 事件的发生时间。

  • detector – 检测器模型的名称和版本。

  • eventTriggerDetails – 触发了事件的输入的描述。

  • actionExecutionId – 操作的唯一执行标识符。

  • state – 事件发生时检测器模型的状态。

    • stateName – 检测器模型中的状态名称。

    • timers – 在此状态下设置的任何计时器。

    • variables – 在此状态下设置的任何变量值。

您需要向 AWS IoT Events 服务授予调用 Lambda 函数的权限。使用 add-permission 命令将权限语句添加到函数的基于资源的策略。

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

您应看到以下输出:

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

有关通过 AWS IoT Events 使用 Lambda 的更多信息,请参阅将 AWS IoT Events 与其他服务结合使用