

终止支持通知：2026 年 5 月 20 日， Amazon 将终止对的支持。 Amazon IoT Events 2026 年 5 月 20 日之后，您将无法再访问 Amazon IoT Events 控制台或 Amazon IoT Events 资源。有关更多信息，请参阅[Amazon IoT Events 终止支持](https://docs.amazonaws.cn/iotevents/latest/developerguide/iotevents-end-of-support.html)。

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

# Amazon IoT Events 用于监控您的物联网设备
<a name="iotevents-how-to-use"></a>

您可以使用监控 Amazon IoT Events 您的设备或进程，并根据重大事件采取行动。为此，请按照以下基本步骤操作：

**创建输入**  
您必须通过一定的方法将设备和进程中的遥测数据导入 Amazon IoT Events。若要执行此操作，请将消息作为*输入*发送到 Amazon IoT Events。您可通过以下几种方式发送作为输入的消息：  
+ 使用该[ BatchPutMessage](https://docs.amazonaws.cn/iotevents/latest/apireference/API_iotevents-data_BatchPutMessage.html)操作。
+ 为[Amazon IoT Core 规则引擎](https://docs.amazonaws.cn/iot/latest/developerguide/iot-rule-actions.html)定义一个[`iotEvents`规则操作](https://docs.amazonaws.cn/iot/latest/developerguide/iotevents-rule-action.html)。规则操作会将您输入的消息数据转发至 Amazon IoT Events。
+ 在中 Amazon IoT Analytics，使用[CreateDataset](https://docs.amazonaws.cn/iotanalytics/latest/userguide/automate.html#aws-iot-analytics-automate-create-dataset)操作创建数据集`contentDeliveryRules`。这些规则指定了自动将数据集内容发送到哪个 Amazon IoT Events 输入。
+ 在 Amazon IoT Events 探测器模型或事件中定义 [IoteVents 动作](https://docs.amazonaws.cn/iotevents/latest/apireference/API_IotEventsAction.html)。`onInput` `onExit` `transitionEvents`对于探测器模型实例和操作启动事件信息，其将作为输入反馈至系统，名称为您指定的名称。
在设备开始以这种方式发送数据之前，您必须定义一个或多个输入。为此，请为每个输入指定一个名称，并指定输入监视传入消息数据中的哪些字段。 Amazon IoT Events 以 JSON 有效载荷的形式接收来自多个来源的输入。每项输入可单独操作，或与其他输入组合操作，以检测更复杂的事件。

**创建探测器模型**  
使用*状态*创建一个*探测器模型*（您的设备或进程的模型）。对于每种状态，您定义条件（布尔值）逻辑，该逻辑评估传入的输入以检测重要事件。当检测到事件时，它可以使用其他 Amazon 服务更改状态或启动自定义或预定义的操作。您可以定义其他事件，这些事件将在进入或退出某个状态以及满足某个条件（可选）时发起操作。  
在本教程中，您将学习在模型进入或退出特定状态时，如何发送作为操作的 Amazon SNS 消息。

**监视设备或进程**  
如果您正在监视多个设备或进程，则可以在每个输入中指定一个字段，用于识别输入来自的特定设备或进程。（请参见`CreateDetectorModel`中的 `key` 字段。） 当识别出新设备时（在`key`识别的输入字段中看到一个新值），就会创建一个探测器。（每个探测器就是一个探测器模型实例。） 然后，新的探测器继续响应来自该设备的输入，直到其探测器模型被更新或删除。  
如果您正在监视单个进程（即使多个设备或子进程正在发送输入），则无需指定唯一的标识 `key` 字段。在这种情况下，当第一次输入到达时，将创建单个探测器（实例）。

**将消息作为输入发送至您的探测器模型**  
有几种方法可以将来自设备或进程的消息作为输入发送到 Amazon IoT Events 检测器，而无需对消息进行其他格式化。在本教程中，您将使用 Amazon IoT 控制台为将消息数据转发到 Amazon IoT Events的 Amazon IoT Core 规则引擎编写[Amazon IoT Events 操作](https://docs.amazonaws.cn/iot/latest/developerguide/iot-rule-actions.html#iotevents-rule)规则。为此，您需要按名称识别输入。然后，您继续使用 Amazon IoT 控制台生成一些消息，这些消息将作为输入转发给 Amazon IoT Events。

## 您如何知道在探测器模型中需要什么状态？
<a name="how-to-use-iotevents-what-states"></a>

若要确定您的探测器模型应有的状态，首先应确定要采取何种操作。例如，如果您的汽车使用汽油，您可以在开始行程时查看燃油表，了解是否需要加油。这种情况下的操作是：告知驾驶员“去加油”。您的探测器模型需要两种状态：“汽车不需要加油”和“汽车确实需要加油”。通常，您要为每个可能的操作定义一个状态，再为不需要的操作定义一个状态。这在操作本身比较复杂的情况下也有效。例如，您可能想查找并纳入有关最近加油站或最便宜油价的信息，但是当您发送“去加油”的消息时，您会这样做。

要决定接下来要进入哪种状态，请查看输入。输入包含决定您应该处于何种状态所需的信息。要创建一个输入，请在设备或进程发送的消息中选择一个或多个有助于您决定的字段。在此示例中，您需要一个输入，告诉您当前的燃油油位（“满油百分比”）。也许汽车正在向您发送多条不同的消息，每条消息都包含多个不同的字段。若要创建此输入，您必须选择该消息以及用于报告当前油量的字段。为简化操作，您可对行程长度（“到目的地的距离”）进行硬编码；您可使用平均行程长度。您将根据输入执行一些计算（该加注百分比可转换为多少加仑？平均行程长度是否大于您的行驶里程（考虑到您拥有的加仑数和平均“每加仑英里数”）。您可以执行上述计算，并在*事件*中发送消息。

目前您已有两个状态和一个输入。您需要事件处于第一种状态，即根据输入执行计算，并决定是否转至第二种状态。此为过渡事件（`transitionEvents` 在状态的 `onInput` 事件列表中。*当*收到第一状态的*输入* 时，*事件*执行*过渡*到第二种状态，前提是满足事件的 `condition`。） 当到达第二种状态时，您会在进入该状态后立即发送消息。（您使用 `onEnter` 事件。进入第二种状态时，此事件将发送消息。无需等待其他输入。） 还有其他类型事件，但这个简单的示例就包含了所有必要内容。

其他类型的事件是 `onExit` 和 `onInput`。收到输入并满足条件后，`onInput` 事件就会执行指定行动。当操作退出其当前状态并且满足条件时，`onExit` 事件将执行指定操作。

您是否漏掉了什么？ 是的，如何回到第一种“车不需要加油”的状态？ 油箱加满后，输入显示油箱已满。在第二种状态下，您需要过渡事件回到第一种状态，该状态在收到输入时发生（在第二个状态的 `onInput:` 事件中）。如果计算结果显示您的油量足以让您前往想去的地方，应过渡回第一种状态。

这就是基础理论。部分探测器模型通过添加可反映重要输入（而不仅仅是可能的操作）的状态而变得更加复杂。例如，在追踪温度的探测器模型中，可能有三种状态：“正常”状态、“过热”状态和“潜在问题”状态。当温度升高至一定水平以上，但还没有变得过热时，就会过渡到“潜在问题”状态。如果此温度保持 15 分钟以上，就不需要发送警报。如果在此之前温度恢复正常，探测器将恢复至正常状态。为了谨慎起见，如果计时器到达十五分钟时限，探测器会过渡到过热状态并发送警报。您可以使用变量和一组更复杂的事件条件，完成同样的操作。但实际上，使用另一种状态存储计算结果通常更容易。

## 您如何知道自己是需要探测器的一个实例还是多个？
<a name="how-to-use-iotevents-instances"></a>

为决定需要的实例数量，请问自己“你想知道什么？” 假设您想知道今天的天气状况。下雨了吗（状态）？ 您需要带雨伞（行动）吗？ 您有一个报告温度的传感器、一个报告湿度的传感器，以及报告气压、风速、风向、降水量的其他传感器。但是您必须同时监视所有这些传感器，以确定天气状态（雨、雪、阴天、晴天）和要采取的适当行动（拿雨伞或涂防晒霜）。尽管传感器数量众多，但您仍需要通过探测器实例监视天气状态，并告知自己要采取的行动。

但是，如果您是所在地区的天气预报员，您可能需要多个这样的传感器阵列实例，它们位于该地区的不同位置。每个位置的人都需要了解所在位置的天气情况。在此情况下，您需要有多个探测器实例。每个位置的每个传感器报告的数据必须包含已指定为 `key` 字段的字段。该字段让 Amazon IoT Events 可以为该区域创建探测器实例，然后在它到达时，继续将这些信息路由至该探测器实例。不再担心头发淋湿或鼻子晒伤！

本质上，如果您要监视一种情况（一个进程或位置），则需要一个探测器实例。如果您要监视多种情况（位置、进程），则需要多个探测器实例。