将 AWS Lambda 与 AWS IoT Events 结合使用 - AWS Lambda
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

将 AWS Lambda 与 AWS IoT Events 结合使用

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

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

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

例 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-west-2:123456789012:function:my-function\"}" }

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